信息学竞赛Pascal第一章预备知识_第1页
信息学竞赛Pascal第一章预备知识_第2页
信息学竞赛Pascal第一章预备知识_第3页
信息学竞赛Pascal第一章预备知识_第4页
信息学竞赛Pascal第一章预备知识_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章 预备知识一、概述计算机语言是计算机软件中非常独特的一部份,它属于系统软件,但又和应用软件息息相关。它的作用是:使人类能够用某些命令、指令去让计算机为人类进行数值、逻辑运算。计算机语言中,只有一种语言是计算机能自己识别的,就是最底层、最难的机器语言,这是一般人类所无法接受的语言,所以在此基础上,人们发展出了许多高级的语言,这些语言的共同特点是:人类无需去掌握高深的机器语言,只要掌握这些更容易理解、更贴近人类的高级语言,用高级语言编出程序后,再由语言解释、编译系统去把程序解释、编译成机器语言让计算机去执行。目前最常用的高级语言大致有以下几种:BASIC语言:是一般计算机入门者的首选语言,命

2、令少,容易掌握,从 BASIC, BASICA, GWBASIC, TRUE BASIC, TURBO BASIC, QUICK BASIC等一直发展到目前的 VB.net。PASCAL语言:最适合科学计算、数据处理的语言,运行、编译速度最快,从 PASCAL 5 .5, 6.0, 7.0一直到现在的 DELPHI.net 。C语言:主要适用于应用软件的开发,是计算机人员的必修课,但在算法实现、建模方面不如 PASCAL方便。从 C, C+,一直到现在的 VC .net。在我们的信息学竞赛中,所有的题目都是非常复杂的数值与逻辑运算,所以世界上广泛采用 PASCAL语言作编程工具,我们采用的是

3、TURBO PASCAL 7.0版本。 PASCAL语言的特点 以法国数学家命名的 PASCAL语言是世界上使用最广泛,最有效的语言之一。其主要特点是:严格的结构化形式;丰富完备的数据类型;运行能力、效率高;查错能力强等等。与 BASIC、 C等语言相比, PASCAL语言更适合科学计算,运行速度最快,编译能力也最强。PASCAL语言是编译执行的语言( BASIC语言是解释执行),因此在速度与效率上都比 BASIC语言提高了一个档次。所谓解释执行,是在程序环境下编写好程序后,执行它时是一句一句地由语言解释器翻译成机器语言,由计算机去执行,计算机能在程序编辑时就发现程序中错误;而编译执行是在程序

4、环境中编写好程序后,执行时先由编译器把整个程序编译成机器语言,然后再由计算机执行,计算机必须在编译程序时才能发现程序中的错误。二、编程环境一、Pascal的启动 装有Turbo Pascal的目录中,双击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程序   进入编

5、辑状态: 选择菜单 FILEOPEN(今后涉及到菜单调用时,均以此格式表示,即选择 FILE菜单中的 OPEN功能)功能,打开一个程序文件,在输入文件名时,输入文件的主名即可进入程序编辑状态。这时可用编辑功能健:光标键:用以上下左右移动光标位置;INSERT:插入 /改写状态切换;TAB;光标跳至下一制表位;CAPSLOCK:大小写切换;DELETE:删除光标位一字符;BACKSPACE:删除光标前一字符;CTRL+Y:删除光标处一行;HOME:光标跳至行首;END:光标跳至行未;PAGEUP:上翻一页;PAGEDOWN:下翻一页;ENTER:回车 /换行;  编辑一个 PASCAL

