Pascal 语言.docx
- 文档编号:14579800
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:25
- 大小:31.31KB
Pascal 语言.docx
《Pascal 语言.docx》由会员分享,可在线阅读,更多相关《Pascal 语言.docx(25页珍藏版)》请在冰点文库上搜索。
Pascal语言
一、PASCAL语言的来历
Pascal是一种计算机通用的高级程序设计语言。
它由瑞士NiklausWirth教授于六十年代末设计并创立。
Pascal也可以是指人名,它的取名原本就是为了纪念十七世纪法国著名哲学家和数学家BlaisePascal,而不是编程工具。
以法国数学家命名的pascal语言现已成为使用最广泛的基于DOS的语言之一,其主要特点有:
严格的结构化形式;丰富完备的数据类型;运行效率高;查错能力强。
Pascal语言还是一种自编译的语言,这就使它的可靠性大大提高了。
Pascal具有简洁的语法,结构化的程序结构。
它是结构化编程语言,于70年代在ALGO今,在许多学校的计算机语言课上,的都是Pascal语言。
Pascal是最早出现的结构化编程语言,具有丰富的数据类型和简洁灵活的操作语句,适于描述数值和非数值的问题。
正因为上述特点,Pascal语言可以被方便地用于描述各种算法与数据结构。
尤其是对于程序设计的初学者,Pascal语言有益于培养良好的程序设计风格和习惯。
IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一,NOI(全国奥林匹克信息学竞赛)把Pascal语言定为唯一提倡的程序设计语言,在大学中Pascal语言也常常被用作学习数据结构与算法的教学语言。
[编辑本段]
二、PASCAL语言的发展
在Pascal问世以来的三十余年间,先后产生了适合于不同机型的各种各样版本。
其中影响最大的莫过于TurboPascal系列软件。
它是由美国Borland公司设计、研制的一种适用于微机的Pascal编译系统。
该编译系统由1983年推出1.0版本发展到1992年推出的7.0版本,其版本不断更新,而功能更趋完善。
TurboPascal语言是编译型程序语言,它提供了一个集成环境的工作系统,集编辑、编译、运行、调试等多功能于一体
Pascal有5个主要的版本,分别是UnextendedPascal、ExtendedPascal、Object-OrientedExtensionstoPascal、BorlandPascal和DelphiObjectPascal。
其中,UnextendedPascal、ExtendedPascal和Object-OrientedExtensionstoPascal是由Pascal标准委员会所创立和维护的,UnextendedPascal类似于瑞士NiklausWirth教授和K.Jensen于1974年联名发表的Pascal用户手册和报告,而ExtendedPascal则是在其基础上进行了扩展,加入了许多新的特性,它们都属于正式的Pascal标准;Object-OrientedExtensionstoPascal是由Pascal标准委员会发表的一份技术报告,在ExtendedPascal的基础上增加了一些用以支持面向对象程序设计的特性,但它属于非正式的标准。
BorlandPascal和DelphiObjectPascal是由Borland公司专门为其开发的编译工具设计的Pascal语言,前者是用于DOS的TurboPascal系列和Windows3.x的TurboPascalforWindows的传统高级语言,后者是用于Windows的Delphi和Linux的Kylix的面向对象程序设计语言,它们都不是正式的Pascal标准,具有专利性。
但由于TurboPascal系列和Delphi功能强大并且广为流行,BorlandPascal和DelphiObjectPascal已自成为一种标准,为许多人所熟悉。
[编辑本段]
三、PASCAL语言的影响
高级语言发展过程中,PASCAL是一个重要的里程碑。
PASCAL语言是第一个系统地体现了E.W.Dijkstra和C.A.R.Hoare定义的结构化程序设计概念的语言。
1971年,瑞士联邦技术学院尼克劳斯·沃尔斯(N.Wirth)教授发明了另一种简单明晰的电脑语言,这就是以电脑先驱帕斯卡的名字命名的PASCAL语言。
PASCAL语言语法严谨,层次分明,程序易写,具有很强的可读性,是第一个结构化的编程语言。
它一出世就受到广泛欢迎,迅速地从欧洲传到美国。
沃尔斯一生还写作了大量有关程序设计、算法和数据结构的著作,因此,他获得了1984年度“图灵奖”。
[编辑本段]
四、PASCAL在学习和竞赛中的应用
在中国的信息学奥林匹克竞赛中,过去比较常用的Pascal编程工具是TurboPascal。
TurboPascal是DOS下的一种16位编程工具,在Delphi出现之前,它是世界上最多人使用的Pascal编程工具,拥有编译速度极快的先进编译器和功能强大而又简便易用的集成开发环境(IDE),在微机程序员中广为流行,正是它的出现奠定了Pascal在DOS/Windows平台上不可动摇的根基,现在常见的版本有TurboPascal5.5、TurboPascal6.0和BorlandTurboPascalwithObjects7.0。
TurboPascal6.0与TurboPascal5.5相比,主要是IDE更为强大,而其程序设计功能改变不大,只是增加了一些新的功能,例如可以内嵌asm汇编语句等。
而BorlandTurboPascalwithObjects7.0(简称BorlandPascal7.0)则有了新的飞跃,首先是IDE进一步加强,提供了程序浏览器,然后是程序设计功能有了很大的提升,新增了一些十分有用的标准子程序,支持比较完善的面向对象程序设计功能,并提供了DOS实模式、DOS保护模式和Windows模式三种程序编译模式,能够编写出可以使用扩充内存(XMS)的保护模式应用程序或者在Windows3.x下运行的Windows程序,另外还提供了一个对象窗口库(OWL),使用它可以快速的开发出具有一致的视窗界面(DOS或Windows3.x)的应用程序。
BorlandPascal7.0在1992年推出,是TurboPascal系列在DOS下的最后版本。
下面列出TurboPascal的编年史:
1983TurboPascal1.0
TurboPascal2.0
Turbo-87Pascal提高实数运算速度并扩大值域
1985TurboPascal3.0增加图形功能
TurboBCDPascal特别适合应用于商业
1987TurboPascal4.0提供集成开发环境(IDE),引入单元概念
1988TurboPascal5.0增加调试功能
1989TurboPascal5.5支持面向对象的程序设计(OPP)
1990TurboPascal6.0提供面向对象的应用框架和库(TurboVision)
1992TurboPascal7.0面向对象的应用系统、更完善的IDE
TurboVision2.0
1993BorlandPascal7.0开发ObjectWindows库
(ForWindows)提供对OLE多媒体应用开发的支持
1995DelphiVisualPascal
TurboPascal语言是编译型程序语言,它提供了一个集成环境的工作系统,集编辑、编译、运行、调试等多功能于一体。
现在,随着TurboPascal逐渐被淘汰,全国信息学奥林匹克竞赛决赛(NOI)和国际信息学奥林匹克竞赛(IOI)已经指定FreePascal为比赛使用的Pascal编程工具。
FreePascal是由一个国际组织开发的32位Pascal编程工具,属于共享软件,可用于各种操作系统。
根据编译选项的不同,它可以使用BorlandPascal兼容语法、Delphi2ObjectPascal语法或者其它语法进行编写程序。
由于它拥有32位的编译器,所以理论内存达到了4GB,而且一直在更新发展中,因此它的功能比BorlandPascal更加强大,拥有许多现代程序设计的特征,但同时也很不成熟,存在很多漏洞。
FreePascal正处于发展初期,相应的函数库十分少,对程序员的吸引力远比不上拥有VCL和CLX的Delphi和Kylix,但是它的这些不同于TurboPascal的特征使联赛选手们需要改进自己的算法(简单地说就是时间换空间)。
Pascal竞赛的辅导用书有很多,最经典的有《全国青少年信息学奥林匹克联赛培训教材》。
[编辑本段]
五、Pascal的基本运用
TurboPascal系列软件作为开发系统软件与就任软件及实施科学计算和教学的有力工具,下发挥着越来越大的作用。
也是国际和全国青少年信息学奥林匹克竞赛指定的语言之一。
从历届信息学竞赛的情况看,它是最能出成绩和选手最欢迎的语言。
以后的例子就以TurboPascal7.0进行程序设计。
下面我们就以一个实例来看一看Pascal程序的结构,从中认识到Pascal语言程序的书写方式,以及其规范的标准设计方式。
例1:
输入一个圆的半径,求出其圆周长。
设圆的半径为R,周长为L,我们知道公式如下:
L=2πR
它的Pascal程序如下:
programyzhch(input,output);{程序首部}
const{常量说明}
pi=3.14159
var{变量说明}
l,r:
real;
begin{程序开始}
readln(r);{输入半径}
l:
=2*pi*r;{计圆周长}
writeln('l=',l);{输出圆周长}
end.{结束程序}
从以上简单的例子可以看出,TurboPascal程序是由程序首部、程序说明部分和程序执行部分组成。
具体如下所示:
program程序名;{程序首部}
说明部分{说明部分}
begin{程序开始}
语句1;{执行语句}
语句2;{执行语句}
……{执行语句}
end.{结束程序}
上面程序由如下两部分组成:
1、程序首部
程序首部是程序的开头部分,由保留字program后,接程序名及程序参数表组成,结束时一定要有分号。
程序名yzhch是用户自己定义的标识符,参数表一般是文件变量名,用于该程序与外界的数据交流。
最常用的参数为input和output。
TurboPascal程序首部中参数表可以省略。
2、程序说明部分
Pascal语言要求用户将在程序中所使用的标号、常量、类型、变量、记录、文件、以及过程和函数除了Pascal自己预先定义的标准量之外,都必须在说明部分说明后才能在程序执行部分使用。
但各个内容部分是可选的,只有执行程序部分需要的时候才进行说明。
3、程序执行部分
紧接着说明部分的begin和end之间的部分为程序的执行部分。
它由一系列语句组成,一条语句执行一定的功能,所有语句完成程序设计的任务。
语句之间用“;”隔开,允许一行写多个语句,也允许一个语句写多行。
最后一行的end后加“.”号表示结束。
所跟其后的语句将无任何作用。
Begin与end应配对出现,这是每一个TurboPascal程序都必须的。
注意:
后面将学习到的语句中,也需要引用begin和end作为程序段的分隔标记,但其必须遵守语句规则。
数据类型、常量的变量
一、数据类型的概念
计算机处理数据对象是一个广义的概念。
例如,125、12.76是数据,’xiangqjzhong’这一串字符也是数据。
前者是数值数据,后者是字符串数据,是非数值数据。
显然,为了表示这些数据,它们在内存中必须以不同方式存放。
为处理这些数据,计算机对它们施加的运算也不同。
为此,TurboPascal语言建立了数据类型的概念,对描述的数据进行分类。
每一种数据类型定义了一个具有相同性质的数据集合。
各种数据类型的数据具有不同的性质。
程序中所用到的每一个数据,包括常量和变量都有一个和它相联系的类型。
由此决定了数据所具有的值,也决定了对该数据所能进行的操作。
TurboPascal语言中数据具有丰富的类型,按它们的特点可以分为简单类型、构造类型、指针类型和过程类型四大类,如图下所示。
其中,标准类型用语言系统预先定义的标准标识符表示,整型用integer表示,实型用real表示,布尔型用boolean表示,字符型用char表示。
二、常量
常量是指在程序中使用的一些具体的整型数、实型数和字符串。
(1)整型数:
如9、3、-5、0等。
(2)实型数:
如3•1、-6.1E+20等。
(3)字符串:
是用单引号括起来的一串字符,如,’book’、’96•5’、’ABC’等。
以上列举的都可以作为常量在程序中使用。
为了提高程序的可读性并使程序便于修改,在程序中往往用一些标识符来代表具体的常量。
在TurboPascal语言中,可以给一些常量取个名字用一个标识符代表它,这就是常量定义。
例如,Cost=60;Blank=’’。
经常量定义的标识符又称为常量标识符。
在TurboPascal语言中,常量定义要写在常量定义部分中。
常量定义部分的一般形式:
Const
(常量标识符1)=(常量1);
(常量标识符2)=(常量2);
(常量标识符n)=(常量n);
Const是保留宇,表示开始一个常量定义部分,其后可以有若干个常量定义,这些
常量定义之间要用“;”号分隔。
例如:
Const
Cost=60;
A=Cost+30;
Pi=3.14159;
TurboPascal语言对常量定义有如下要求:
(1)常量定义要放在程序的常量定义部分,即程序首部之后,执行部分之前。
(2)必须遵循先定义后使用的原则,即只有已经定义的常量标识符,才能在程序中
使用。
三、变量
在程序执行过程中其值可以改变的数据,称为变量。
每个变量都要有一个名称,这就是变量名。
变量名由用户自己定义,但必须符合标识符的规定。
在一个程序中,一个变量只能属于一种确定的数据类型。
因此,程序中出现的每个变量都必须说明其数据类型,这样就规定了该变量的取值范围,也决定了对该变量所能执行的运算操作。
变量的类型,可以是标准数据类型integer、real、boolean和char,也可以是用户自定义的各种类型。
变量说明形式是:
一个变量标识符或由逗号隔开的多个变量标识符在它的冒号":
"后面说明其数据类型。
在TurboPascal程序中,变量说明要写在变量说明部分中。
变量说明部分的一般形式:
var
(变量说明1);
(变量说明2);
……(变量说明n);
其中var是保留字,表示一个变量说明部分开始。
一个var可以含有多个不同的变量说明,每个变量说明之间用分号隔开,有时称被分号隔开的变量说明为变量说明项。
例如:
var
x,y:
real;
chl:
char;
t,f:
boolean;
注意:
不同类型的变量一般不能互相串用。
这里还应指出,变量一经说明系统就在计算机内存中为其分配一个存贮空间。
在程序中使用到变量时,就在相应的内存中存入数据或取出数据,这种操作称为变量的访问。
标准数据类型
Pascal向程序设计者提供了丰富的数据类型,它们用于专门的目的,但却都是由简单的、非构造型的数据类型所构成的。
本节介绍TurboPascal中最为基本的几种数据类型:
整型、实型、布尔型和字符型。
它们都是系统定义的简单数据类型,称为标准数据类型,其对应的名字称为标准标识符。
1、整型
一个整型数据用来存放整数,整型数据可以是正整数、负整数和整数零。
TurboPascal中的整型常数必须按规定严格书写。
TurboPascal支持五种预定义整型,它们是短整型(Shortint)、整型(Integer)、长整型(Longint)、字节型(Byte)和字类型(Word),每一种类型规定了相应的整数取值范围以及所占内存字节数(一个字节为8个二进制位)。
因此,用户在具体编程定义变量类型时,要根据它们的特点选用适当的类型,以达到理想的效果。
当两个不同范围类型的操作数进行运算时,得到的结果属于较大范围的类型。
如下表所示。
TurboPascal语言规定可以对整型数据进行算术运算符+、一、*、Div、Mod。
它们分别表示加、减、乘、整除和取余。
这五种运算,要求参加运算的两个数都是整型数,运算结果也是整型数。
前三种运算与一般的算术运算加、减、乘相同。
Div整除运算,是两个整型数相除取整数部分(商的整数部分),得到整型结果。
Mod取余运算,是两个整型数相除取余数,余数的符号与被除数符号相同。
例如:
3Div2=15Div7=0
6Div(-4)=-1(-12)Div(-5)=2
7Mod4=3(14)Mod(-4)=2
(-18)Mod(-6)=06Modl7=6
由此可见,aModb,所得结果的符号与a相同,其值(绝对值)在0~∣b∣-1之间。
运算符Mod与Div之间有如下关系:
aModb=a–(aDivb)*b(b<>0)
其中Mod运算的结果的符号与a的符号相同。
利用以上两种运算可以对正整数进行分离。
例如:
n为四位数8531,可用下法分离出它的个、十、百、千位。
8531Modl0=1(个位数)
(8531Modl00)Divl0=3(十位数)
(8531Modl000)Divl00=5(百位数)
8531Modl000=8(千位数)
利用aModb可以判断a能否被b整除。
当aModb=0时,a能被b整除。
2、实型
一个实型数据用来存放实数。
实型数据可以是正实数、负实数和实数零。
实型数据一般用小数或指数形式(亦称科学表示法)表示。
例如:
+1993,33,3.5E+8(=3.5×105),-0.5E-3(=-0.5×10-3,),-20.0,,0.0等都是合法实型数。
TurboPascal支持一种预定义实型,它们是基本实型(Real)、单精度实型(Single)、双精度实型(Double)、扩展实型(Extended)和装配实型(Comp)。
每一种类型规定了相应的实数取值范围和所占内存字节数,以及它们所能达到的精度,即有效数字位数。
因此,用户在具体编程时应根据以上的参数适当选用,以达到最佳效果。
如下表所示。
对于此类实型数据,若其绝对值大于上界,则产生上溢;绝对值小于下界,则产生下溢,下溢导致结果为0。
Comp类型的取值范围是-263+1~238-1之间的整数,相当于十进制的-9.218~9.218。
由于Comp类型的数据表示成二进制形式的数,这种类型的变量有时处理起来比较方便,特别对于数值很大的整数间的计算,这种数据类型很有用。
TurboPascal语言允许实型数使用下列运算符进行运算。
运算符:
+、-、*、/
分别表示加、减、乘和除。
其中"/"叫实数除,即使两个整型数相除,其结果也总是实型,如:
7/2=3.56/3=2.0
3、字符型
用标准标识符Char标明字符型。
字符型数据可以是字母、符号、数字(0-9)等ASCII码的所有字符。
TurboPascal支持扩展ASCII码,共包括256个字符。
但非印刷字符是不能在标准显示上显示或打印输出。
在计算机内部,字符集的元素是以该元素在字符集内的顺序位置来标记的,位置取值范围为0~255,我们称这些整数为字符在字符集内的序数值或序号。
每个字符型数据在内存中占一个字节。
将字符用单引号括起来,即成字符常数,如,’X’,’7’,’?
’。
字符常数可按字符的序数值确定大小关系,也就是说它们的大小由它们所对应的ASCII码值决定,如:
’Y’,’Z’,’A’<’a’。
由于采用ASCII码,字符依ASCII码序号排列。
这样,字符与ASCII码序号有一一对应的映射关系。
4、布尔型
一个布尔型数据用来存放逻辑值,或称布尔值。
TurboPascal支持预定义布尔型,以标准标识符Boolean表示。
Boolean一词,系根据19世纪英国数学家Georgeboole(1815-1864)的名字而得,Georgeboole为现代布尔代数之父。
布尔型数据的值只有两个:
True(逻辑真)和False(逻辑假)。
布尔型是顺序类型,规定False 逻辑运算的结果只有两个: True(真)和False(假)。 TurboPascal提供了六种关系运算符和四种逻辑运算符: =(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<>(不等于) NOT(非)、AND(与)、OR(或)、XOR(异或) 运算关系 函数 标准函数。 TurboPascal语言提供了自变量为整型量的标准函数有顺序函数算术函数和转换函数等。 标准函数是TurboPascal语言预先定义的,它们实际上是能完成特定功能的称步子程序的程序段。 每个标准函数都用一个标识符来标识,每个标准函数都能完成一个特定的功能,在程序中可以直接调用它们。 TurboPascal语言中某些标准函数与数学中的函数有相似之处。 一、整数类型函数 整型是顺序类型,即所有的整型数都是按一定的顺序排列的。 如3的后序数是4,350的后序数是351。 以后介绍的布尔型、字符型、枚举类型和子界类型等都是顺序类型。 顺序函数可以对顺序类型数据进行操作,但要注意它们自变量的取值范围。 ①前趋函数: Pred(x)函数值为x-l,例如: Pred(6)=5Pred(-21)=-22 ②后继函数: Succ(x)函数值为x+l,例如: Succ(l5)=16Succ(-114)=-113 ③绝对值函数: Abs(x)函数值为︱X︱,例如: Abs(-119)=119Abs(101)=101 ④平方函数: Sqr(x)函数值为X2,例如: Sqr(-5)=,25Sqr(l0)=100 以上四个函数的结果仍是整型数。 ⑤奇函数: Odd(x),函数的结果为布尔型。 当X为奇数时,函数值为true;当X为偶数时,函数值为false。 例如: Odd(13)=TrueOdd(16)=False ⑥字符函数: Chr(X),函数值是序号的ASCII字符,属字符型。 例如: Chr(65)=’A’Chr(32)=’’ 二、实数类型函数 在下列算术函数中,X可以是实型或整型数的表达式。 对于函数Abs和Sqr,其结果类型和变量X的类型相同,其他算术函数的结果类型都是实型。 绝对值函数Abs(x): 函数值为x的绝对值 平方函数Sqr(x): 函数值为x的平方 小数函数Frac(x): 函数值为x的小数部分 整数函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Pascal 语言
![提示](https://static.bingdoc.com/images/bang_tan.gif)