1、Pascal 程序设计基础,第 一 课 信息学奥林匹克介绍、PASCAL简介、TP7环境,信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查参赛选手的智力和使用计算机编程解题的能力。信息学奥林匹克竞赛要求参赛选手有如下能力:针对竞赛题目中的要求构建数学模型,构造出有效的算法和选用相应的数据结构,写出高级语言程序,上机调试通过。程序设计是信息学奥林匹克竞赛的基本功,因此,青少年参与竞赛活动的第一步是必须掌握一门高级语言及其程序设计方法。,以纪念法国数学家而命名的Pascal语言是使用最广泛的计算机高级语言之一,被国际上公认为程序设计教学语言的典范。其主要特点有:严格的结构化形式;丰富完备的数据
2、类型;运行效率高;查错能力强。正因为这些特点,Pascal语言可以被方便地用于描述各种数据结构和算法,编写出高质量的程序。尤其是对于青少年程序设计初学者,Pascal语言有利于顺利入门,有益于从一开始培养良好的程序设计风格和习惯,越来越多的各类学校都把Pascal语言作为程序设计教学的第一语言。IOI(国际奥林匹克信息学竞赛)把Pascal语言规定为两种程序设计语言之一,NOI(全国信息学奥林匹克竞赛)把Pascal语言定为唯一提倡的程序设计语言,NOIp(全国信息学奥林匹克联赛)把Pascal定为最主要的程序设计语言。,第 一 课 信息学奥林匹克介绍、PASCAL简介、TP7环境,Pasca
3、l语言有多种版本,本教材采用的Turbo Pascal 7.0(或Borland Pacsal 7.0) 是目前PC机上使用最多的一种高效Pascal,是迄今为止DOS环境下的最高版本。Turbo Pascal 7.0 所需硬件环境是任意型号的PC机,并且仅需一台1.44M软盘驱动器(当然有其他条件更好);最小软件系统包括Turbo.exe(集成环境)和Turbo.tpl(标准单元库)两个文件,如果包括Turbo.hlp(求助文件)则更有利于学习。Turbo Pascal 7.0可以工作在DOS操作系统或Windows操作系统环境下。,Turbo Pascal提供了一个称为集成环境的工作系统,
4、它集编辑、编译、调试、运行等功能于一体,对初学者学习十分方便。在DOS提示符状态下,键入TURBO,即可进入Turbo Pascal 集成环境,这时的屏幕显示如下图。按任意键就可进入Pascal编辑处理状态。在Windows环境下运行时,最好先建立一个快捷方式,并在“属性”设置中,选择“程序”中的“高级”选项,去除“MS-DOS方式”。以后你运行Turbo Pascal的时候,只要双击那个已建立的快捷方式就可以直接在Windows下运行Turbo Pascal。,第 一 课 信息学奥林匹克介绍、PASCAL简介、TP7环境,File 文件Edit 编辑Search 搜索Run 运行Compil
5、e 编译Debug 调试Tools 工具Option 选项Window 窗口Help 帮助,第 一 课 信息学奥林匹克介绍、PASCAL简介、TP7环境,有四种方法可以进入相应的子菜单:1、用F10功能键进入主菜单,按“”、“”将光标移至子菜单处,回车。 2、用F10功能键进入主菜单,按子菜单命令的首字母F、E、S、R、C、D、T、O、W、H之一。 3、Alt-子菜单命令首字母(按Alt键的同时,按首字母)。 4、用鼠标直接操作。进入子菜单后,会出现一个下拉式菜单,这时的子菜单又含有多项命令功能供选择。选择的方法是:按命令的首字母或按、键将光标移至命令处回车。有些命令还有多级子菜单供选择。在有
6、子菜单出现时,按ESC键可返回上级子菜单或主菜单。在任何时候均可按F10键进入主菜单。屏幕底行提示了各热键(在当前状态下生效的键)对应的功能。例如按F1键可以进入帮助。屏幕中除顶行和底行外的中间大部分窗口为编辑窗口,用于编辑显示程序文本。,第 一 课 一个Pascal程序实例,进入编辑状态 在主菜单中选择Edit项,就可进入编辑状态,这时光标位于编辑窗口的左上角。 在编辑状态下,可按、键上下左右移动光标;按退格键删光标前字符,按DEL键删光标所指字符;按回车键换行。,编辑窗口的说明在窗口的左上角的小方块是关闭按钮,用于关闭窗口,中间的NONAME000.PAS是当前编辑的文件名,右上角的“1”
7、表示当前窗口是第一个窗口,其右边的上下箭头用于恢复窗口的大小。在整个窗口的右边和下边设有上下左右滚动条。,第 一 课 一个Pascal程序实例,编辑输入一个Pascal程序例:要求在屏幕上输出一句话: Follow me to study Pascal!(跟我学Pascal!)程序如下:Program myfirst;beginwrite(Follow me to study Pascal!);readlnend.选择FileNew命令,打开一个新窗口(原来有窗口则不需要上述操作)。在编辑状态下,输入上述程序。,第 一 课 一个Pascal程序实例,在集成环境内运行程序我们选择RunRun命令
8、(在Run子菜单下选Run命令),如果程序正确,系统将按编译、链接、运行的过程自动给出结果:Follow me to study Pascal!然后按回车返回集成环境。如果上例中无readln语句,系统运行后迅速返回编辑状态,使输出结果看不清,但这时选择DebugUser screen 命令或Alt+F5又可回到输出屏幕,按任意键又返回编辑状态。如果程序有错,可能产生两种情况:1、编译失败。返回编辑窗口,光标指在错误程序行,窗口顶部显示错误信息;2、运行错误。屏幕输出显示:Run_time error at 这里按任意键返回编辑窗口,光标指在错误行,窗口顶部显示错误信息。,第 一 课 一个Pa
9、scal程序实例,保存文件以当前文件名存盘,选择FileSave 命令,系统以当前文件名NONAME000.PAS为名存盘。选择File/Save As to命令,系统将按指定的盘符、路径、文件名存盘,例如:D:MYFIRST.PAS。,第 一 课 一个Pascal程序实例,检查存盘文件的方法1、退出Turbo Pascal返回Dos,用DOS命令DIR检查(1)选择FileQuit完全退出,因系统所占的内存完全释放,无法再返回Pascal。(2)选择FileDOS shell暂时退出,这时系统暂驻内存,在DOS状态下,可用DOS命令DIR检查文件的情况,键入Exit命令还可返回Pascal。
10、2、选择FileOpen命令,选择或键入已存盘文件名即可将所指文件装入编辑窗口。,常用命令的快捷方式 1. F3:打开文件 2. Alt+F3:关闭一个文件 3. F2:存储 4. F6:切换一个窗口 5. Ctrl+Insert:复制 6. Shift+Del:剪切 7. Shift+Insert:粘贴 8. Ctrl+Y:删除一行 9. Alt+Backspace:撤消,进入编辑状态: 选择菜单 FILEOPEN(今后涉及到菜单调用时,均以此格式表示,即选择 FILE菜单中的 OPEN功能)功能,打开一个程序文件,在输入文件名时,输入文件的主名即可进入程序编辑状态。这时可用编辑功能健: 光
11、标键:用以上下左右移动光标位置; INSERT:插入 /改写状态切换; TAB;光标跳至下一制表位; CAPSLOCK:大小写切换; DELETE:删除光标位一字符; BACKSPACE:删除光标前一字符; CTRL+Y:删除光标处一行; HOME:光标跳至行首; END:光标跳至行未; PAGEUP:上翻一页; PAGEDOWN:下翻一页; ENTER:回车 /换行;,程序的调试 调试 PASCAL程序 任何一个天才都不敢说,他编的程序是100%正确的。几乎每一个稍微复杂一点的程序都必须经过反复的调试,修改,最终才完成。所以说,程序的调试是编程中的一项重要技术。PASCAL语言提供了很强大的
12、调试功能,使我们能很方便的找出程序的错误。,编译错误:即语法错误。如:命令错写,少分号等等。此种错误在程序编译执行就能发现,而把光标停留在错误行上,并显示出错误信息,由用户修改。 运行错误:如果没有语法错误。则程序可以运行,但在运行过程中也有可能出现错误,如程序结构不合理,打印语句错误等。此时,程序将中止运行,光标停留在错误语句处,并显示错误信息,等待用户修改。 逻辑错误:如:程序递归出口设置不正确,逻辑判断设置错误,这样程序虽然能够正常运行,但运行结果却不正确,这是用户最难发现有错误,也是最难查找的错误,此时计算机也无任何错误信息。,程序错误:,TURBO PASCAL的集成调试器 在 TU
13、RBO PASCAL语言集成环境中,我们可以非常方便地调试程序。 暂停( CTRL+BREAK):在程序运行过程中,我们可用 CTRL+BREAK暂停程序的运行,此时集成环境会在当前运行到的语句上设置一条光带,表示程序可继续运行。此时,如果要程序继续执行(接着刚刚中断的语句),可用 CTRL+F9(即 RUN功能)继续运行程序;如果不需程序继续运行,可用 CTRL+F2清除光带并复位,这样程序将不能被继续运行。 跟踪( F7):菜单 RUN|TRACE INTO功能能够逐步运行程序,即使在过程中也能逐步运行。 跟踪( F8):菜单 RUN|STEP功能能够使我们逐段运行程序,即子程序中的语句将
14、不会逐步执行。 执行到光标处( F4):把光标移到要执行到的语句行,再用 F4(菜单 RUN|GOTO CRUSOR)可让程序执行到该行暂停。 断点:我们可用 DEBUG|BREAKPOINT功能在光标处行设置程序断点,这样,当程序运行到这里时将自动暂停。清除断点也用此功能。,TURBO PASCAL的集成调试器,查看变量或表达式值( CTRL+F4):我们可以在程序未运行、运行暂停、运行结束后用此功能查看变量或表达式的值。 设置动态变量查看( CTRL+F7):我们可用此功能打开 WATCH窗口,在此窗口中增加要查看的变量,这样,我们在用 F7或 F8或在程序暂停时,就能在此窗口中看到要查看
15、的变量的值。 集成环境中的窗口操作: TURBO PASCAL语言是类似 WINDOWS的,也可提供多窗口操作。如:用 F3功能打开一个文件,再用 F3功能打开一个文件,这时,我们就打开了两个窗口。此时,可用 F6在各个窗口之间切换;用 ALT+F3可把当前窗口关闭;用 CTRL+F5可进入改变窗口大小、位置状态,此时,可用光标键上下左右移动当前窗口,也可用 SHIFT+光标键来改变窗口大小。这样,我们就能在屏幕上同时看到文件窗口、 WATCH窗口、 OUTPUT窗口等。,我们先编一个比较简单的程序,看看程序是如何调试的。,Program tiaoshi; Var I:integer; Beg
16、in For I:=1 to 300 do Begin if I mod 2=0 thenif I mod 3=0 thenif I mod 5=0 then writeln (I); End; End.,A,b,c:boolean;,A:=false;b:=false;c:=false;,if I mod 2=0 then a:=true;if I mod 3=0 thenb:=trueif I mod 5=0 then c:=true if a and b and c then writeln (I);,该程序是输出300以内同时能被2,3,5整除的整数。 现在我们开始调试。 调试有多种方
17、法,先介绍一种,权且叫步骤法,步骤法就是模拟计算机的运算,把程序每一步执行的情况都反映出来。通常,我们有F8即STEP这个功能来实现,如图: 不断地按F8,计算机就会一步步地执行程序,直到执行到最后的“end.”为止,可能你还没有发现F8的威力,我们不妨把上面的程序略微修改一下,再配合另外的一种调试的利器watch,你就会发现步骤法的用处。,如图,我们单击菜单栏中debug选项,里面有一项叫watch的选项,我们单击它。,就会出现一个watch窗口: watch窗口可以让我们观察变量的变化情况,具体操作是在watches窗口内按Insert键:,这时,屏幕上弹出一个菜单,我们输入所需要观察的变
18、量名,我们分别输入i,a,b,c这4个变量名,于是watches窗口内就有如下的4个变量的状态:,这时,我们再次使用步骤法,我们会发现,这4个变量的状态随着程序的执行而不断变化,比如:,这样我们就可以方便地知道执行每一步之后,程序的各个变量的变化情况,从中我们可以知道我们的程序是否出错,在哪里出错,方便我们及时地修改。,我们介绍另外的一种方法,断点法。所谓断点法,就是在程序执行到某一行的时候,计算机自动停止运行,并保留这时各变量的状态,方便我们检查,校对。我们把光标移动到程序的第14行,按下ctrl+F8,这时我们会发现,该行变成红色,这表明该行已经被设置成断点行,当我们每次运行到第14行的时
19、候,计算机都会自动停下来供我们调试。,我们必须学以致用,赶快运用刚学的watch方法,看看这家伙到底有多厉害。,请记住,计算机是执行到断点行之前的一行,断点行并没有执行,所以这时b:=true这一句并没有执行。 断点行除了有以上用处之外,还有另外一个重要用处。它方便我们判断某个语句有没有执行或者是不是在正确的时刻执行,因为有时程序由于人为的疏忽,可能在循环或者递归时出现我们无法预料的混乱,这时候通过断点法,我们就能够判断程序是不是依照我们预期的顺序执行。 行了,你毕业了,程序的调试你就算是基本过关了。,1:逐行执行法(低)F8(step)步骤法 Debug/add watch I,S F7观察
20、 I,S值的变化 2:直接运行到光标处 RUN/GO TO CURSOR (次之) 3:断点法:(到可疑语句设置) DEBUG/ADD BREAKPOINT 再调试观察值的变化 (效率最高),小 结,第 一 课 一个Pascal程序实例,习 题要求在屏幕上输出一句话: Hello!My name is grace,nice to meet you!程序如下:Program hello;beginwrite(Hello! My name is grace,nice to meet you!);readlnend. 运行:Hello! My name is grace,nice to meet y
21、ou!在Turbo Pascal集成环境下输入、运行并保存上述程序。,第 一 课 一个Pascal程序实例,习 题 下列Pascal程序运行后由用户输入一个数,作为半径r,程序将计算出半径为r的园的面积。Program Area_of_Circle; const pi = 3.1416; var s,r : real; beginwriteln(Please input radius : );readln(r);s := Pi*sqr(r);writeln(S = ,s);readln; end. 运行: Please input radius :(显示:请输入半径) 5 (用户输入5) S = 7.8540000000E+01 (显示结果) 在Turbo Pascal集成环境下输入、运行并保存上述程序。,