信息学竞赛Pascal第一章预备知识.docx
- 文档编号:16052923
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:23
- 大小:117.46KB
信息学竞赛Pascal第一章预备知识.docx
《信息学竞赛Pascal第一章预备知识.docx》由会员分享,可在线阅读,更多相关《信息学竞赛Pascal第一章预备知识.docx(23页珍藏版)》请在冰点文库上搜索。
信息学竞赛Pascal第一章预备知识
第一章预备知识
一、概述
计算机语言是计算机软件中非常独特的一部份,它属于系统软件,但又和应用软件息息相关。
它的作用是:
使人类能够用某些命令、指令去让计算机为人类进行数值、逻辑运算。
计算机语言中,只有一种语言是计算机能自己识别的,就是最底层、最难的机器语言,这是一般人类所无法接受的语言,所以在此基础上,人们发展出了许多高级的语言,这些语言的共同特点是:
人类无需去掌握高深的机器语言,只要掌握这些更容易理解、更贴近人类的高级语言,用高级语言编出程序后,再由语言解释、编译系统去把程序解释、编译成机器语言让计算机去执行。
目前最常用的高级语言大致有以下几种:
BASIC语言:
是一般计算机入门者的首选语言,命令少,容易掌握,从BASIC,BASICA,GWBASIC,TRUEBASIC,TURBOBASIC,QUICKBASIC等一直发展到目前的VB.net。
PASCAL语言:
最适合科学计算、数据处理的语言,运行、编译速度最快,从PASCAL5.5,6.0,7.0一直到现在的DELPHI.net。
C语言:
主要适用于应用软件的开发,是计算机人员的必修课,但在算法实现、建模方面不如PASCAL方便。
从C,C++,一直到现在的VC.net。
在我们的信息学竞赛中,所有的题目都是非常复杂的数值与逻辑运算,所以世界上广泛采用PASCAL语言作编程工具,我们采用的是TURBOPASCAL7.0版本。
PASCAL语言的特点
以法国数学家命名的PASCAL语言是世界上使用最广泛,最有效的语言之一。
其主要特点是:
严格的结构化形式;丰富完备的数据类型;运行能力、效率高;查错能力强等等。
与BASIC、C等语言相比,PASCAL语言更适合科学计算,运行速度最快,编译能力也最强。
PASCAL语言是编译执行的语言(BASIC语言是解释执行),因此在速度与效率上都比BASIC语言提高了一个档次。
所谓解释执行,是在程序环境下编写好程序后,执行它时是一句一句地由语言解释器翻译成机器语言,由计算机去执行,计算机能在程序编辑时就发现程序中错误;而编译执行是在程序环境中编写好程序后,执行时先由编译器把整个程序编译成机器语言,然后再由计算机执行,计算机必须在编译程序时才能发现程序中的错误。
二、编程环境
一、Pascal的启动
装有TurboPascal的目录中,双击turbo.exe。
在桌面上或程序组中双击turbo图标。
常用命令的快捷方式
1.F3:
打开文件
2.Alt+F3:
关闭一个文件
3.F2:
存储
4.F6:
切换一个窗口
5.Ctrl+Insert:
复制
6.Shift+Del:
剪切
7.Shift+Insert:
粘贴
8.Ctrl+Y:
删除一行
9.Alt+Backspace:
撤消
一个PASCAL程序
∙进入编辑状态:
选择菜单[FILE][OPEN](今后涉及到菜单调用时,均以此格式表示,即选择FILE菜单中的OPEN功能)功能,打开一个程序文件,在输入文件名时,输入文件的主名即可进入程序编辑状态。
这时可用编辑功能健:
光标键:
用以上下左右移动光标位置;
INSERT:
插入/改写状态切换;
TAB;光标跳至下一制表位;
CAPSLOCK:
大小写切换;
DELETE:
删除光标位一字符;
BACKSPACE:
删除光标前一字符;
CTRL+Y:
删除光标处一行;
HOME:
光标跳至行首;
END:
光标跳至行未;
PAGEUP:
上翻一页;
PAGEDOWN:
下翻一页;
ENTER:
回车/换行;
∙编辑一个PASCAL程序:
输出一句话的小程序:
programQ1;
begin
writeln(‘YouarewelcometothePASCALworld!
’);
readln;
end.
请在编辑状态下编辑输入上述程序,第一行为程序开头,程序名;第二行BEGIN表示程序开始,最后一行END表示程序结束;WRITELN()语句把括号中单引号中的的字符打印在屏幕上;READLN语句等待用户敲回车键结束程序。
记住,一般每行以分号“;”结束,但END后以句号“.”结束,而BEGIN后没有标点符号。
即:
除BEGIN外,每一句PASCAL语句后均有分号或句号,只有程序的最后一个END后才用句号,而其它任何行未都是分号!
!
!
∙在集成环境中运行程序:
上述程序[例1、1]编辑好后,如果要运行,只需选择菜单[RUN][RUN]命令(或CRTL+F9),如果程序正确的,就会在屏幕(这个屏幕叫程序输出屏幕)上显示:
YouarewelcometothePASCALworld!
然后我们按回车键,就能又回到集成环境中。
这时如果还想查看刚才的屏幕显示,只需选择菜单[RUN][USERSCREEN](或ALT+F5),就又能到输出屏幕,敲任意键又回到集成环境中。
如果程度出错,则程序没有被运行完就会回到集成环境中,并且光标停在错误的这一行,在编辑窗口中的第一行还会显示出错信息,如:
Run-timeerror错误代码at错误发生地址
∙保存文件
把当前编辑的程序文件以当前名存盘,只需运行菜单命令[FILE][SAVE](或F2),即可。
∙关闭当前文件
当前文件不想现在再编辑了,可把它关闭掉,即运行菜单命令[WINDOWS][CLOSE](或ALT+F3),即可。
∙打开已有文件
欲打开一个已经存在的程序文件,运行菜单命令[FILE][OPEN](或F3),再按TAB键去选择或不按TAB键而直接输入文件名即可。
∙练习
在集成环境中输入以下程序,程序的作用是计算圆的面积,圆的半径由用户从键盘输入,编辑运行正确后请存盘:
programarea_of_cicle;
constpi=3.1416;
vars:
real;
r:
integer;
begin
writeln(‘Pleaseinputradius:
’);
readln(r);
s:
=pi*r*r;
writeln(‘s=’,s);
readln;
end.
运行举例:
Pleaseinputradius:
5
s=7.854000000E+01
三、程序的基本结构
programarea_of_cicle;
constpi=3.1416;
vars:
real;
r:
integer;
begin
writeln(‘Pleaseinputradius:
’);
readln(r);
s:
=pi*r*r;
writeln(‘s=’,s);
readln;
end.
每一个PASCAL程序都由程序头部和程序主体组成,最后以“end.”作为整个程序的结束。
程序头部
程序头部毫无疑问是在程序的开头位置,以“program”这个词开始(但经常省略这一),以第一个BEGIN的前一行结束,中间每行后均有分号。
以CONST为开始的部分是说明程序中要用到的常量,以VAR为开始的部分是说明程序中要用到的变量。
即程序中要用到的所有的常量及变量,我们必需在程序首部加以说明其名称及类型。
这些我们将在稍后讲到。
程序主体
以第一个BEGIN开始,以最后一个END结束,中间即为程序命令行,每一行均以分号结束!
二、Pascal用到的数和符号
1、PASCAL语言的字符表
是ASCII字符集,主要有:
⑴26个英文字母(不分大小写)
⑵十个数字符号
⑶特殊符号。
如+-*/=><][:
;.等
2、标识符
以字母开头的字母数字序列(大小写等效,可跟下划线_),用来标识常量、变量、程序、函数等。
自定义标识符时要注意遵循此规则。
3、标准标识符与保留字
标准标识符有40个,五类(falsetruemaxintBooleanrealintegercharabstruncreadwrite)详见书P16。
保留字是Pascal语言中具有特定的含义的字符。
在PASCAL7.0中书写保留字的时候,字符颜色会变为白色。
一共36个保留字:
(programfunctionbeginendprocedurevarconstarrayifthenelsecasefortodorepeatuntilwhileanddivinmodnotornil
4、常量和变量:
程序设计中经常要用到常量和变量,这些都必须先定义后才能使用。
PASCAL语言的常量与变量都必须在程序头部先加以说明,即说明常量、变量的的名称及数据类型。
PASCAL语言的数据类型很多,最常用的有以下几种:
∙整数类型(没有小数部分)
INTEGER:
取值范围[-32768,32767]。
占用内存2个字节(16位)。
WORD:
取值范围[0,65535]。
占用内存2个字节(16位)。
BYTE:
取值范围[0,255]。
占用内存1个字节(8位)。
LONGINT:
取值范围[-2147483648,2147483647]。
占用内存4个字节(32位)。
SHORTINT:
取值范围[-128,127]。
占用内存1个字节(8位)。
特点:
1.可进行+、-、*、DIV(整除)、MOD(取余)
2.注意不能用/,因为得到的结果可能不为整型。
∙实数类型
REAL:
取值范围[2.9E-39,1.7E+38]。
占用内存6个字节(48位)。
实数的表示法有两种:
1、十进制表示法,如:
-0.4576,123.567,-234,0
2、科学计数法,如:
1.234E-4,-3.546E12
表示1.234乘10的负4次.方;-3.546乘10的12次方。
特点:
1.包括正实数、负实数和零。
运算慢,无法精确表示。
2.可进行+、-、*、/运算。
整数与实数运算时自动转为实数进行运算。
∙字符类型
CHAR:
单字符型,即取1个字符,如‘A’,‘1’。
STRING:
字符串型,即多个字符,如‘ABCD!
123’,‘%¥#DS12’。
如果一个常/变量只要用到1个字符,则可把它定义成CHAR型;如果是多个字符,但不知确切多少个,则定义成STRING型,如果知道确切有N个字符,则定义成STRING[N]型。
字符串在PASCAL中使用都是加上单引号。
特点:
1.字符常/变量是由单个字符组成的,所有字符都来自ASCII字符集。
字符的数据是用两个单引号把单个字符括起来表示的。
2.每个字符都有一个序值(在ASCII字符集的位置),可以用六个关系运算符(>,=,<,>=,<=,!
=)来比较大小。
∙布尔型
BOOLEAN:
布尔型即为逻辑型,取值为TRUE、FALSE,即真、假。
也有序,true为1,false为0。
布尔型有三个运算符:
andornot
常量:
指程序运行过程中,其值不能改变的量。
在程序头部中说明,以CONST引导。
分为四类:
⑴整型常量
⑵实型常量
⑶字符常量
⑷布尔型常量
格式:
const<常量标识符>=<常量>;
例:
constpi:
=3.14;
变量:
是指在程序执行过程中,其值可以改变的量。
在程序头部中加以说明,以VAR引导。
变量三要素:
变量名、变量类型、变量值。
⑴变量名用一个合法的标识符来表示。
⑵变量在某一固定时刻是用来存放常量的,而常量是有类型的数据,因而变量也是有类型的。
类型不能有两义性。
⑶变量值。
在程序中由赋值语句来赋值。
var<变量标识符列表>:
<类型>;
例:
vara,b:
integer;c,d:
real;
5、表达式
由算术运算符(+,—,*,/)及数字、常量、变量、标准函数所组成的式子中心表达式。
如:
5+9;A*B-34*ABS(-34)/INT(B)
另外,PASCAL中有两个很有用的运算符,DIV:
求商的整数值;MOD:
求余数。
如:
8DIV3的值是2,10DIV3的值是3;
8MOD3的值是2,10MOD3的值是1;
在PASCAL的表达式中,不允许出现我们日常生活中的那种分式或根号等式子,我们必须按照PASCAL的语法把它们改写成PASCAL表达式。
Pascal语言中的运算符及其优先级
单目运算符(最高优先级)
@
取变量或函数的地址(返回一个指针)
not
逻辑取反或按位取反
乘除及按位运算符
*
相乘或集合交集
/
浮点相除
div
整数相除
mod
取模(整数相除的余数)
as
程序运行阶段类型转换(RTTI运算符)
and
逻辑或按位求和
shl
按位左移
shr
按位右移
加减运算符
+
相加、集合并集、字符串连接或指针增加一个偏移量
-
相减、集合差集或指针减少一个偏移量
or
逻辑或按位或运算
xor
逻辑或按位异或运算
关系及比较运算符(最低优先级)
=
判断是否相等
<>
判断是否不相等
<
判断是否小于
>
判断是否大于
<=
判断是否小于或等于,或是否是一个集合的子集
>=
判断是否大于或等于,或是否是一个集合的父集
in
判断是否是集合成员
is
判断对象是否类型兼容(又一个RTTI运算符)
具体优先顺序:
⑴括号内先算
⑵函数
⑶运算符优先顺序
⑷同级运算按从左到右的次序。
注意:
1、与大多数编程语言相反,Pascal语言中and和or运算符的优先级比关系运算符高。
因此,如果你的代码为a 为此你应该把每个<表达式用小括号括起来: (a 2、同一种运算符用于不同数据类型时它的作用不同。 例如,运算符+可以计算两个数字的和、连接两个字符串、求两个集合的并集、甚至给PChar指针加一个偏移量。 然而,你不能象在C语言中那样将两个字符相加。 3、另一个特殊的运算符是div。 在Pascal中,你能用/计算两个数字(实数或整数)的商,而且你总能得到一个实型结果。 如果计算两个整数的商并想要一个整型结果,那么就需要用div运算符。 例如: 把下列算式改写成PASCAL表达式: 改写为PASCAL表达式为: (x*x+3*y-5*(z-2))/(x-y*y) 从上例中可以看出: ∙运算符两端,除实型和整数型外不允许为两种不同的数据类型。 ∙PASCAL表达式中没有分式,只能以除号“/”来隔开; ∙PASCAL表达式中的分子与分母应该用括号括开; ∙PASCAL表达式中只有小括号,不能有中括号或大括号,小括号可以有很多层; ∙PASCAL表达式中没有乘幂,只能用乘法来表达; ∙PASCAL*表达式中任意两个常量、变量、数值、括号、函数之间都必须不能缺省运算符,即乘号必不可少; 这些要求希望大家记熟,这是我们编写PASCAL程序的必要基础。 表达式的数据类型根据它的值来划分。 (所以表达式分为算术表达式、字符表达式、布尔表达式) 6、标准函数的使用。 PASCAL语言提供数量非常大的标准函数供我们使用,这些函数有些可以直接调用,有些放在另外的单元(UNIT)中。 PASCAL也提供了大量的标准过程,和标准函数一样供用户直接或间接调用。 如果一个函数或过程不在SYSTEM(即默认调用的单元)中,而在其它单元中话,即在程序头部的第一行正式行中加上USES单元名;如,如果要使用CLRSCR(清屏过程,在DOS单元中)的话,就必须在程序头部加上: USESDOS; 函数的调用: 如: A: =ABS(-34),即把-34的绝对值赋给变量A;(注意: 函数只能出现在表达式中,即赋值语句中)。 此时: A的数据类型与括号中的参数-34是一致的。 函数的语法中都会说明,这个函数的参数的类型及这个函数的值(结果)的类型。 过程的调用: 过程即命令,如: CLRACR;程序运行结果是清屏。 常用标准函数与过程很多,这里只列出最常用的几个。 标准函数 函数名 语法 说明 Abs Abs(r: real/integer): real/integer 返回参数R的绝对值,类型与参数相同 Chr chr(i: integer): char 返回参数所对应的ASCII码值,类型为CHAR Copy Copy(s: string;n,m: integer): string 返回字串S的第N个字符开始的M个字符 Cos Cos(r: real): real 返回参数R的余弦值 Exp Exp(r: real): real 返回参数R的以e为底的幂 Int Int(r: real): real 返回参数R的整数部分,返回的值是实数类型 Length Length(s: string): integer 返回字串S的长度 Ln Ln(r: real): real 返回参数R的自然对数 odd Odd(I: integer): boolean 判断参数I是否奇数,如是,则返回TRUE ord Ord(s: scalar): integer 返回任意有序量的序值 random Random 返回0至于间的任意一个小数(随机数) round Round(r: real): longint 返回参数R的四舍五入取整值 sin Sin(r: real): real 返回参数R的正弦值 sqrt sqrt(r: real): real 返回参数R的平方根 trunc Trunc(r: real): integer 返回参数R的整数部分,返回的值是整数类型 标准过程 过程名 语法 说明 Delay(CRT单元) Delay(ms: word) 延迟发声MS毫秒 Delete Delete(s: string;n,m: integer) 把串S中的第N个字符开始的M个字符删除 Exit Exit 从当前执行的程序中退出 Gotoxy(CRT单元) Gotoxy(x,y: integer) 把光标定位到第X列Y行处 halt Halt 中断程序的运行 nosound Nosound 关闭机器喇叭 Sound(CRT单元) Sound(f: word) 让机器喇叭发出频率为F的声音,直到nosound str Str(I: integer;vars: string) 把数值I转换为字符串S val Val(s: string;varr: real;varc: word) 把字符串S转换为数值R,并返回错误代码C 练习题: 一、判断以下标识符的合法性: a3 3a a17 abcd ex9.5 α β λ 二、将下列的数学表达式改写成PASCAL表达式: b^2-4ac 三、求下列表达式的值: 20mod19 15mod9 7div8 19div3 (4>5) and (7<8) (8>9) or (9<10) 2 and ((3=3) or (3<7)) 31div(5mod2) 31div5mod2 31/5div2 四、把下列算式改写为PASCAL表达式: 四、程序的调试 调试PASCAL程序 任何一个天才都不敢说,他编的程序是100%正确的。 几乎每一个稍微复杂一点的程序都必须经过反复的调试,修改,最终才完成。 所以说,程序的调试是编程中的一项重要技术。 PASCAL语言提供了很强大的调试功能,使我们能很方便的找出程序的错误。 程序错误: ∙编译错误: 即语法错误。 如: 命令错写,少分号等等。 此种错误在程序编译执行就能发现,而把光标停留在错误行上,并显示出错误信息,由用户修改。 ∙运行错误: 如果没有语法错误。 则程序可以运行,但在运行过程中也有可能出现错误,如程序结构不合理,打印语句错误等。 此时,程序将中止运行,光标停留在错误语句处,并显示错误信息,等待用户修改。 ∙逻辑错误: 如: 程序递归出口设置不正确,逻辑判断设置错误,这样程序虽然能够正常运行,但运行结果却不正确,这是用户最难发现有错误,也是最难查找的错误,此时计算机也无任何错误信息。 TURBOPASCAL的集成调试器 在TURBOPASCAL语言集成环境中,我们可以非常方便地调试程序。 ∙暂停(CTRL+BREAK): 在程序运行过程中,我们可用CTRL+BREAK暂停程序的运行,此时集成环境会在当前运行到的语句上设置一条光带,表示程序可继续运行。 此时,如果要程序继续执行(接着刚刚中断的语句),可用CTRL+F9(即RUN功能)继续运行程序;如果不需程序继续运行,可用CTRL+F2清除光带并复位,这样程序将不能被继续运行。 ∙跟踪(F7): 菜单RUN|TRACEINTO功能能够逐步运行程序,即使在过程中也能逐步运行。 ∙跟踪(F8): 菜单RUN|STEP功能能够使我们逐段运行程序,即子程序中的语句将不会逐步执行。 ∙执行到光标处(F4): 把光标移到要执行到的语句行,再用F4(菜单RUN|GOTOCRUSOR)可让程序执行到该行暂停。 ∙断点: 我们可用DEBUG|BREAKPOINT功能在光标处行设置程序断点,这样,当程序运行到这里时将自动暂停。 清除断点也用此功能。 ∙查看变量或表达式值(CTRL+F4): 我们可以在程序未运行、运行暂停、运行结束后用此功能查看变量或表达式的值。 ∙设置动态变量查看(CTRL+F7): 我们可用此功能打开WATCH窗口,在此窗口中增加要查看的变量,这样,我们在用F7或F8或在程序暂停时,就能在此窗口中看到要查看的变量的值。 ∙集成环境中的窗口操作: TURBOPASCAL语言是类似WINDOWS的,也可提供多窗口操作。 如: 用F3功能打开一个文件,再用F3功能打开一个文件,这时,我们就打开了两个窗口。 此时,可用F6在各个窗口之间切换;用ALT+F3可把当前窗口关闭;用CTRL+F5可进入改变窗口大小、位置状态,此时,可用光标键上下左右移动当前窗口,也可用SHIFT+光标键来改变窗口大小。 这样,我们就能在屏幕上同时看到文件窗口、WATCH窗口、OUTPUT窗口等。 ∙记录文件运行编译环境(CTR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息学 竞赛 Pascal 第一章 预备 知识