标题：帕斯卡语言
来历
Pascal是最早出现的结构化编程语言，具有丰富的数据类型和简洁灵活的操作语句，适于描述数值和非数值的问题。
正因为上述特点，Pascal语言可以被方便地用于描述各种算法与数据结构。尤其是对于程序设计的初学者，Pascal语言有益于培养良好的程序设计风格和习惯。IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一，NOI(全国奥林匹克信息学竞赛)把Pascal语言定为唯一提倡的程序设计语言，在大学中Pascal语言也常常被用作学习数据结构与算法的教学语言。
发展
在Pascal问世以来的三十余年间，先后产生了适合于不同机型的各种各样版本。其中影响最大的莫过于Turbo Pascal系列软件。它是由美国Borland公司设计、研制的一种适用于微机的Pascal编译系统。该编译系统由1983年推出1.0版本发展到1992年推出的7.0版本，其版本不断更新，而功能更趋完善。
Turbo Pascal语言是编译型程序语言，它提供了一个集成环境的工作系统，集编辑、编译、运行、调试等多功能于一体
Pascal有5个主要的版本，分别是Unextended Pascal、Extended Pascal、Object-Oriented Extensions to Pascal、Borland Pascal和Delphi Object Pascal。其中，Unextended Pascal、Extended Pascal和Object-Oriented Extensions to Pascal是由Pascal标准委员会所创立和维护的，Unextended Pascal类似于瑞士Niklaus Wirth教授和K.Jensen于1974年联名发表的Pascal用户手册和报告，而Extended Pascal则是在其基础上进行了扩展，加入了许多新的特性，它们都属于正式的Pascal标准；Object-Oriented Extensions to Pascal是由Pascal标准委员会发表的一份技术报告，在Extended Pascal的基础上增加了一些用以支持面向对象程序设计的特性，但它属于非正式的标准。Borland Pascal和Delphi Object Pascal是由Borland公司专门为其开发的编译工具设计的Pascal语言，前者是用于DOS的Turbo Pascal系列和Windows 3.x的Turbo Pascal for Windows的传统高级语言，后者是用于Windows的Delphi和Linux的Kylix的面向对象程序设计语言，它们都不是正式的Pascal标准，具有专利性。但由于Turbo Pascal系列和Delphi功能强大并且广为流行，Borland Pascal和Delphi Object Pascal已自成为一种标准，为许多人所熟悉。
影响
高级语言发展过程中，PASCAL是一个重要的里程碑。PASCAL语言是第一个系统地体现了E.W.Dijkstra和C.A.R.Hoare定义的结构化程序设计概念的语言。1971年，瑞士联邦技术学院尼克劳斯·沃尔斯（N.Wirth）教授发明了另一种简单明晰的电脑语言，这就是以电脑先驱帕斯卡的名字命名的PASCAL语言。PASCAL语言语法严谨，层次分明，程序易写，具有很强的可读性，是第一个结构化的编程语言。它一出世就受到广泛欢迎，迅速地从欧洲传到美国。沃尔斯一生还写作了大量有关程序设计、算法和数据结构的著作，因此，他获得了1984年度“图灵奖”。
应用
在中国的信息学奥林匹克竞赛中，过去比较常用的Pascal编程工具是Turbo Pascal，目前Freepascal普及。Turbo Pascal是DOS下的一种16位编程工具，在Delphi出现之前，它是世界上最多人使用的Pascal编程工具，拥有编译速度极快的先进编译器和功能强大而又简便易用的集成开发环境（IDE），在微机程序员中广为流行，正是它的出现奠定了Pascal在DOS/Windows平台上不可动摇的根基，现在常见的版本有Turbo Pascal 5.5、Turbo Pascal 6.0和Borland Turbo Pascal with Objects 7.0。Turbo Pascal 6.0与Turbo Pascal 5.5相比，主要是IDE更为强大，而其程序设计功能改变不大，只是增加了一些新的功能，例如可以内嵌asm汇编语句等。而Borland Turbo Pascal with Objects 7.0（简称Borland Pascal 7.0）则有了新的飞跃，首先是IDE进一步加强，提供了程序浏览器，然后是程序设计功能有了很大的提升，新增了一些十分有用的标准子程序，支持比较完善的面向对象程序设计功能，并提供了DOS实模式、DOS保护模式和Windows模式三种程序编译模式，能够编写出可以使用扩充内存（XMS）的保护模式应用程序或者在Windows 3.x下运行的Windows程序，另外还提供了一个对象窗口库（OWL），使用它可以快速的开发出具有一致的视窗界面（DOS或Windows 3.x）的应用程序。Borland Pascal 7.0在1992年推出，是Turbo Pascal系列在DOS下的最后版本。
下面列出Turbo Pascal的编年史：
1983 Turbo Pascal 1.0
Turbo Pascal 2.0
Turbo-87 Pascal 提高实数运算速度并扩大值域
1985 Turbo Pascal 3.0 增加图形功能
Turbo BCD Pascal 特别适合应用于商业
1987 Turbo Pascal 4.0 提供集成开发环境(IDE)，引入单元概念
1988 Turbo Pascal 5.0 增加调试功能
1989 Turbo Pascal 5.5 支持面向对象的程序设计(OPP)
1990 Turbo Pascal 6.0 提供面向对象的应用框架和库(Turbo Vision)
1992 Turbo Pascal 7.0 面向对象的应用系统、更完善的IDE
Turbo Vision 2.0
1993 Borland Pascal 7.0 开发 Object Windows库
(For Windows) 提供对OLE多媒体应用开发的支持
1995 Delphi Visual Pascal
Turbo Pascal语言是编译型程序语言，它提供了一个集成环境的工作系统，集编辑、编译、运行、调试等多功能于一体。
现在，随着Turbo Pascal逐渐被淘汰，全国信息学奥林匹克竞赛决赛（NOI）和国际信息学奥林匹克竞赛（IOI）已经指定Free Pascal为比赛使用的Pascal编程工具。Free Pascal是由一个国际组织开发的32位Pascal编程工具，属于共享软件，可用于各种操作系统。根据编译选项的不同，它可以使用Borland Pascal兼容语法、Delphi 2 Object Pascal语法或者其它语法进行编写程序。由于它拥有32位的编译器，所以理论内存达到了4GB，而且一直在更新发展中，因此它的功能比Borland Pascal更加强大，拥有许多现代程序设计的特征，但同时也很不成熟，存在很多漏洞。Free Pascal正处于发展初期，相应的函数库十分少，对程序员的吸引力远比不上拥有VCL和CLX的Delphi和Kylix，但是它的这些不同于Turbo Pascal的特征使联赛选手们需要改进自己的算法（简单地说就是时间换空间）。
Pascal竞赛的辅导用书有很多，最经典的有《全国青少年信息学奥林匹克联赛培训教材》。
运用
Turbo Pascal系列软件作为开发系统软件与就任软件及实施科学计算和教学的有力工具，下发挥着越来越大的作用。也是国际和全国青少年信息学奥林匹克竞赛指定的语言之一。从历届信息学竞赛的情况看，它是最能出成绩和选手最欢迎的语言。以后的例子就以Turbo Pascal 7.0进行程序设计。
下面我们就以一个实例来看一看Pascal程序的结构，从中认识到Pascal语言程序的书写方式，以及其规范的标准设计方式。
例1：输入一个圆的半径，求出其圆周长。
设圆的半径为R，周长为L，我们知道公式如下:
L=2πR
它的Pascal程序如下:
program yzhch( input, output) ; {程序首部}
const {常量说明}
pi=3.14159
var {变量说明}
l,r:real;
begin {程序开始}
readln(r); {输入半径}
l:=2*pi*r; {计圆周长}
writeln('l=',l); {输出圆周长}
end. {结束程序}
从以上简单的例子可以看出，Turbo Pascal程序是由程序首部、程序说明部分和程序执行部分组成。具体如下所示：
program 程序名; {程序首部}
说明部分 {说明部分}
begin {程序开始}
语句1； {执行语句}
语句2； {执行语句}
…… {执行语句}
end. {结束程序}
上面程序由如下两部分组成:
1、程序首部
程序首部是程序的开头部分，由保留字program后，接程序名及程序参数表组成，结束时一定要有分号。程序名yzhch是用户自己定义的标识符，参数表一般是文件变量名，用于该程序与外界的数据交流。最常用的参数为input和output。Turbo Pascal程序首部中参数表可以省略。
2、程序说明部分
Pascal语言要求用户将在程序中所使用的标号、常量、类型、变量、记录、文件、以及过程和函数除了Pascal自己预先定义的标准量之外，都必须在说明部分说明后才能在程序执行部分使用。但各个内容部分是可选的，只有执行程序部分需要的时候才进行说明。
3、程序执行部分
紧接着说明部分的begin和end之间的部分为程序的执行部分。它由一系列语句组成，一条语句执行一定的功能，所有语句完成程序设计的任务。语句之间用“;”隔开，允许一行写多个语句，也允许一个语句写多行。最后一行的end后加“.”号表示结束。所跟其后的语句将无任何作用。Begin与end应配对出现，这是每一个Turbo Pascal程序都必须的。
注意：后面将学习到的语句中，也需要引用begin和end作为程序段的分隔标记，但其必须遵守语句规则。
数据类型、常量的变量
一、数据类型的概念
计算机处理数据对象是一个广义的概念。例如，125、12.76是数据，’xiang qj zhong’这一串字符也是数据。前者是数值数据，后者是字符串数据，是非数值数据。显然，为了表示这些数据，它们在内存中必须以不同方式存放。为处理这些数据，计算机对它们施加的运算也不同。为此，Turbo Pascal语言建立了数据类型的概念，对描述的数据进行分类。每一种数据类型定义了一个具有相同性质的数据集合。各种数据类型的数据具有不同的性质。程序中所用到的每一个数据，包括常量和变量都有一个和它相联系的类型。由此决定了数据所具有的值，也决定了对该数据所能进行的操作。
Turbo Pascal语言中数据具有丰富的类型，按它们的特点可以分为简单类型、构造类型、指针类型和过程类型四大类，如图下所示。
其中，标准类型用语言系统预先定义的标准标识符表示，整型用integer表示，实型用real表示，布尔型用boolean表示，字符型用char表示。
二、常量
常量是指在程序中使用的一些具体的整型数、实型数和字符串。
(1)整型数：如9、3、-5、0等。
(2)实型数：如3·1、-6.1E+20等。
(3)字符串：是用单引号括起来的一串字符，如，’book’、’96·5’、’ABC’等。
以上列举的都可以作为常量在程序中使用。为了提高程序的可读性并使程序便于修改，在程序中往往用一些标识符来代表具体的常量。
在Turbo Pascal语言中，可以给一些常量取个名字用一个标识符代表它，这就是常量定义。例如，Cost=60；Blank=’ ’。
经常量定义的标识符又称为常量标识符。
在Turbo Pascal语言中，常量定义要写在常量定义部分中。
常量定义部分的一般形式:
Const
(常量标识符1)= (常量1);
(常量标识符2)=(常量2);
(常量标识符n)=(常量n);
Const是保留字，表示开始一个常量定义部分，其后可以有若干个常量定义，这些
常量定义之间要用“；”号分隔。例如：
Const
Cost=60;
A=Cost+30;
Pi =3.14159;
Turbo Pascal语言对常量定义有如下要求:
(1)常量定义要放在程序的常量定义部分，即程序首部之后，执行部分之前。
(2)必须遵循先定义后使用的原则，即只有已经定义的常量标识符，才能在程序中
使用。
三、变量
在程序执行过程中其值可以改变的数据，称为变量。每个变量都要有一个名称，这就是变量名。变量名由用户自己定义，但必须符合标识符的规定。
在一个程序中，一个变量只能属于一种确定的数据类型。因此，程序中出现的每个变量都必须说明其数据类型，这样就规定了该变量的取值范围，也决定了对该变量所能执行的运算操作。
变量的类型，可以是标准数据类型integer、real、boolean和char，也可以是用户自定义的各种类型。
变量说明形式是：一个变量标识符或由逗号隔开的多个变量标识符在它的冒号"："后面说明其数据类型。
在Turbo Pascal程序中，变量说明要写在变量说明部分中。
变量说明部分的一般形式:
var
(变量说明1)；
(变量说明2)；
……(变量说明n)；
其中var是保留字，表示一个变量说明部分开始。一个var可以含有多个不同的变量说明，每个变量说明之间用分号隔开，有时称被分号隔开的变量说明为变量说明项。例如：
var
x，y：real；
chl：char；
t，f：boolean；
注意:不同类型的变量一般不能互相串用。
这里还应指出，变量一经说明系统就在计算机内存中为其分配一个存贮空间。在程序中使用到变量时，就在相应的内存中存入数据或取出数据，这种操作称为变量的访问。
标准数据类型
Pascal向程序设计者提供了丰富的数据类型，它们用于专门的目的，但却都是由简单的、非构造型的数据类型所构成的。本节介绍Turbo Pascal中最为基本的几种数据类型：整型、实型、布尔型和字符型。它们都是系统定义的简单数据类型，称为标准数据类型，其对应的名字称为标准标识符。
1、整型
一个整型数据用来存放整数，整型数据可以是正整数、负整数和整数零。
Turbo Pascal中的整型常数必须按规定严格书写。
Turbo Pascal支持五种预定义整型，它们是短整型(Shortint)、整型(Integer)、长整型(Longint)、字节型(Byte)和字类型(Word)，每一种类型规定了相应的整数取值范围以及所占内存字节数(一个字节为8个二进制位)。因此，用户在具体编程定义变量类型时，要根据它们的特点选用适当的类型，以达到理想的效果。当两个不同范围类型的操作数进行运算时，得到的结果属于较大范围的类型。如下表所示。
Turbo Pascal语言规定可以对整型数据进行算术运算符+、一、*、Div、Mod。
它们分别表示加、减、乘、整除和取余。这五种运算，要求参加运算的两个数都是整型数，运算结果也是整型数。前三种运算与一般的算术运算加、减、乘相同。Div整除运算，是两个整型数相除取整数部分(商的整数部分)，得到整型结果。Mod取余运算，是两个整型数相除取余数，余数的符号与被除数符号相同。例如：
3 Div 2 = 1 5 Div 7 = 0
6 Div (-4) = - 1 (-12) Div (-5) = 2
7 Mod 4 = 3 (14) Mod (-4) = 2
(-18) Mod (-6) = 0 6 Mod l7 = 6
由此可见，a Mod b，所得结果的符号与a相同，其值(绝对值)在0～∣b∣-1之间。运算符Mod与Div之间有如下关系：
a Mod b = a – (a Div b) * b (b<>0)
其中Mod运算的结果的符号与a的符号相同。
利用以上两种运算可以对正整数进行分离。例如：
n为四位数8531，可用下法分离出它的个、十、百、千位。
8531 Mod l0 = 1 (个位数)
(8531 Mod l00) Div l0 = 3 (十位数)
(8531 Mod l000) Div l00 = 5 (百位数)
8531 Mod l000 = 8 (千位数)
利用 a Mod b可以判断a能否被b整除。当a Mod b = 0时，a能被b整除。
2、实型
一个实型数据用来存放实数。实型数据可以是正实数、负实数和实数零。实型数据一般用小数或指数形式(亦称科学表示法)表示。例如：
+1993，33，3.5E+8(=3.5×105)， -0.5E-3(=-0.5×10-3，)，-20.0，，0.0等都是合法实型数。
Turbo Pascal支持一种预定义实型，它们是基本实型(Real)、单精度实型(Single)、双精度实型(Double)、扩展实型(Extended)和装配实型(Comp)。每一种类型规定了相应的实数取值范围和所占内存字节数，以及它们所能达到的精度，即有效数字位数。因此，用户在具体编程时应根据以上的参数适当选用，以达到最佳效果。如下表所示。
对于此类实型数据，若其绝对值大于上界，则产生上溢；绝对值小于下界，则产生下溢，下溢导致结果为0。Comp类型的取值范围是-263+1～238-1之间的整数，相当于十进制的-9.218～9.218。由于Comp类型的数据表示成二进制形式的数，这种类型的变量有时处理起来比较方便，特别对于数值很大的整数间的计算，这种数据类型很有用。
Turbo Pascal语言允许实型数使用下列运算符进行运算。
运算符：+、-、*、/
分别表示加、减、乘和除。其中"/"叫实数除，即使两个整型数相除，其结果也总是实型，如： 7/2=3.5 6/3=2.0
3、字符型
用标准标识符Char标明字符型。字符型数据可以是字母、符号、数字(0-9)等ASCII码的所有字符。Turbo Pascal支持扩展ASCII码，共包括256个字符。但非印刷字符是不能在标准显示上显示或打印输出。在计算机内部，字符集的元素是以该元素在字符集内的顺序位置来标记的，位置取值范围为0~255，我们称这些整数为字符在字符集内的序数值或序号。每个字符型数据在内存中占一个字节。将字符用单引号括起来，即成字符常数，如，’X’，’7’，’?’。字符常数可按字符的序数值确定大小关系，也就是说它们的大小由它们所对应的ASCII码值决定，如：’Y’，’Z’，’A’<’a’。
由于采用ASCII码，字符依ASCII码序号排列。这样，字符与ASCII码序号有一一对应的映射关系。
4、布尔型
一个布尔型数据用来存放逻辑值，或称布尔值。Turbo Pascal支持预定义布尔型，以标准标识符Boolean表示。Boolean一词，系根据19世纪英国数学家George boole (1815-1864)的名字而得，George boole为现代布尔代数之父。布尔型数据的值只有两个：True(逻辑真)和False(逻辑假)。布尔型是顺序类型，规定False<TRUE，FALSE的序号为0，TRUE的序号为1。
逻辑运算的结果只有两个：True（真）和False（假）。Turbo Pascal提供了六种关系运算符和四种逻辑运算符：
=(等于)、<（小于）、<=（小于等于）、>（大于）、>=（大于等于）、<>（不等于）
NOT（非）、AND（与）、OR（或）、XOR（异或）
运算关系
函 数
标准函数。Turbo Pascal语言提供了自变量为整型量的标准函数有顺序函数算术函数和转换函数等。
标准函数是Turbo Pascal语言预先定义的，它们实际上是能完成特定功能的称步子程序的程序段。每个标准函数都用一个标识符来标识，每个标准函数都能完成一个特定的功能，在程序中可以直接调用它们。Turbo Pascal语言中某些标准函数与数学中的函数有相似之处。
一、整数类型函数
整型是顺序类型，即所有的整型数都是按一定的顺序排列的。如3的后序数是4，350的后序数是351。以后介绍的布尔型、字符型、枚举类型和子界类型等都是顺序类型。顺序函数可以对顺序类型数据进行操作，但要注意它们自变量的取值范围。
①前趋函数：Pred(x)函数值为x-l，例如：
Pred (6)=5 Pred (-21)=-22
②后继函数：Succ (x)函数值为x+l，例如：
Succ (l5)=16 Succ (-114)= -113
③绝对值函数：Abs (x)函数值为︱X︱，例如：
Abs (-119)=119 Abs (101)=101
④平方函数：Sqr (x)函数值为X2，例如：
Sqr (-5)=，25 Sqr (l0)= 100
以上四个函数的结果仍是整型数。
⑤奇函数：Odd (x)，函数的结果为布尔型。当X为奇数时，函数值为true；当X为偶数时，函数值为false。例如：
Odd (13)= True Odd (16)= False
⑥字符函数：Chr (X)，函数值是序号的ASCII字符，属字符型。例如：
Chr (65)=’A’ Chr (32)=’ ’
二、实数类型函数
在下列算术函数中，X可以是实型或整型数的表达式。对于函数Abs和Sqr，其结果类型和变量X的类型相同，其他算术函数的结果类型都是实型。
绝对值函数Abs(x)：函数值为x的绝对值
平方函数Sqr (x)：函数值为x的平方
小数函数Frac (x)：函数值为x的小数部分
整数函数Int (x)：函数值为x的整数部分
正弦函数Sin (x)：函数值为x的正弦，其申，的单位为弧度
余弦函数Cos (x)：函数值为x的余弦，其中，的单位为弧度
指数函数Exp (x)：函数值为了ex
对数函数Ln (X)：函数值为x的自然对数
平方根函数的Sqrt (x)：函数值为x的平方根
反正切函数Arctan(x)：函数值为x的反正切，单位为弧度
随机函数Random：无自变量时，函数值取(0,1)间的随机小数；有自变量且为Word类型时，函数值取(0，自变量)间的随机整数。
三、字符类型函数
Turbo Pascal语言提供如下自变量为字符型的标准函数，其中Chr为字符型。
后继函数Succ (ch)：例如，Succ (’8’)=’9’ Succ (’E’)=’F’
对字符集的最后一个字符，Succ函数无意义。
前趋函数Pred (ch)：例如，Pred (’7’)=’6’ Pred (’B’)=’ A’
序数函数Ord (ch)：:给出字符ch在ASCII字符集中的序号，结果为整型。
注意：Ord (’7’)<>7，正确的是：Ord (’7’)=Ord(’0’)+7=48+7=55
若ch是数字字符，则Ord (ch)-Ord ('0')是该数字字符的数值。例如：Ord (’7’)-Ord(’0’)=7
前面介绍的字符函数Chr (i)是Ord (ch)的逆函数。例如:
Chr (55)= ’7’ Chr (Ord(’A’))=’A’
三、布尔类型函数
Turbo Pascal语言提供布尔型函数主要是几个字符型函数。
Ord (B)例如：Ord (false)=0 Ord (true)=1
表达式
运算是对数据进行加工处理的过程，得到运算结果的数学公式或其它式子统称为表达式。表达式可以是常量也可以是变量或算式，在表达式中又可分为：算术表达式、逻辑表达式和字符串表达式。
1、算术表达式：
算术表达式是最常用的表达式，又称为数值表达式。它是通过算术运算符来进行运算的数学公式。我们先来看Visual Basic中的算术运算符：
算术运算符
运算符表达式 说 明 举 例
* X*Y 求X乘Y的值 6*7=42
/ X/Y 求X除Y的值（浮点数运算） 2.76/1.2=2.3
div X div Y 求X除Y的整数商（对整型数计算） 25=5
Mod X mod Y 求X除Y的余数（对整型数运算） 25 mod 4=1
+ X+Y 加法运算 32+2=34
- X-Y 减法运算 48-21=27
由于Visual Basic只能识别按其格式书写的数学表达式，所以必须将我们常用的数学表达式转换成Visual Basic表达式。例如：
数学式 Visual Basic表达式
2、逻辑运算
逻辑运算的结果只有两个：True（真）和False（假）。Visual Basic提供了六种关系运算符和四种逻辑运算符：
=(等于)、<（小于）、<=（小于等于）、>（大于）、>=（大于等于）、<>（不等于）
NOT（非）、AND（与）、OR（或）、XOR（异或）
运算关系
p q NOT p p AND q p OR q
True True False True True
True False False False True
False True True False True
False false True False False
例如：5>3 结果为 True, “a”>”b” 结果为False。
3、表达式的运算优先顺序
在进行表达式的转换过程中，必须了解各种运算的优先顺序，使转换后的表达式能满足数学公式的运算要求。运算优先顺序为：
括号→函数→乘方→乘、除→加、减→字符连接运算符→关系运算符→逻辑运算符
如果同级的运算是按从左到右次序进行；多层括号由里向外。
例：
（10+6）*3^2*COS(1)/2*8+7
① ④ ③ ⑤ ② ⑥ ⑦ ⑧
Sqrt(Abs(p/n-1))+1
④ ③ ① ② ⑤
2.1 Pascal字符与符号
1．标识符　
(1) 标识符的定义：标识符就是以字母开头的字母数字序列，有效长度为63个字符，并且大小写等效。可以用来标示常量、变量、程序、函数等。例如例1.1中的Area(程序名)，pi(符号常量)，s、r(变量名)都是标识符。
(2) 标识符的分类：
a.保留字(关键字)
所谓保留字是指在Pascal语言中具有特定的含义，你必须了解它的含义，以便于正确的使用，否则会造成错误。标准Pascal语言中的保留字一共有35个，Turbo Pascal语言一共有51个。下面是Pascal语言的保留字:
AND，ARRAY，BEGIN，CASE，CONST，DIV，DO，DOWNTO，ELSE，END，FILE，FOR，FUNTION，GOTO，IF，IN，LABEL，MOD，NIL，NOT，OF，OR，PACKED，PROCEDURE，PROGRAM，RECORD，REPEAT，SET，THEN，TO，TYPE，UNTIL，VAR，WHILE，WITH等
b.标准标识符：指Pascal语言预先定义的标识符，具有特殊含义。
以下列举了Turbo Pascal语言部分常用的标准表识符：
标准常量　False　Maxint　True
标准类型　Boolean　Char　Real　 Integer
标准函数　Abs　Arctan　Chr　Cos　Eof　Eoln　Exp
Ln　 Odd　 Ord　Pred　 Round　Sin　 Sqr
Sqrt　 Succ　Trunc
标准过程　Dispose　Get　 New　Pack　 Page　 Put　 Read
Readln　 Reset　 Rewrite　Unpack　 Write　Writeln
标准文件　Input　Output
c．用户自定义标识符：由你自己根据需要来定义。
（1）选用的标识符不能和保留字相同。
（2）语法上允许预定义的标准标识符作为你自己定义的标识符使用，但最好还是不要用。
以下列举了你自己在定义标识符时可以用的字符：
A..Z,a..z,0..9和_(下划线)，其中首位必须是字母，字母不区分大小写。
2.2　Pascal数据类型
数据是程序设计的一个重要内容，其重要特征----数据类型，确定了该数据的形、取值范围以及所能参与的运算。
Turbo Pascal 提供了丰富的数据类型，这些数据类型可以分为三大类：简单类型、构造类型和指针类型，其中简单类型可以分为标准类型（整型、实型、字符型和布尔型）和自定义类型（枚举型和子界型），构造类型可以分为数组类型、集合类型、记录类型和文件类型。这些数据类型中除了指针类型是动态数据类型外，其他的都是静态数据类型。在这些数据类型中的简单类型都是有序类型，除了实型以外的简单类型都是顺序类型，所谓顺序类型就是他们的值不仅是有序的而且是有顺序号。
在这里主要介绍整型、实型、字符型和布尔型四种常用的数据类型。
1.整型
一个整型数据用来存放整数。Turbo Pascal支持五种预定义整型，它们是shortint（短整型）、 integer（整型）、 longint（长整型）、 byte（字节型）和 word（字类型），Turbo Pascal分别用相同的名字作为他们的标识符。每一种类型规定了相应的整数取值范围以及所占用的内存字节数。
类型　数值范围　占字节数　格式
shortint　-128..128　1　 带符号8位
integer　 　-32768..32767　 2　 　带符号16位
longint　-2147483648..2147483647 　4　 带符号32位
byte　0..255　 1　 不带符号8位
word　0..65535　 2　 不带符号16位
Turbo Pascal规定了两个预定义整型常量标识符maxint和maxlonint，他们各表示确定的常数值，maxint为32767， longint为2147483647，他们的类型分别是integer 和longint
2.实型
一个实型数据用来存放实数。Turbo Pascal支持五种预定义实型，它们是real（基本实型）、 single（但精度实型）、double（双精度实型）、extended（扩展实型）、comp（装配实型），Turbo Pascal分别用相同的名字作为他们的标识符。每一种类型规定了相应的实数取值范围、所占用的内存字节数以及它们所能达到的精度
类型　数值范围　占字节数　有效位数
real　2.9e-39..1.7e38　6　11..12
single　1.5e-45..3.4e38　4　7..8
double　5.0e-324..1.7e308　8　15..16
Turbo Pascal支持两种用于执行实型运算的代码生成模式：软件仿真模式和80x87浮点模式。除了real可以在软件仿真模式下直接运行以外，其他类型必须在80x87浮点模式下运行。
3.布尔型
一个布尔型数据用来存放逻辑值（布尔值）。布尔型的值只有两个：false和true，并且false的序号是0，true的序号是1。false 和true都是预定义常数标识符，分别表示逻辑假和逻辑真。并且true<false。boolean是布尔型的标识符。
4.字符型
字符型用char作为标识符。字符型必须用单引号括起来，字母作为字符型时，大小写是不等价的，并且字符型只允许单引号中有一个字符，否则就是字符串。
2.3常量与变量
1.常量
(1)常量：在某个程序的整个过程中其值不变的量。
(2)常量定义：常量定义出现在说明部分。它的语法格式是：
const
<常量标识符>=<常量>;
...
<常量标识符>=<常量>;
常量标识符的类型由定义它的常量的类型决定。例如：const a=12 隐含说明a是整型；const r=3.21 隐含说明r是实型......
(3)常量定义部分必须以保留字const开头，可以包含一个或几个常量定义，而且每个常量均以分号结束。
(4)Turbo Pascal类型常量
类型常量，又称变量常数，它是Turbo Pascal的一个扩充特性。类型常量的定义与标准Pascal规定的常数定义和变量说明有所区别。类型常量定义的语法格式：
const
<简单类型常量标识符>:简单类型=常数；
例如：
const
counter:integer=0;
flag:boolean=true;
index:0..100=0;
2.变量
(1)变量：在某个程序中的运行过程中其值可以发生改变的量
(2)变量说明：变量说明出现在说明部分。它的语法格式是：
var
<变量标识符列表>:<类型>;
...
<变量标识符列表>:<类型>;
其中，保留字var表示开始一个变量说明部分。变量标识符列表是一个用逗号隔开的标识符序列，冒号后面的类型是类型标识符。每个变量说明均以分号结束。
program (程序名)；
var
定义变量如：integer、real、long int 、short int、boolean(此为，标志的变量)
begin
程序开始
例如：
var
a,b,c:integer;
m,n:real;
2.4　标准函数
1.算术函数
函数标识符　 自变量类型　意义　结果类型
abs　整型、实型　绝对值　同自变量
arctan　整型、实型　反正切　实型
cos　整型、实型　余弦　实型
exp　整型、实型　指数　实型
frac　 　整型、实型　小数部分　实型
int　整型、实型　整数部分　实型
ln　整型、实型　自然对数　实型
pi　 无自变量　圆周率　实型
sin　整型、实型　正弦　实型
sqr　整型、实型　平方　同自变量
sqrt　 整型、实型　平方根　实型
例：abs(-4)=4　abs(-7.49)=7.49　arctan(0)=0.0
sin(pi)=0.0　cos(pi)=-1.0　frac(-3.71)=-0.71
int(-3.71)=-3.0　sqr(4)=16　sqrt(4)=2
2.标准函数
函数标识符　自变量类型　意义　结果类型
odd　 整型　判断奇数　布尔型
pred　离散类型　求前趋　同自变量
succ　离散类型　求后继　同自变量
例：odd(1000)=false　pred(2000)=1999　succ(2000)=2001
odd(3)=true　pred('x')='w　succ('x')='y'
3.转换函数
函数标识符　自变量类型　意义　 结果类型
chr　byte　自变量对应的字符　字符型
ord　离散类型　自变量对应的序号　longint
round　实型　四舍五入　longint
trunc　实型　截断取整　longint
例：chr(66)='B'　ord('A')=65　round(-4.3)=-5　trunc(2.88)=2
4.杂类函数
函数标识符　自变量类型　意义　结果类型
random　无自变量　[0,1间的随机实数　real
random　word　[0,自变量间的随机整数)　 word
randomize 　无自变量　初始化内部随机数产生器　longint
upcase　字符型　使小写英文字母变为大写　字符型
downcase　字符型　使小写英文字母变为大写　字符型
2.5　运算符和表达式
1.运算符和优先级
(1)运算符
是实型，如果全部的运算对象都是整型并且运算不是除法，则结果为整型，若运算是除法，则结果是实型　a.算术运算符
运算符　运算　运算对象　结果类型
+　加　整型、实型　只要有一个运算对象是实型，结果就
-　减　整型、实型　是实型，如果全部的运算对象都是整
*　乘　整型、实型　型并且运算不是除法，则结果为整型，
/　除　整型、实型　若运算是除法，则结果是实型。
div　整除　整型　整型
mod　取余　整型　整型
b.逻辑运算符
运算符　运算　运算对象　结果类型
not　逻辑非　布尔型　布尔型
and　逻辑与　布尔型　布尔型
or　逻辑或　布尔型　布尔型
xor　逻辑异或　布尔型　布尔型
c.关系运算符
运算符　运算　运算对象　结果类型
=　等于　简单类型　布尔型
<>　 不等于　简单类型　布尔型
<　小于　简单类型　布尔型
>　大于　简单类型　布尔型
<=　 小于等于　简单类型　布尔型
>=　 大于等于　简单类型　布尔型
(2)优先级
运算符　优先级
not　1(高)
*,/,div,mod,and　2
xor,+,-,or　 3
in,=,<>,>=,<=,<>　4(低)
2.表达式
(1)算术表达式：算术表达式是由算术运算符连接常量、变量、函数的式子。算术表达式中各个运算符的次序为： ( )-->函数-->*,/,div,mod-->+,1
(2)布尔表达式：Turbo Pascal提供给布尔表达式以下基本操作：逻辑运算和关系运算。
（3）数学上的表达式与pascal语言表达式的区别
数学表达式PASCAL表达式注意
2a 2*a *号不能省略
a÷b a/b 除号的写法
a≠b a<>b 不等号的写法
a≤b a<=b 小于等于号的写法
a≥b a>=b 大于等于号的写法
主要语句：
读入：Read/ReadLn：读入内容/读入内容并将读入指针转到下一行。
输出：Write/WriteLn：输出内容/输出内容并将输出指针转到下一行。
赋值：<变量>:=<表达式>
判断：ifcase
循环：forwhileuntil
退出：break(跳出循环), exit(跳出过程/函数). halt(终止程序)
程序设计
单元：
PASCAL语言的程序中，通过在开头使用uses命令，说明使用的单元，语法是：
uses<单元名称>
标准库单元：System、DOS、CRT、Printer、Graph、Graph3、Turbo3、Overlay
单元的结构
单元的程序类似于一般的源程序，结构一般如下：
unit<单元名称>
interface
uses<单元名称表>;
<公用说明>
implementation
uses<单元名称表>;
<私有说明>
<过程和函数程序段>
begin<开始>
...<语句>
end.<结束>
可以看出，interface 一节接就相当于C++中类的public部分，uses相当于类的继承，implementation相当于private部分，初始化部分相当于构造函数。
面向对象的程序设计：
面向对象的程序设计就是利用pascal的单元进行设计。
pascal有object关键字，就是用于面向对象的程序设计，使用起来，程序的结构更加清晰。
语法：
object
Field;
Field;
...
Method;
Method;
end;