第一课 初识Pascal语言
信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力。选手首先应针对竞赛中题目的要求构建数学模型,进而构造出计算机可以接受的算法,之后要写出高级语言程序,上机调试通过。程序设计是信息学奥林匹克竞赛的基本功,在青少年朋友参与竞赛活动的第一步必须掌握一门高级语言及其程序设计方法。
一、Pascal 语言概述
PASCAL语言也是一种算法语言,它是瑞士苏黎世联邦工业大学的N.沃思(Niklaus Wirth)教授于1968年设计完成的,1971年正式发表。1975年,对PASCAL语言进行了修改,作为“标准PASCAL语言”。
PASCAL语言是在ALGOL 60的基础上发展而成的。它是一种结构化的程序设计语言,可以用来编写应用程序。它又是一种系统程序设计语言,可以用来编写顺序型的系统软件(如编译程序)。它的功能强、编译程序简单,是70年代影响最大一种算法语言。
PASCAL语言也是一种算法语言,它是瑞士苏黎世联邦工业大学的N.沃思(Niklaus Wirth)教授于1968年设计完成的,1971年正式发表。1975年,对PASCAL语言进行了修改,作为“标准PASCAL语言”。
PASCAL语言是在ALGOL 60的基础上发展而成的。它是一种结构化的程序设计语言,可以用来编写应用程序。它又是一种系统程序设计语言,可以用来编写顺序型的系统软件(如编译程序)。它的功能强、编译程序简单,是70年代影响最大一种算法语言。
二、Pascal 语言的特点
从使用者的角度来看,PASCAL语言有以下几个主要的特点:
⒈它是结构化的语言。PASCAL语言提供了直接实现三种基本结构(顺序、分支、循环)的语句以及定义“过程”和“函数”(子程序)的功能。可以方便地书写出结构化程序。在编写程序时可以完全不使用GOTO语句和标号。这就易于保证程序的正确性和易读性。PASCAL语言强调的是可靠性、易于验证性、概念的清晰性和实现的简化。在结构化这一点上,比其它(如BASIC,FORTRAN77)更好一些。
⒉有丰富的数据类型。PASCAL提供了整数、实型、字符型、布尔型、枚举型、子界型以及由以上类型数据构成的数组类型、集合类型、记录类型和文件类型。此外,还提供了其它许多语言中所没有的指针类型。沃思有一个著名的公式:"算法+数据结构=程序"。指出了在程序设计中研究数据的重要性。丰富的数据结构和上述的结构化性质,使得PASCAL可以被方便地用来描述复杂的算法,得到质量较高的程序。
⒊能适用于数值运算和非数值运算领域。有些语言(如FORTRAN 66,ALGOL 60)只适用于数值计算,有些语言(如COBOL )则适用于商业数据处理和管理领域。PASCAL的功能较强,能广泛应用于各种领域。PASCAL语言还可以用于辅助设计,实现计算机绘图功能。
从使用者的角度来看,PASCAL语言有以下几个主要的特点:
⒈它是结构化的语言。PASCAL语言提供了直接实现三种基本结构(顺序、分支、循环)的语句以及定义“过程”和“函数”(子程序)的功能。可以方便地书写出结构化程序。在编写程序时可以完全不使用GOTO语句和标号。这就易于保证程序的正确性和易读性。PASCAL语言强调的是可靠性、易于验证性、概念的清晰性和实现的简化。在结构化这一点上,比其它(如BASIC,FORTRAN77)更好一些。
⒉有丰富的数据类型。PASCAL提供了整数、实型、字符型、布尔型、枚举型、子界型以及由以上类型数据构成的数组类型、集合类型、记录类型和文件类型。此外,还提供了其它许多语言中所没有的指针类型。沃思有一个著名的公式:"算法+数据结构=程序"。指出了在程序设计中研究数据的重要性。丰富的数据结构和上述的结构化性质,使得PASCAL可以被方便地用来描述复杂的算法,得到质量较高的程序。
⒊能适用于数值运算和非数值运算领域。有些语言(如FORTRAN 66,ALGOL 60)只适用于数值计算,有些语言(如COBOL )则适用于商业数据处理和管理领域。PASCAL的功能较强,能广泛应用于各种领域。PASCAL语言还可以用于辅助设计,实现计算机绘图功能。
⒋PASCAL程序的书写格式比较自由。不象FORTRAN和COBOL那样对程序的书写格式有严格的规定。PASCAL允许一行写多个语句,一个语句可以分写在多行上,也不区分大小写,这样就可以使PASCAL程序写得象诗歌格式一样优美,便于阅读。
由于以上特点,许多学校选PASCAL作为程序设计课程中的一种主要的语言。它能给学生严格而良好的程序设计的基本训练。培养学生结构化程序设计的风格。但它也有一些不足之处,如它的文件处理功能较差等。
三、Pascal语言程序的基本结构
任何程序设计语言都有着一组自己的记号和规则。PASCAL语言同样必须采用其本身所规定的记号和规则来编写程序。尽管不同版本的PASCAL语言所采用的记号的数量、形式不尽相同,但其基本成分一般都符合标准PASCAL的规定,只是某些扩展功能各不相同罢了。下面我们首先来了解Pascal语言的程序基本结构。
为了明显起见先举一个最简单的PASCAL程序例子: 【例1】
由于以上特点,许多学校选PASCAL作为程序设计课程中的一种主要的语言。它能给学生严格而良好的程序设计的基本训练。培养学生结构化程序设计的风格。但它也有一些不足之处,如它的文件处理功能较差等。
三、Pascal语言程序的基本结构
任何程序设计语言都有着一组自己的记号和规则。PASCAL语言同样必须采用其本身所规定的记号和规则来编写程序。尽管不同版本的PASCAL语言所采用的记号的数量、形式不尽相同,但其基本成分一般都符合标准PASCAL的规定,只是某些扩展功能各不相同罢了。下面我们首先来了解Pascal语言的程序基本结构。
为了明显起见先举一个最简单的PASCAL程序例子: 【例1】
从这个简单的程序可以看到:
⒈一个PASCAL程序分为两个部分:程序首部和程序体(或称分程序)
⒉程序首部是程序的开头部分,它包括:
⑴程序标志。用“program”来标识“这是一个PASCAL 程序”。PASCAL规定任何一个PASCAL程序的首部都必须以此字开头。在turbo pascal语言中,首部也可省略。
⑵程序名称。由程序设计者自己定义(但受一些规则限制),如例中的exam1。
注:在写完程序首部之后,应有一个分号。
⒊程序体是程序的主体,在有的书本里也称“分程序”。程序体包括说明部分(也可省略)和执行部分两个部分。
⑴说明部分用来描述程序中用到的变量、常量、类型、过程与函数等。本程序中第二行是"变量说明",用来定义变量的名称、类型。
PASCAL规定,凡程序中用到所有变量、符号常量、数组、标号、过程与函数、记录、文件等数据都必须在说明部分进行定义(或称“说明”)。也就是说,不允许使用未说明先使用。
⑵执行部分的作用是通知计算机执行指定的操作。如果一个程序中不写执行部分,在程序运行时计算机什么工作也不做。因此,执行部分是一个PASCAL程序的核心部分。
执行部分以“begin”开始,以“end”结束,其间有若干个语句,语句之间以分号隔开。
注:执行部分之后有一个句点,表示整个程序结束。
⒋PASCAL程序的书写方法比较灵活。当然,书写不应以节省篇幅为目的,而应以程序结构清晰、易读为目的。在编写程序时尽量模仿本书中例题程序格式。
注:在写完程序首部之后,应有一个分号。
⒊程序体是程序的主体,在有的书本里也称“分程序”。程序体包括说明部分(也可省略)和执行部分两个部分。
⑴说明部分用来描述程序中用到的变量、常量、类型、过程与函数等。本程序中第二行是"变量说明",用来定义变量的名称、类型。
PASCAL规定,凡程序中用到所有变量、符号常量、数组、标号、过程与函数、记录、文件等数据都必须在说明部分进行定义(或称“说明”)。也就是说,不允许使用未说明先使用。
⑵执行部分的作用是通知计算机执行指定的操作。如果一个程序中不写执行部分,在程序运行时计算机什么工作也不做。因此,执行部分是一个PASCAL程序的核心部分。
执行部分以“begin”开始,以“end”结束,其间有若干个语句,语句之间以分号隔开。
注:执行部分之后有一个句点,表示整个程序结束。
⒋PASCAL程序的书写方法比较灵活。当然,书写不应以节省篇幅为目的,而应以程序结构清晰、易读为目的。在编写程序时尽量模仿本书中例题程序格式。
⒌在程序中,一对大括号间的文字称为注释。注释的内容由人们根据需要书写,可以用英语或汉语表示。注释可以放在任何空格可以出现的位置。执行程序时计算机对注释不予理睬。
四、Turbo Pascal语言系统的使用(FreePascal与之类似)
目前,常用的Pascal语言系统有Turbo Pascal7.0、Borland Pascal 7.0、FreePascal1.0.10,下面我们就来学习Turbo Pascal 7.0系统的使用。
1. 系统的启动(上面的这几个版本都可在DOS、WINDOWS下使用)
方式一:只适合在WINDOWS下,在桌面上建立快捷方式,然后双击快捷方式即可
方式二:进入相应的系统目录下,执行主程序(Turbo Pascal的主程序为TURBO.EXE;FreePascal的主程序为FP.EXE),具体的操作步骤如下
进入DOS命令行(这是在WIDOWS下要做的,WIN98及以前的版本是在“运行”窗口中输入COMMAND命令;WINXP及以上版本是在“运行”窗口中输入CMD命令)
输入以下命令行即可启动相应的编译集成环境:
cd \tp\bin {进入主程序所在的文件夹,Freepascal是cd \pp\bin\go32v2}
turbo {Freepascal是fp}
系统启动后,屏幕上出现如图1所示的集成环境。
2. Turbo Pascal系统集成环境简介
最顶上一行为主菜单。中间蓝框内为编辑窗口,在它个编辑窗口内可以进行程序的编辑。
目前,常用的Pascal语言系统有Turbo Pascal7.0、Borland Pascal 7.0、FreePascal1.0.10,下面我们就来学习Turbo Pascal 7.0系统的使用。
1. 系统的启动(上面的这几个版本都可在DOS、WINDOWS下使用)
方式一:只适合在WINDOWS下,在桌面上建立快捷方式,然后双击快捷方式即可
方式二:进入相应的系统目录下,执行主程序(Turbo Pascal的主程序为TURBO.EXE;FreePascal的主程序为FP.EXE),具体的操作步骤如下
进入DOS命令行(这是在WIDOWS下要做的,WIN98及以前的版本是在“运行”窗口中输入COMMAND命令;WINXP及以上版本是在“运行”窗口中输入CMD命令)
输入以下命令行即可启动相应的编译集成环境:
cd \tp\bin {进入主程序所在的文件夹,Freepascal是cd \pp\bin\go32v2}
turbo {Freepascal是fp}
系统启动后,屏幕上出现如图1所示的集成环境。
2. Turbo Pascal系统集成环境简介
最顶上一行为主菜单。中间蓝框内为编辑窗口,在它个编辑窗口内可以进行程序的编辑。
最底下一行为提示行,显示出系统中常用命令的快捷键,如:将当前编辑窗口中文件存盘的命令快捷键为F2,获得系统帮助的快捷键为F1,等等。
3. 新建程序窗口
按F10进入主菜单,选择FILE菜单,执行其中New命令。就可建立一个新的程序窗口(默认
3. 新建程序窗口
按F10进入主菜单,选择FILE菜单,执行其中New命令。就可建立一个新的程序窗口(默认
文件名为Noname00.pas或Noname01.pas等)。
4. 程序的输入、编辑与运行
在当前程序窗口中,一行一行的输入程序。事实上,程序窗口是一个全屏幕编辑器。所以对程序的编辑与其它编辑器的编辑方法类似,这里不再重复。
当程序输入完毕之后,一般要先按pascal语言难学吗Alt+F9(或执行compile菜单中compile命令)对程序进行编译。如果程序有语法错误,则会在程序窗口的第一行处显示第一个红错误信息。若无语法错误,则窗口正中央会出现一个对话框,提示编译成功。接下来,我们可以运行程序了。
程序的运行可以通过按ALT+R打开RUN菜单中的RUN命令,或直接按快捷键CTRL+F9。则可以在用户窗口中输出运行结果。通常在程序运行结束后系统回到Pascal系统的集成环境,因此要查看运行结果,要按ALT+F5将屏幕切换到用户屏幕。
5.程序的保存与打开
当我们想把程序窗口中的程序存入磁盘时,可以通过按F2键(或执行File菜单中的save命令)来保存程序。第一次保存文件时屏幕上会出现一个对话框要求输入文件名(默认扩展名为.pas)。
当我们要将磁盘上的程序文件中的PASCAL程序装入窗口时,可按F3(或执行File菜单中的O
4. 程序的输入、编辑与运行
在当前程序窗口中,一行一行的输入程序。事实上,程序窗口是一个全屏幕编辑器。所以对程序的编辑与其它编辑器的编辑方法类似,这里不再重复。
当程序输入完毕之后,一般要先按pascal语言难学吗Alt+F9(或执行compile菜单中compile命令)对程序进行编译。如果程序有语法错误,则会在程序窗口的第一行处显示第一个红错误信息。若无语法错误,则窗口正中央会出现一个对话框,提示编译成功。接下来,我们可以运行程序了。
程序的运行可以通过按ALT+R打开RUN菜单中的RUN命令,或直接按快捷键CTRL+F9。则可以在用户窗口中输出运行结果。通常在程序运行结束后系统回到Pascal系统的集成环境,因此要查看运行结果,要按ALT+F5将屏幕切换到用户屏幕。
5.程序的保存与打开
当我们想把程序窗口中的程序存入磁盘时,可以通过按F2键(或执行File菜单中的save命令)来保存程序。第一次保存文件时屏幕上会出现一个对话框要求输入文件名(默认扩展名为.pas)。
当我们要将磁盘上的程序文件中的PASCAL程序装入窗口时,可按F3(或执行File菜单中的O
pen命令)来装入程序,此时系统也会弹出一个对话框要求输入要打开的文件名,或直接在文件对话框列表中选择所要的文件,然后回到打开文件。
6.退出Turbo Pascal:直接按组合键ALT+X或选择“File”菜单中的“Exit”
6.退出Turbo Pascal:直接按组合键ALT+X或选择“File”菜单中的“Exit”
五、第一个程序
为让大家了解程序设计的基本过程(编辑→编译/解释→连接→运行),请大家输入下面的程序并运行,学会用自己的描述它的功能是什么?
program sample;
var
i,n,number:integer;
begin
write('Number=');
readln(number);
for i:=1 to number do
begin
if i mod 2=1 then
为让大家了解程序设计的基本过程(编辑→编译/解释→连接→运行),请大家输入下面的程序并运行,学会用自己的描述它的功能是什么?
program sample;
var
i,n,number:integer;
begin
write('Number=');
readln(number);
for i:=1 to number do
begin
if i mod 2=1 then
begin
for n:=1 to (number-i) div 2 do write(' ');
for n:=1 to i do write('*');
writeln;
end;
end;
readln
end.
请输入上面的程序,将其存盘、关闭。然后再打开并运行序。(中途要在不退出Pascal的情况下进入命令行状态查看程序的运行结果,可以选择“File”菜单中的“Command shell”,Turbo Pascal为“Dos shell”,返回请输入EXIT命令,不分大小写。
作业:模仿本课中出现的例程及学到的知识,完成下列编程任务
1. 提示用户输入圆的半径,计算并输出圆的周长
2. 提示用户输入两个数,计算并输出这两个数的和
for n:=1 to (number-i) div 2 do write(' ');
for n:=1 to i do write('*');
writeln;
end;
end;
readln
end.
请输入上面的程序,将其存盘、关闭。然后再打开并运行序。(中途要在不退出Pascal的情况下进入命令行状态查看程序的运行结果,可以选择“File”菜单中的“Command shell”,Turbo Pascal为“Dos shell”,返回请输入EXIT命令,不分大小写。
作业:模仿本课中出现的例程及学到的知识,完成下列编程任务
1. 提示用户输入圆的半径,计算并输出圆的周长
2. 提示用户输入两个数,计算并输出这两个数的和
第二课 赋值语句、输出语句
上节课,我们学习了Pascal语言的程序基本结构,在一个程序中,所有的操作都由执行部分来完成,而执行部分又都是由一个个语句组成的。因此,下面开始我们要学习pascal语言的基本语句,并且在学习过程中逐步学会程序设计的基本方法。
这节课我们要学习两种语句,即赋值语句与输出语句。在语句学习之前我们要先了解一些pascal语言的基础知识。
一、常量、变量与算术表达式
(一)常量:在程序运行过程中,其值不能被改变的量称为常量。如123,145.88,'abc',true等。
1、整型常量:整型常量采用我们平常使用的十进制整数表示,包括正整数、负整数和零。如:138,0,-512等都是整型常量,而18.或18.0都不是整型常量。pascal中有一个标准标识符Maxint,它代表所使用的计算机系统允许的最大整型数,而最小的整型数即为-Maxint-1;Turbo Pascal还定义了长整数常量MaxLongInt,其值为2147483647。
注:计算机系统能表示的整型数的范围取决于其字长,如:现在大部分机器的字长字长为16,它们所能支持的整型数的范围为+215至-215-1,即-32768至+32767,这里涉及到有符号数和补码方面的知识;要想知道你所使用的计算机所能表示的整型数的范围,用这样的
这节课我们要学习两种语句,即赋值语句与输出语句。在语句学习之前我们要先了解一些pascal语言的基础知识。
一、常量、变量与算术表达式
(一)常量:在程序运行过程中,其值不能被改变的量称为常量。如123,145.88,'abc',true等。
1、整型常量:整型常量采用我们平常使用的十进制整数表示,包括正整数、负整数和零。如:138,0,-512等都是整型常量,而18.或18.0都不是整型常量。pascal中有一个标准标识符Maxint,它代表所使用的计算机系统允许的最大整型数,而最小的整型数即为-Maxint-1;Turbo Pascal还定义了长整数常量MaxLongInt,其值为2147483647。
注:计算机系统能表示的整型数的范围取决于其字长,如:现在大部分机器的字长字长为16,它们所能支持的整型数的范围为+215至-215-1,即-32768至+32767,这里涉及到有符号数和补码方面的知识;要想知道你所使用的计算机所能表示的整型数的范围,用这样的
语句就可以知道了:WRITE(-maxint-1,' ',maxint)
2、实型常量:包括正实数、负实数和实数零,其实就是常说的小数,pascal中表示实型常量的形式有两种。
⑴十进制表示法:这是人们日常使用的带小数点的表示方法,如0.0、-0.0、+5.61、-8.0、-6.050等都是实型常量,而0.、.37都不是合法的实数形式
⑵科学记数法:采用指数形式的表示方法,如1.25×105可表示成1.25E+05。在科学记数法中,字母"E"表示10这个"底数",而E之前为一个十进制表示的小数,称为尾数,E之后必须为一个整数,称为"指数"。如-1234.56E+26、+0.268E-5 、1E5是合法形式,而.34E12、2.E5、E5、E、1.2E+0.5都不是合法形式的实数。
无论实数是用十进制表示法还是科学表示法,它们在计算机内的表示形式是一样的,总是用浮点方式存储。
和整数相比,实数能表示的范围大得多,但值得注意的是实数的运算比整数的运算速度慢且无法像整数那样精确表示,只能近似表示。
3、字符常量:在Pascal语言中,字符常量是由单个字符组成,所有字符来自ASCII字符集,共有256个字符。在程序中,通常用一对单引号将单个字符括起来表示一个字符常量 ,
2、实型常量:包括正实数、负实数和实数零,其实就是常说的小数,pascal中表示实型常量的形式有两种。
⑴十进制表示法:这是人们日常使用的带小数点的表示方法,如0.0、-0.0、+5.61、-8.0、-6.050等都是实型常量,而0.、.37都不是合法的实数形式
⑵科学记数法:采用指数形式的表示方法,如1.25×105可表示成1.25E+05。在科学记数法中,字母"E"表示10这个"底数",而E之前为一个十进制表示的小数,称为尾数,E之后必须为一个整数,称为"指数"。如-1234.56E+26、+0.268E-5 、1E5是合法形式,而.34E12、2.E5、E5、E、1.2E+0.5都不是合法形式的实数。
无论实数是用十进制表示法还是科学表示法,它们在计算机内的表示形式是一样的,总是用浮点方式存储。
和整数相比,实数能表示的范围大得多,但值得注意的是实数的运算比整数的运算速度慢且无法像整数那样精确表示,只能近似表示。
3、字符常量:在Pascal语言中,字符常量是由单个字符组成,所有字符来自ASCII字符集,共有256个字符。在程序中,通常用一对单引号将单个字符括起来表示一个字符常量 ,
如:'a','A','0'等 ;特殊地,对于单引号字符,则要表示成''''。对于ASCII字符集中,按每个字符在字符集中的位置,将每个字符编号为0-255,编号称为对应字符的序号,因此字符也存在大小,如:'A'<'a'、'b'>'a'
4、布尔常量:布尔型常量仅有两个值,真和假,分别用标准常量名true和false表示 ,它们的序号分别为1和0。
5、符号常量:它是由程序员自己定义的,一个常量即可以直接用字面形式表示(称为直接常量, 如 124,156.8),也可以用一个标识符来代表一个常量,称为"符号常量"。但符号常量必须在程序中的说明部分定义,也就是说先定义,后使用。
定义符号常量的一般格式: CONST <常量标识符>=<常量>; 如:
CONST PI=3.1415926;
E=2.71828;
说明:常量说明部分以关键字const开头, 后面的标识符为常量标识符,其中"="号后的常量为整数、实数、字符、 字符串(字符串常量在后面章节中将作介绍) ;而且在常量说明部分可以将几个常量说明成符号常量,共用一个关键字"const",例如:
4、布尔常量:布尔型常量仅有两个值,真和假,分别用标准常量名true和false表示 ,它们的序号分别为1和0。
5、符号常量:它是由程序员自己定义的,一个常量即可以直接用字面形式表示(称为直接常量, 如 124,156.8),也可以用一个标识符来代表一个常量,称为"符号常量"。但符号常量必须在程序中的说明部分定义,也就是说先定义,后使用。
定义符号常量的一般格式: CONST <常量标识符>=<常量>; 如:
CONST PI=3.1415926;
E=2.71828;
说明:常量说明部分以关键字const开头, 后面的标识符为常量标识符,其中"="号后的常量为整数、实数、字符、 字符串(字符串常量在后面章节中将作介绍) ;而且在常量说明部分可以将几个常量说明成符号常量,共用一个关键字"const",例如:
则在本程序中pi和zero作为符号常量,分别代表实数3.14159和整数0;也就是说,常量说明部分既定义了常量名及其值,又隐含定义了常量的类型。
关于符号常量,应注意下列几点:
⑴、符号常量一经定义,在程序的执行部分就只能使用该常量标识符,而不能修改其值
⑵、使用符号常量比直接用数值更能体现"见名知义"的原则,也便于修改参数,故一个较好的程序中,应尽量使用符号常量,在执行部分基本上不出现直接常量。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论