6、程序: 输出一句话的小程序:program Q1;beginwriteln( You are welcome to the PASCAL world ! ;readln;end.请在编辑状态下编辑输入上述程序,第一行为程序开头,程序名;第二行 BEGIN表示程序开始,最后一行 END表示程序结束; WRITELN()语句把括号中单引号中的的字符打印在屏幕上; READLN语句等待用户敲回车键结束程序。记住,一般每行以分号“;”结束,但 END后以句号“ .”结束,而 BEGIN后没有标点符号。即:除 BEGIN外,每一句 PASCAL语句后均有分号或句号,只有程序的最后一个 END后才用句号,

7、而其它任何行未都是分号!  在集成环境中运行程序: 上述程序 例 1、 1编辑好后,如果要运行,只需选择菜单 RUNRUN命令(或 CRTL+F9),如果程序正确的,就会在屏幕(这个屏幕叫程序输出屏幕)上显示:You are welcome to the PASCAL world !然后我们按回车键,就能又回到集成环境中。这时如果还想查看刚才的屏幕显示,只需选择菜单 RUNUSER SCREEN(或 ALT+F5),就又能到输出屏幕,敲任意键又回到集成环境中。如果程度出错,则程序没有被运行完就会回到集成环境中,并且光标停在错误的这一行,在编辑窗口中的第一行还会显示出错信息,如:Run

8、-time error 错误代码 at 错误发生地址  保存文件 把当前编辑的程序文件以当前名存盘,只需运行菜单命令 FILESAVE(或 F2),即可。  关闭当前文件 当前文件不想现在再编辑了,可把它关闭掉,即运行菜单命令 WINDOWSCLOSE(或 ALT+F3),即可。  打开已有文件 欲打开一个已经存在的程序文件,运行菜单命令 FILEOPEN(或 F3),再按 TAB键去选择或不按 TAB键而直接输入文件名即可。  练习 在集成环境中输入以下程序,程序的作用是计算圆的面积,圆的半径由用户从键盘输入,编辑运行正确后请存盘:program ar

9、ea_of_cicle;const pi=3.1416;var s:real;r:integer;beginwriteln(Please input radius :;readln(r;s:=pi*r*r;writeln(s=,s;readln;end.运行举例:Please input radius:5s=7.854000000E+01三、程序的基本结构program area_of_cicle;const pi=3.1416;var s:real;r:integer;beginwriteln(Please input radius :;readln(r;s:=pi*r*r;writeln(

10、s=,s;readln;end.每一个 PASCAL程序都由程序头部和程序主体组成,最后以“ end.”作为整个程序的结束。 程序头部程序头部毫无疑问是在程序的开头位置,以“ program”这个词开始(但经常省略这一),以第一个 BEGIN的前一行结束,中间每行后均有分号。以 CONST为开始的部分是说明程序中要用到的常量,以 VAR为开始的部分是说明程序中要用到的变量。即程序中要用到的所有的常量及变量,我们必需在程序首部加以说明其名称及类型。这些我们将在稍后讲到。程序主体以第一个 BEGIN开始,以最后一个 END结束,中间即为程序命令行,每一行均以分号结束!二、Pascal用到的数和符号

11、1、PASCAL语言的字符表是ASCII字符集,主要有:26个英文字母(不分大小写十个数字符号特殊符号。如+-*/=><:;等2、标识符以字母开头的字母数字序列(大小写等效,可跟下划线_,用来标识常量、变量、程序、函数等。自定义标识符时要注意遵循此规则。3、标准标识符与保留字标准标识符有40个,五类(false true maxint Boolean real integer char abs trunc read write详见书P16。保留字是Pascal语言中具有特定的含义的字符。在PASCAL7.0中书写保留字的时候,字符颜色会变为白色。一共36个保留字:(program

12、function begin end procedure var const array if then else case for to do repeat until while and div in mod not or nil4、常量和变量:程序设计中经常要用到常量和变量,这些都必须先定义后才能使用。PASCAL语言的常量与变量都必须在程序头部先加以说明,即说明常量、变量的的名称及数据类型。PASCAL语言的数据类型很多,最常用的有以下几种: 整数类型(没有小数部分) INTEGER:取值范围 -32768, 32767。占用内存 2个字节( 16位)。WORD:取值范围 0, 655

13、35。占用内存 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, 02、科学计数法,

14、如: 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个字符,则定义成 STRINGN型。字符串在 PASCAL中使

15、用都是加上单引号。特点:1. 字符常 /变量是由单个字符组成的,所有字符都来自ASCII字符集。字符的数据是用两个单引号把单个字符括起来表示的。 2. 每个字符都有一个序值(在ASCII字符集的位置,可以用六个关系运算符(,!)来比较大小。 布尔型 BOOLEAN:布尔型即为逻辑型,取值为 TRUE、 FALSE, 即真、假。也有序,true 为1,false为0。布尔型有三个运算符:and or not 常量:指程序运行过程中,其值不能改变的量。 在程序头部中说明,以 CONST引导。分为四类:整型常量实型常量字符常量布尔型常量格式: const <常量标识符>=<

16、;常量> 例:const pi:=3.14;变量:是指在程序执行过程中,其值可以改变的量。 在程序头部中加以说明,以 VAR引导。变量三要素:变量名、变量类型、变量值。变量名用一个合法的标识符来表示。变量在某一固定时刻是用来存放常量的,而常量是有类型的数据,因而变量也是有类型的。类型不能有两义性。变量值。在程序中由赋值语句来赋值。var <变量标识符列表>:<类型> 例:var a,b:integer; c,d:real;5、表达式由算术运算符( +, *, /)及数字、常量、变量、标准函数所组成的式子中心表达式。如: 5+9; A*B-34*ABS( -34)

17、/INT( B)另外, PASCAL中有两个很有用的运算符, DIV:求商的整数值; MOD:求余数。如:8 DIV 3 的值是 2, 10 DIV 3 的值是 3;8 MOD 3的值是 2, 10 MOD 3的值是 1;在 PASCAL的表达式中,不允许出现我们日常生活中的那种分式或根号等式子,我们必须按照 PASCAL的语法把它们改写成 PASCAL表达式。Pascalspan语言中的运算符及其优先级 浮点模式。除了 real >3.布尔型判断是否大于和 true ,并且 <= 的序号是 0 , true 的序号是 1 。 false 和 true 都是预定义常数表识符,分别表

18、示逻辑假和逻辑真。并且 true 。 boolean 是布尔型的表识符。 4.字符型字符型用char作为表识符。字符型必须用单引号括起来,字母作为字符型时,大小写是不等价的,并且字符型只允许单引号中有一个字符,否则就是字符串。2.4 常量与变量1.常量判断是否是集合成员常量:在某个程序的整个过程中其值不变的量。 常量定义:常量定义出现在说明部分。它的语法格式是:const(又一个>.<常量标识符>=<常量>常量表识符的类型由定义它的常量的类型决定。例如:const a=12 隐含说明a是整型;const r=3.21 隐含说明r是实型同级运算按从左到右的次序。(3

19、常量定义部分必须以保留字const开头,可以包含一个或几个常量定义,而且每个常量均以分号结束。(4Turbo Pascal类型常量类型常量,又称变量常数,它是Turbo Pascal的一个扩充特性。类型常量的定义与标准Pascal规定的常数定义和变量说明有所区别。类型常量定义的语法格式:const<简单类型常量标识符>:简单类型=常数;例如:constcounter:integer=0;flag:boolean=true;index:0.100=0;2.变量(1变量:在某个程序中的运行过程中其值可以发生改变的量(2变量说明:变脸说明出现在说明部分。它的语法格式是:var<变量

20、标识符列表 .< PASCAL表达式为: (x*x+3*y-5*(z-2/(x-y*y> 运算符两端,除实型和整数型外不允许为两种不同的数据类型。 vara,b,c:integer;m,n:real;2.5标准函数 1.算术函数 PASCAL表达式中只有小括号,不能有中括号或大括号,小括号可以有很多层;exp 指数 frac 小数部分 PASCAL*整数部分 ln 自然对数 pi 表达式的数据类型根据它的值来划分。(所以表达式分为算术表达式、字符表达式、布尔表达式span单目运算符 (span最高优先级取变量或函数的地址(返回一个指针not逻辑取反或按位取反乘除及按位运算符*相乘或

21、集合交集/浮点相除div整数相除mod取模 (整数相除的余数as程序运行阶段类型转换 (RTTI运算符and逻辑或按位求和shl按位左移shr按位右移加减运算符+相加、集合并集、字符串连接或指针增加一个偏移量-相减、集合差集或指针减少一个偏移量or逻辑或按位或运算xor逻辑或按位异或运算关系及比较运算符(最低优先级= 有效位数 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 extended 3.4e-4932.1.1e4932 10 19.20 comp -2*63

22、+1.2*63-1 8 19.20 Turbo Pascal判断是否小于6、标准函数的使用。PASCAL语言提供数量非常大的标准函数供我们使用,这些函数有些可以直接调用,有些放在另外的单元( UNIT)中。 PASCAL也提供了大量的标准过程,和标准函数一样供用户直接或间接调用。如果一个函数或过程不在 SYSTEM(即默认调用的单元)中,而在其它单元中话,即在程序头部的第一行正式行中加上 USES 单元名;如,如果要使用 CLRSCR(清屏过程,在 DOS单元中)的话,就必须在程序头部加上: USES DOS;函数的调用:如: A: =ABS( -34),即把 -34的绝对值赋给变量 A;(注

23、意:函数只能出现在表达式中,即赋值语句中)。此时: 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:

24、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

25、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 Ex

26、it 从当前执行的程序中退出 Gotoxy (CRT 单元 Gotoxy(x,y:integer 把光标定位到第 X列 Y行处 halt Halt 中断程序的运行 nosound Nosound 关闭机器喇叭 Sound (CRT 单元 Sound(f:word 让机器喇叭发出频率为 F的声音,直到 nosound str Str(I:integer;var s:string 把数值 I转换为字符串 S val Val(s:string;var r:real;var c:word 把字符串 S转换为数值 R,并返回错误代码 C 练习题: 一、判断以下标识符的合法性: a3 3a a17 abc

27、d ex9.5 二、将下列的数学表达式改写成PASCAL表达式: b2-4ac 三、求下列表达式的值: 20 mod 19 15 mod 9 7 div 8 19 div 3 (4>5 and (7<8 (8>9 or( 9<10 2 and (3=3 or (3<731 div (5 mod 2 31 div 5 mod 2 31 /5 div 2 四、把下列算式改写为 PASCAL表达式:四、程序的调试调试 PASCAL程序 任何一个天才都不敢说,他编的程序是100%正确的。几乎每一个稍微复杂一点的程序都必须经过反复的调试,修改,最终才完成。所以说,程序的调试

28、是编程中的一项重要技术。PASCAL语言提供了很强大的调试功能,使我们能很方便的找出程序的错误。程序错误: 编译错误:即语法错误。如:命令错写,少分号等等。此种错误在程序编译执行就能发现,而把光标停留在错误行上,并显示出错误信息,由用户修改。 运行错误:如果没有语法错误。则程序可以运行,但在运行过程中也有可能出现错误,如程序结构不合理,打印语句错误等。此时,程序将中止运行,光标停留在错误语句处,并显示错误信息,等待用户修改。 逻辑错误:如:程序递归出口设置不正确,逻辑判断设置错误,这样程序虽然能够正常运行,但运行结果却不正确,这是用户最难发现有错误,也是最难查找的错误,此时计算机也无任何错误信

29、息。 TURBO PASCAL的集成调试器 在 TURBO PASCAL语言集成环境中,我们可以非常方便地调试程序。 暂停( CTRL+BREAK):在程序运行过程中,我们可用 CTRL+BREAK暂停程序的运行,此时集成环境会在当前运行到的语句上设置一条光带,表示程序可继续运行。此时,如果要程序继续执行(接着刚刚中断的语句),可用 CTRL+F9(即 RUN功能)继续运行程序;如果不需程序继续运行,可用 CTRL+F2清除光带并复位,这样程序将不能被继续运行。 跟踪( F7):菜单 RUN|TRACE INTO功能能够逐步运行程序,即使在过程中也能逐步运行。 跟踪( F8):菜单 RUN|S

30、TEP功能能够使我们逐段运行程序,即子程序中的语句将不会逐步执行。 执行到光标处( F4):把光标移到要执行到的语句行,再用 F4(菜单 RUN|GOTO CRUSOR)可让程序执行到该行暂停。 断点:我们可用 DEBUG|BREAKPOINT功能在光标处行设置程序断点,这样,当程序运行到这里时将自动暂停。清除断点也用此功能。 查看变量或表达式值( CTRL+F4):我们可以在程序未运行、运行暂停、运行结束后用此功能查看变量或表达式的值。 设置动态变量查看( CTRL+F7):我们可用此功能打开 WATCH窗口,在此窗口中增加要查看的变量,这样,我们在用 F7或 F8或在程序暂停时,就能在此窗

31、口中看到要查看的变量的值。 集成环境中的窗口操作: TURBO PASCAL语言是类似 WINDOWS的,也可提供多窗口操作。如:用 F3功能打开一个文件,再用 F3功能打开一个文件,这时,我们就打开了两个窗口。此时,可用 F6在各个窗口之间切换;用 ALT+F3可把当前窗口关闭;用 CTRL+F5可进入改变窗口大小、位置状态,此时,可用光标键上下左右移动当前窗口,也可用 SHIFT+光标键来改变窗口大小。这样,我们就能在屏幕上同时看到文件窗口、 WATCH窗口、 OUTPUT窗口等。 记录文件运行编译环境( CTRL+OO):因为 PASCAL语言是在集成环境中来运行程序,而各台计算机的集成

32、环境设置有可能不同,这样就使得一个文件在一台机器上运行正常,而在另一台机器上运行不正常或不能运行。所以,我们一般都会在程序的 第一行用 CTRL+OO键来记录下当前的程序运行环境,这此在屏幕当前行会出现两行语句,都是用“ ”括住,以“ $”引导,尤其是第二行是非常重要的,如: $16384, 0, 655350;是指程序中允许最多打开 16384个栈,这如果是在做一些搜索问题时是不够的,所以我们都会把它改成最大的数值: 65520,请大家记住这个数值,这是 PASCAL语言允许打开的最大栈数。 我们先编一个比较简单的程序,看看程序是如何调试的。 program tiaoshi;var i:integer;beginfor i:=1 to 300 dobeginif i mod 2 = 0 thenif i mod 3 = 0 thenif i mod 5 = 0 thenwriteln(i; end;end. 该程序是输出300以内同时能被2,3,5整除的整数。 现在我们开始调试。 调试有多种方法,先介绍一种,权且叫步骤法,步骤法就是模拟计算机的运算,把程序每一步执

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论