欢迎来到天天文库
浏览记录
ID:19690614
大小:635.50 KB
页数:28页
时间:2018-10-05
《【pascal教程】【免费】第1章 初识pascal语言》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
第一章 初识Pascal语言第一节Pascal语言介绍第二节 简单程序设计 第一节Pascal语言介绍信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力,选手首先应针对竞赛题目的要求构建数学模型,进而构造出计算机可以接受的算法,之后编写出计算机能够执行的程序。程序设计是信息学竞赛的基本功,选手参与竞赛活动的第一步是熟练掌握一门程序设计语言,目前竞赛中允许使用的程序设计语言有Pascal、C/C++语言,入门者以Pascal语言为最容易上手,选择Pascal可以节省中学阶段本来就捉襟见肘的时间,并且可以快速进入学习算法与数据结构的阶段。Pascal语言指定的版本是FreePascal2.0以上,在讲FreePascal之前,让我们先了解一下Pascal语言。 Pascal语言概述Pascal语言是由瑞士苏黎世联邦工业大学的N.沃思(NiklausWirth)教授于1971年正式完成,为了纪念法国数学家Pascal而命名。1975年,对Pascal语言进行了修改,作为"标准Pascal语言"。Pascal语言是在ALGOL60的基础上发展而成的。它是一种结构化的程序设计语言,可以用来编写应用程序,它又是一种系统程序设计语言,可以用来编写顺序型的系统软件(如编译程序)。它的功能强、编译程序简单,是70年代影响最大的一种算法语言。在Pascal问世30多年来,产生了多种版本,其中影响最大的是前几年竞赛中还在使用的TurboPascal,TurboPascal是由美国Borland公司设计的一种适用于16位编译器的编译系统。目前竞赛中已经指定用FreePascal,它是一个32位、跨平台的专业编译器,几乎支持现有的所有操作系统,同时兼容TurboPascal中编写的程序。 Pascal语言的特点它是世界上第一个结构化程序设计语言结构化程序设计思想是程序设计发展史上的一个里程碑,结构化程序设计思想中主张去掉Goto语句,所有程序都用三种基本结构(顺序、分支、循环)组成。Pascal语言提供了三种基本结构的语句以及模块化("过程"和"函数")的功能。可以方便地书写出结构化程序。在编写程序时可以完全不使用GOTO语句和标号。这就易于保证程序的正确性和易读性。Pascal语言强调的是可靠性、易于验证性、概念的清晰性和实现的简化。在结构化这一点上,比其它语言(如BASIC,FORTRAN77)更好一些。由于Pascal语言具有良好的结构化程序设计特性,所以它特别适合于教学,有利于培养学生良好的程序设计风格和严谨的思维。 Pascal语言的特点有丰富的数据类型Pascal提供了整型、实型、字符型、布尔型、枚举型、子界型以及由以上类型数据构成的数组类型、集合类型、记录类型和文件类型。此外,还提供了其它许多语言中所没有的指针类型。沃思有一个著名的公式:"算法+数据结构=程序",指出了在程序设计中研究数据结构的重要性。丰富的数据结构和上述的结构化性质,并且去掉了一些影响效率的因素(如动态数组),使得Pascal可以被方便地用来描述复杂的算法,使得程序编译和运行效率都很高。 Pascal语言的特点功能强,应用广有些语言(如FORTRAN66,ALGOL60)只适用于数值计算,有些语言(如COBOL)则适用于商业数据处理和管理领域。Pascal的功能较强,不仅是一门教学语言,还广泛应用于编写各种系统软件和应用软件。Pascal语言还可以用于辅助设计,实现计算机绘图功能。 Pascal语言的特点程序的书写格式自由不像有些编程语言那样对程序的书写格式有严格的规定。Pascal允许一行内写多条语句或一条语句可以分开写在多行上,便于阅读。 Pascal语言的特点可移植、易推广Pascal是一个跨平台的专业编译器,不依赖于具体的机器,用Pascal编写的源程序可以在各种具有Pascal编译系统的机器上运行。 Pascal程序结构Pascal有着一组自己的记号和规则,并且对程序的结构有严格规定。我们先来看一个简单的例子:例1.1在梯形中阴影部分面积是150平方厘米,求梯形面积。【分析】已知梯形上、下底长为15和25。令梯形的高为h,则由已知三角形面积为150平方厘米,有150=(15*h)/2,得h为20,然后根据梯形面积公式算出梯形面积。 程序如下:Programex1_1;//程序首部,可省略vars,h,up,down:real;//定义变量beginup:=15;//已知上底down:=25;//已知下底h:=2*150/up;//根据上底求出梯形的高s:=(up+down)*h/2;//求出梯形的面积writeln(‘s=’,s);//输出梯形的面积s=400end.//结束整个程序 以上程序的第一行称为程序首部,程序名称ex1_1可以自己命名,这一行可以省略不写,程序中“//”后面的内容称为注释,计算机不会理踩这些内容,注释可以增加程序的可读性。编写程序增加注释是一个好习惯,便于他人或自己日后阅读。注释内容还可以放在大括号中如“{注释内容}”,一般单行内容用“//”,多行内容用“{}”。从第二行到最后一行为程序体(在有的书本里也称分程序),由说明部分和语句部分构成。说明部分用变量(包括常量)的定义,Pascal不允许变量未定义先使用;语句部分必须以begin开始,以end.结束,中间每条语句用分号隔开。 FreePascal语言系统的使用目前,竞赛中指定的Pascal编译系统是FreePascal2.0以上的版本,了解了Pascal的特点及程序结构后,我们来学习FreePascal2.x软件的使用 系统的启动运行安装目录FPC2.0.4bini386-win32中的启动程序fp.exe(默认安装时桌面上也有启动的快捷方式)启动fp系统,运行后屏幕上出现如图所示的fp集成环境。 这样一片乱码,令很多入门者望而怯步,导致的原因是我们操作系统“控制台窗口”中语言默认为中文,调整方法是在窗口最上面的标题栏上右键单击,在弹出的快捷菜单中选择“默认值”,接着会弹出如1-3图所示的控制台窗口属性框,在最下面的“默认代码页”的下拉菜单中选择“437(OEM–美国)”如图所示。 FreePascal系统集成环境简介控制台窗口属性框中语言改成英文后,关闭并再次打开fp后出现如图1-5所示的界面,标题栏下方的一行为菜单栏。中间部分为编辑窗口,新建文件后,在它的编辑窗口内可以编写程序。最底部一行为提示栏,显示系统中常用命令的快捷键,如将当前正在编辑的文件存盘的命令快捷键为F2(平时要养成经常按这个键),编译程序的快捷键为F9,等等。 新建程序选择File菜单,执行其中New命令,建立一个新的程序窗口(默认文件名为Noname01.pas)。 程序代码的输入、编辑与运行在当前程序编写窗口中,一行一行地输入程序代码,对程序的编辑与其它文本编辑器的编辑方法类似,这里不再重复。当程序输入完毕之后,选Compile菜单中Compile命令(或按F9)对程序进行编译(生成计算机能够执行的程序,扩展名为exe)。如果程序有语法错误,会在窗口的第一行显示第一个红色错误信息,若无语法错误,窗口正中央会出现一个对话框,提示编译成功,程序编译成功后,接下来就可以运行程序了。程序的运行可以选择Run菜单中的Run命令或按快捷键CTRL+F9,程序运行结束后回到Pascal系统的集成环境,因此查看运行结果需要选择Debug菜单中的Userscreen命令或按快捷键ALT+F5将编辑窗口切换到用户屏幕(即结果输出屏幕),有的选手为了调试方便在程序最后一行添加readln让程序执行完后停在结果输出屏幕,结果查看完毕按回车键返回到编辑窗口。 程序的保存与打开选择File菜单中的Save命令(或按F2键)来保存程序,第一次保存文件时屏幕上会出现一个对话框要求输入文件名,要养成经常保存文件的好习惯,保存文件还要注意fp的工作目录(默认的工作目录是FPC2.0.4bini386-win32),默认工作目录可以在fp的快捷方式属性的“起始位置”中设置。打开已有源文件通过File菜单中的Open命令(或按F3)来完成,也可以直接双击源文件来启动Fp并加载该文件。选手平时练习时要养成用快捷键代替鼠标操作的良好习惯,使用快捷键能大大提高编写代码的速度,从而有更多的时间来思考问题和调试程序。 第二节 简单程序设计无论做任何事情,都要有一定的方式方法与处理步骤,所谓“无规矩无以成方圆”。计算机程序设计比日常生活中的事务处理更具有严谨性、规范性和可行性。为了使计算机有效地解决实际问题,必须将处理步骤编排好,用计算机能理解的计算机语言编写成“序列”,让计算机自动识别并执行这个“序列”,达到解决实际问题的目的。将处理问题的步骤编排好,用计算机语言组成序列,就是常说的编写程序。在Pascal语言中,执行每条语句都是由计算机完成相应的具体操作,编写程序是利用Pascal语句的功能来实现预定的处理要求。“千里之行,始于足下”,我们从简单程序学起,逐步了解和掌握怎样编写程序。在学习Pascal语言之前,让我们绕过那些繁琐的语法规则细节,通过一些的简单例题,来熟悉程序的基本组成和基本语句的用法,选手刚接触编程时,多动手模仿是一条捷径。 例1.2在屏幕上输出“HelloWorld!”。程序如下:Programex1_2;beginwrite(‘HelloWorld!’);end.通守这个简单程序的学习,希望大家的程序设计学习能有一个良好的开端。程序中的write是一条输出语句,它能命令计算机在屏幕上输出括号内的内容,其中单引号内的部分将被原样输出。大家可以试试没有引号的情况,会出现什么现象? 例1.3已知一位小朋友的电影票价是10元,计算x位小朋友的总票价是多少?【分析】假设总票价用y来表示,则这个问题可以用以下几个步骤来实现:①输入小朋友的数目x;②用公式y=10*x计算总票价;③输出总票价y的值。程序如下:Programex1_3;//程序首部varx,y:integer;//说明部分(定义变量)beginreadln(x);//小朋友的数目y:=10*x;//计算总票价writeln('total=',y);//输出总票价end. 本题程序结构完整,从中可看出一个Pascal程序由三部分组成:(1)程序首部由保留字Program开头,后跟一个程序名(如ex1_3),其格式为:Program程序名。程序名由选手自己取,它的第一个字符必须是英文字母,其后的字符只能是字母或数字和下划线组成,程序名中不能出现运算符、标点符和空格等非法字符。(2)说明部分程序中所用的常量、变量等必须先定义后使用。例1.3程序中x,y:integer;是变量定义,x,y被定义成整数类型的变量。只有被定义为某一类型的变量,在程序中才能将与变量类型所允许的值赋给该变量。说明部分以保留字var开头。(3)语句部分语句部分指由保留字begin(开始)至end.(结尾)之间的语句系列,是解决问题的具体处理步骤,也是程序的执行部分。不管是程序的哪部分,每条语句末尾都必须以分号(;)结束,但允许最接近end的那条语句末尾的分号省略;程序结束语句end末尾必须有句号(.),是整个程序的结束标志。程序中大括号“{…}”之间的部分或//后面的部分为注释部分,单行注释一般用//符号,多行语句注释用大括号更方便(不然每行语句前都要加//)。 程序结构可归纳用如下的示意图来表示:program程序名;程序首部常量说明;(const)…说明部分变量说明;(var)begin语句1;程序体(主程序)…语句部分语句n;end.把处理问题的步骤编成能从上到下顺序执行的程序,是简单程序的基本特征。再来分析下面两道例题的程序结构,同时继续学习基本语句。 例1.4有一个牧场,牧场上的牧草每天都在匀速生长,这片牧场可供15头牛吃20天,或可供20头牛吃10天,那么,这片牧场每天新生的草量可供几头牛吃1天?【分析】解决这类问题的关键是利用牛吃的草量,最终求出这片牧场每天新生长的草量,我们设1单位的草量为1头牛1天所需的草量,于是15头牛20天所食的草量为300单位(包括这20天内的新生草量),20头牛10天所食的草量为200单位(包括这10天内的新生草量),两者的差值即为10天内的新生草量。程序如下:Programex1_4;//程序首部vars1,s2,s3:integer;//说明部分begins1:=15*20;//15头牛20天所食的草量s2:=20*10;//20头牛10天所食的草量s3:=(s1-s2)div(20-10);//每天新生的草量单位数writeln(s3);//1单位为1头牛1天的食量end. :=是赋值符号,赋值语句的格式为:变量:=表达式;赋值语句的作用是将:=右边表达式的值赋值给它左边的变量,也就说让变量的值等于表达式的值。writeln是输出语句,输出语句有三种格式:①write(输出项1,输出项2,…);//执行输出后光标不换行②writeln(输出项1,输出项2,…);//执行输出后光标换到下一行③writeln;//什么都不输出立即换行writeln语句圆括号内的部分都是要输出的输出项,输出项是多项时各项之间要用逗号隔开。如果输出项被单引号括住时,输出项内容原样输出;如果输出项是表达式,输出表达式的结果,而不是表达式本身。writeln比write多一个后缀ln,意思是line的缩写,即输完内容后换到下一行。 例1.5已知两个自然数a,b,输出a除以b的商和余数?【分析】设存储商和余数的变量名是c和d,类型是整数类型。①输入二个自然数a,b;②显示两数相除的数学表达式;③求出a除以b的商c;④求出a除以b的余数d;⑤在表达式右边输出商和余数。程序如下:Programex1_5;vara,b,c,d:integer;beginreadln(a,b);//输入a,bc:=adivb;//整除运算,取商的整数部分d:=amodb;//mod运算符是求二个数的余数writeln(c,‘',d);//输出后有换行readln;//运行后不立即返回编辑界面,等待按回车end. readln是一个特殊的输入语句,要求输入一个回车(换行)才能往下执行。readln是输入语句,输入语句的一般格式为:①read(变量1,变量2,…);②readln(变量1,变量2,…);③readln。前两种输入语句都是为变量读取数据,输入的多项数据之间以空格隔开,输出完毕后敲回车。若多输入了数据项(即数据个数超过变量个数),read语句读取完数据之后,能让后面的输入语句接着读取剩下的数据;而readln语句不能让后面的输入语句接着读取本行剩下来的数据项,因为已经回车换到下一行了。为了防止多输入的数据影响下一个输入语句读取数据,建议尽量使用readln语句输入数据。第三种格式不需输入数据(其实输入任意内容的数据都被忽略),只需敲一个回车键。 【上机练习】)1.输入三个数,计算并输出它们的平均值以及三个数的乘积,写出程序。2.输入圆的半径R,求圆的面积和周长。3.加法计算器:编程由键盘输入两个整数a和b,将它们的和输出到屏幕上。4.某梯形的上底、下底和高分别为8,12,9,求该梯形的面积。(梯形面积公式为S=5.已知图圆柱体的高为12,底面圆的半径为7,求圆柱体表面积。6.进入Fp,调试以下程序:programex1_6;vars:string;beginwrite(‘Pleaseinputyourname’);readln(s);writeln(s,’isthebest.’);end.
此文档下载收益归作者所有
举报原因
联系方式
详细说明
内容无法转码请点击此处