pascal教程(整理版)-莆田一中(完整版)

pascal教程(整理版)-莆田一中(完整版)

ID:17959178

大小:34.46 KB

页数:43页

时间:2018-09-11

上传者:U-3770
pascal教程(整理版)-莆田一中(完整版)_第1页
pascal教程(整理版)-莆田一中(完整版)_第2页
pascal教程(整理版)-莆田一中(完整版)_第3页
pascal教程(整理版)-莆田一中(完整版)_第4页
pascal教程(整理版)-莆田一中(完整版)_第5页
资源描述:

《pascal教程(整理版)-莆田一中(完整版)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

Pascal教程(整理版)-莆田一中(完整版)《Pascal语言学习教程》莆田一中信息学奥赛兴趣小组群号码:14779638莆田一中程序测评系统网址:http://10.1.1.10/JudgeOnline/第一章简单程序...........................................................................................................................2第一节Pascal程序结构和基本语句...................................................................................2第二节顺序结构程序与基本数据类型...............................................................................6第二章分支程序.........................................................................................................................10第一节条件语句与复合语句.............................................................................................10第二节情况语句与算术标准函数.....................................................................................12第三章循环程序...................................................................................................................... ...16第一节for循环..................................................................................................................16第二节repeat循环.............................................................................................................22第三节While循环.............................................................................................................27第四章函数与过程.....................................................................................................................32第一节函数.........................................................................................................................32第二节自定义过程.............................................................................................................35第五章Pascal的自定义数据类型............................................................................................40第一节数组与子界类型.....................................................................................................40第二节二维数组与枚举类型 .............................................................................................48第三节集合类型.................................................................................................................56第四节记录类型和文件类型.............................................................................................60第五节指针类型与动态数据结构.....................................................................................67第六章程序设计与基本算法.......................................................................................................73第一节递推与递归算法.....................................................................................................73第二节回溯算法.................................................................................................................80第七章数据结构及其应用.........................................................................................................86第一节线性表.....................................................................................................................86第二节队列.........................................................................................................................90 第三节栈.............................................................................................................................93第四节数组.........................................................................................................................97第八章搜索................................................................................................................................100第一节深度优先搜索.......................................................................................................100第二节广度优先搜索.......................................................................................................111第九章其他常用知识和算法.....................................................................................................115第一节图论及其基本算法...............................................................................................115第二节动态规划...............................................................................................................1221 《Pascal语言学习教程》莆田一中信息学奥赛兴趣小组群号码:14779638莆田一中程序测评系统网址:http://10.1.1.10/JudgeOnline/第一章简单程序无论做任何事情,都要有一定的方式方法与处理步骤。计算机程序设计比日常生活中的事务处理更具有严谨性、规范性、可行性。为了使计算机有效地解决某些问题,须将处理步骤编排好,用计算机语言组成“序列”,让计算机自动识别并执行这个用计算机语言组成的“序列”,完成预定的任务。将处理问题的步骤编排好,用计算机语言组成序列,也就是常说的编写程序。在Pascal语言中,执行每条语句都是由计算机完成相应的操作。编写Pascal程序,是利用Pascal语句的功能来实现和达到预定的处理要求。“千里之行,始于足下”,我们从简单程序学起,逐步了解和掌握怎样编写程序。第第第第第一一一一一节节节节节PPPPPaaaaasssssc ccccaaaaalllll程程程程程序序序序序结结结结结构构构构构和和和和和基基基基基本本本本本语语语语语句句句句句在未系统学习Pascal语言之前,暂且绕过那些繁琐的语法规则细节,通过下面的简单例题,可以速成掌握Pascal程序的基本组成和基本语句的用法,让初学者直接模仿学习编简单程序。[例1.1]编程在屏幕上显示“HelloWorld!”。Pascal程序:Programex11; BeginWriteln(‘HelloWorld!’);ReadLn;End.这个简单样例程序,希望大家的程序设计学习能有一个良好的开端。程序中的Writeln是一个输出语句,它能命令计算机在屏幕上输出相应的内容,而紧跟Writeln语句后是一对圆括号,其中用单引号引起的部分将被原原本本地显示出来。[例1.2]已知一辆自行车的售价是300元,请编程计算a辆自行车的总价是多少?解:若总售价用m来表示,则这个问题可分为以下几步处理:①从键盘输入自行车的数目a;②用公式m=300*a计算总售价;③输出计算结果。Pascal程序:Program Ex12;{程序首部}Vara,m:integer;{说明部分}Begin{语句部分}Write(‘a=’);ReadLn(a);{输入自行车数目}M:=300*a;{计算总售价}Writeln(‘M=’,m);{输出总售价}2 《Pascal语言学习教程》莆田一中信息学奥赛兴趣小组群号码:14779638莆田一中程序测评系统网址:http://10.1.1.10/JudgeOnline/ReadLn;{等待输入回车键}End.此题程序结构完整,从中可看出一个Pascal程序由三部分组成:(1)程序首部由保留字Program开头,后面跟一个程序名(如:Exl1);其格式为:PPPPPrrrrrooooogggggrrrrraaaaammmmm程序名;程序名由用户自己取,它的第一个字符必须是英文字母,其后的字符只能是字母或数字和下划线组成,程序名中不能出现运算符、标点符和空格。(2)说明部分程序中所用的常量、变量,或类型、及过程与自定义函数,需在使用之前预先说明,定义数据的属性(类型)。[例 1.2]程序中VarS,R,C:Real;是变量说明,此处说明S,R,C三个变量均为实数类型变量。只有被说明为某一类型的变量,在程序中才能将与该变量同类型的数值赋给该变量。变量说明的格式为:VVVVVaaaaarrrrr变量表:类型;(3)语句部分指由保留字Begin(开始)至End.(结尾)之间的语句系列,是解决问题的具体处理步骤,也是程序的执行部分。Pascal程序不管是哪部分,每句末尾都必须有分号(;),但允许最接近End的那个语句末尾的分号省略;程序结束的End末尾必须有圆点(.),是整个程序的结束标志。程序中花括号“{}”之间的部分为注释部分。Pascal程序结构可归纳用如下的示意图来表示: Program程序名;标号说明;(Label)常量说明;(Const)类型说明;(Type)变量说明;(Var)过程或函数说明;Begin语句系列;End.程序首部说明部分程序体(主程序)语句部分图1.1Pascal程序的结构把处理问题的步骤编成能从上到下顺序执行的程序,是简单程序的基本特征。再来分析 下面两道例题的Pascal程序结构和继续学习基本语句。[例1.3]编程计算半径为R的圆的面积和周长。解:这是一个简单问题,按数学方法可分以下几步进行处理:①从键盘输入半径的值R;{要求告诉圆的半径R}②用公式S=πR2计算圆面积;③用公式C=2πR计算圆周长;④输出计算结果。Pascal程序:ProgramEx13;{程序首部}3 《Pascal语言学习教程》莆田一中信息学奥赛兴趣小组群号码:14779638莆田一中程序测评系统网址:http://10.1.1.10/JudgeOnline/VarR,S,C:Real;{说明部分}Begin{语句部分}Write('R=?');Readln(R);{输入半径}S:=Pi*R*R;{圆面积公式S=πR2}C:=2*Pi*R;{圆周长公式C=2πR}Writeln('S=',S);{输出结果}Writeln('C=',C);Readln{等待输入回车键}End. 程序中Pi是Pascal提供的标准函数,它返回圆周率的近似值:3.1415926…。(:=)是赋值符号,赋值语句的格式为:变量:=表达式;赋值语句的作用是将:=右边表达式的值记录到左边的变量中。Writeln是输出语句,输出语句有三种格式:①Write(输出项1,输出项2);{执行输出后光标不换行}②Writeln(输出项1,输出项2);{执行输出后光标换到下一行}③Writeln{仅输出空白且光标换到下一行}Writeln语句后面的圆括号以内部分均为输出项,可以是多项,各项间用逗号分隔;对单引号里的内容按照引号内的原样 (字符)输出显示。如果输出项是表达式,则只输出表达式的值,而不是表达式本身。[例1.4]输出两个自然数相除的商和余数。解:设被除数、除数、商和余数,分别为A,B,C,D,均为变量,且都是整数类型。题中未给出具体的自然数A、B,可采用键盘输入方式。①给出提示,从键盘输入a,b;②显示两数相除的数学形式;③求出a除以b的商c;④求出a除以b的余数d;⑤紧接等式后面输出显示商和余数。Pascal程序:ProgramEx14; Vara,b,c,d:integer;BeginWrite('INPUTA,B:');{给出提示信息}Readln(a,b);{输入a,b}Writeln;{输出一空行}Write(a,'/',b,'=');{输出等式之后不换行}c:=adivb;{整除运算,取商的整数部分}d:=amodb;{相除求余运算,取商的余数部分}Writeln(C,'…',d);{输出后自动换行}Readln{等待输入回车键}End.执行本程序中第一个Write语句,输出其引号以内的一串提示信息,是给紧接着的输入 4 《Pascal语言学习教程》莆田一中信息学奥赛兴趣小组群号码:14779638莆田一中程序测评系统网址:http://10.1.1.10/JudgeOnline/语句提供明确的提示(要求),有“一目了然,人机对话”之效果。Readln是一个特殊的输入语句,要求输入一个回车(换行)才能往下执行。Readln是输入语句,它的一般格式为:①Read(变量1,变量2);②Readln(变量1,变量2);③Readln前两种格式均要从键盘给变量输入数据,输入时,所键入的数据之间以空格为分隔,以回车为输入结束。若多输入了数据(即数据个数超过变量个数 ),Read语句读完数据之后,能让后续的读语句接着读取多下来的数据;而Readln语句对本行多输入的数据不能让后续语句接着读取多下来的数据。为了防止多输入的数据影响下一个输入语句读取数据,建议尽量使用Readln语句输入数据。第三种格式不需输入数据,只需按入一个回车键。[例1.5]自然数的立方可以表示为两个整数的平方之差,比如43=102-62,请输出自然数1996的这种表示形式。(这里的43用自乘三次的形式4*4*4表示;102也用自乘二次的形式10*10表示)解:此题没有现成的计算公式能直接利用,但可以自行推出处理方法或构建适当的运算公式,按着构想的处理方案编排出各步骤。设这个自然数为N,两个平方数分别为X,Y,将问题表示为求N3=X2—Y2 ①先找出X的值,仔细观察题中的示例,用数学方法归纳可得出X=N*(N+1)/2;(构成本题可用的计算公式)②再仔细观察,发现Y值比X小一个N值,即Y=X—N;③输出等式N3=X2—Y2或N*N*N=X*X—Y*YPascal程序:ProgramEx15;ConstN=1996;{常量说明}VarX,Y:Longint;{变量说明,此题计算中的数值较大,用长整型}Begin X:=N*(N+1)div2;{div是整除运算}Y:=X-N;Writeln(N,'*',N,'*',N,'=',X,'*',X,'—',Y,'*',Y);{输出结果}ReadlnEnd.本程序中N是常量,X,Y是变量,为长整数类型(Longint);程序中的div是整除运算,其结果只取商的整数部分;[例1.6]求一元二次方程x2+3x+2=0的两个实数根。解:方程的系数是常量,分别用a,b,c表示,可运用数学上现成的求根公式求方程的根,采取如下方法: ①先求出d=b2-4ac;(求根公式中需用开方运算的那部分)②再用求根公式算出x1,x2的值。(x1,x2=?)③输出x1,x2.Pascal程序:programEx16;Consta=1;{常量说明}5 《Pascal语言学习教程》莆田一中信息学奥赛兴趣小组群号码:14779638莆田一中程序测评系统网址:http://10.1.1.10/JudgeOnline/b=3;c=2;{a,b,c表示方程系数}Vard:integer;{d为整型变量}X1,X2:Real;{X1,X2为实型变量}Begind:=b*b-4*a*c;x1:=(-b+sqrt(d))/(2*a);{求方程的根}x2:=(-b-sqrt(d))/(2*a);Writeln('X1=',X1,'':6,'X2=',X2);{输出结果}Readln{等待输入一个回车键}End.本程序中的a,b,c均为常量;变量d是整数类型,而变量x1,x2则是实数类型,因为运算式中的Sqrt(d)开平方运算和(/)除法运算使结果为实数。Sqrt()是开平方函数,是Pascal系统的一个标准函数。 习题1.1模仿例题编程1.加法计算器:编程由键盘输入两个整数a和b,计算出它们的和并输出到屏幕上。2.某梯形的上底、下底和高分别为8,12,9,求该梯形的面积。(梯形面积公式为S=)3.求右图所示边长为5.6的正立方体表面积。4.已知图园柱体的高为12,底面园的半径为7,求园柱体表面积。5.计算某次考试语文、数学、英语和计算机等四科的总成绩与平均成绩。(请用输入语句从键盘输入各科成绩分)第第第第第二二二二二节节节节节顺顺顺顺顺序序序序序结 结结结结构构构构构程程程程程序序序序序与与与与与基基基基基本本本本本数数数数数据据据据据类类类类类型型型型型前面的简单程序已体现出处理问题步骤、思路的顺序关系,这就是顺序结构程序。[例1.7]交换两个变量的值:由键盘输入两个正整数A和B,编程交换这两个变量的值。解:交换两个变量的值,可以想象成交换两盒录音带(称为A和B)的内容,可以按以下步骤处理:步骤①:拿一盒空白录音带C为过渡,先将A翻录至C;步骤②:再将B翻录至A; 步骤③:最后将C翻录至B。这样操作,可达到题目要求。Pascal程序:ProgramExam17;Vara,b,c:integer;BeginWrite(‘A,B=’);Readln(a,b);6 《Pascal语言学习教程》莆田一中信息学奥赛兴趣小组群号码:14779638莆田一中程序测评系统网址:http://10.1.1.10/JudgeOnline/C:=A;{等价于步骤1}A:=B;{等价于步骤2}B:=C;{等价于步骤3}Writeln(A,B);End.[例1.8]分钱游戏。甲、乙、丙三人共有24元钱,先由甲分钱给乙、丙两人,所分给的数与各人已有数相同;接着由乙分给甲、丙,分法同前;再由丙分钱给甲、乙,分法亦同前。经上述三次分钱之后,每个人的钱数恰好一样多。求原先各人的钱数分别是多少?解:设甲、乙、丙三人的钱数分别为 A,B,C。用倒推(逆序)算法,从最后结果入手,按反相顺序,分步骤推算出每次各人当时的钱数:(在每个步骤中,各人钱数分别存在A、B、C中)步骤①:A=8B=8C=8{这是最后结果的钱数,三人都一样多}步骤②:A=A/2(=4)B=B/2(=4)C=A+B+C(=16){A,B未得到丙分给的钱时,只有结果数的一半;C应包含给A,B及本身数三者之和}步骤③:A=A/2(=2)C=C/2(=8)B=A+B+C(=14){A,C未得到乙分给的钱时,只有巳有数的一半; B应包含给A,C及本身数三者之和}步骤④:B=B/2(=7)C=C/2(=4)A=A+B+C(=13)C未得到甲分给的钱时,只有巳有数的一半;A应包含给B,C及本身数三者之和}步骤⑤:输出A(=13)B(=7)C(=4){此时的A,B,C就是三人原先的钱数}Pascal程序:ProgramExam18;Vara,b,c:integer;Begina:=8;b:=8; c:=8;{对应于步骤①}a:=adiv2;b:=bdiv2;c:=a+b+c;{对应于步骤②}a:=adiv2;c:=cdiv2;b:=a+b+c;{对应于步骤③}b:=bdiv2;c:=cdiv2;a:=a+b+c;{对应于步骤④}Writeln('a=',a,' ':4,'b=',b,'':4,'c=',c);{输出}ReadlnEnd.细心观察,会发现本程序语句的顺序很关键。此例用反推顺序(逆序),按步骤正确推算出各变量的值。当然,有的问题可按正序步骤编程,这类程序都称为顺序程序。本程序Writeln语句的输出项含有('':4),这里的冒号用来指定该项显示所占宽度,此处是输出4个空格即(空格项占4格)。[例1.9]有鸡兔同笼,头30,脚90,究竟笼中的鸡和兔各有多少只? 解:设鸡为J只,兔为T只,头为H,脚为F,则:J+T=30①2*J+4*T=90②解此题暂不必采用数学上直接解方程的办法,可采用“假设条件与逻辑推理”的办法:假设笼中30个头全都是兔,那么都按每头4只脚计算,总脚数为(4*H),与实际脚数(F)之差为(4*H—F),如果这个差=0,则笼中全是兔(即鸡为0只);如果这个差值>0,说明多计算了脚数,凡是鸡都多给算了两只脚,用它除以2就能得到鸡的只数,处理步骤为:①J=(4*H—F)/2{先用脚数差值除以2算出鸡的只数 }7 《Pascal语言学习教程》莆田一中信息学奥赛兴趣小组群号码:14779638莆田一中程序测评系统网址:http://10.1.1.10/JudgeOnline/②T=H—J{再用总头数减鸡数算出免的只数}按此方法,这两步运算必须注意先后顺序才会符合运算逻辑。Pascal程序:ProgramExam16;ConstH=30;{常量说明}F=90;VarJ,T:byte;{为字节类型的整数}BeginJ:=(4*H-F)div2;{整除运算}T:=H-J Writeln('J=',J,'':6,'T=',T);ReadlnEnd.本程序中H,F为常量,变量J,T为byte类型,属于整数类型。Pascal定义了五个标准整数类型,如下表所示:类型取值范围占字节数格式Shortint(短整型)-128..1271带符号8位Integer(整型)-32768..327672带符号16位Longint(长整型)-2147483648..21474836474带符号32位Byte(字节型) 0..2551无符号8位Word(字型)0..655352无符号16位在前面程序中常用的数据类型除整数类型,还有实数类型。Pascal还定义了五个标准实数类型,列表所示如下:类型取值范围占字节数有效数字Real2.9×10-39~1.7×103867~8位Single1.5×10-45~3.4×1038411~12位Double5.0×10-324~1.7×10308815~16位Extended1.9×10-4951~1.1×1049321019~20位 Comp-263+1~238-1819~20位在TurboPascal中实数的表示用科学记数法,可认为由三部分组成:#.##E+##或#.##E-##①#.##表示有效数字;②E表示以10为底的幂;③+##或-##是指数部分,+号可省略。例如:1.7E+38可写成1.7E38 (等同于1.7×1038)。在实数类型定义下,即使是整数,在程序执行时系统也将自动转换成科学记数形式,试请运行下面程序并注意观察运行结果:ProgramExam17;Varx:real;{x为实数类型}BeginX:=180;{把整数180赋给实数类型变量X}Writeln('x=',x);{输出的x自动表示成实数形式}ReadlnEnd. 8 《Pascal语言学习教程》莆田一中信息学奥赛兴趣小组群号码:14779638莆田一中程序测评系统网址:http://10.1.1.10/JudgeOnline/习题1.21.已知△ABC中的三边长分别为25.76,74.03,59.31,求△ABC的面积。(计算公式:S=。其中P=)2.某车棚存有自行车和三轮车共65辆,它们的轮子数合计为150个。求该棚内存有的自行车和三轮车各是多少辆?3.甲、乙、丙三人分别有磁带36,48,64盒。先由甲把自己的磁带平均分为三份,分给乙、丙各一份,自己留下一份;接着是乙,最后是丙,都按甲的方法处理。编程输出甲、乙、丙在上述过程中各人的磁带数分别是多少?(输出所有的中间结果) 4.五位好朋友相聚。第一位朋友带来了很多糖块赠送给各位朋友,使每人的糖块在各自原有的基础上翻了一倍;接着第二位好友也同样向每人赠送糖块,他同样使每人的糖块在各人已有的数量上翻了一倍;第三、第四、第五位好友都照此办理。经过这样的赠送之后,每人的糖块恰好都为32块。问各位好友原先的糖块数分别是多少?9 《Pascal语言学习教程》莆田一中信息学奥赛兴趣小组群号码:14779638莆田一中程序测评系统网址:http://10.1.1.10/JudgeOnline/第二章分支程序在程序设计中,许多问题是在一定条件下才选择某种处理方式的,这就需要用条件判断语句或情况选择语句进行处理。程序执行中将出现选择(分支),根据条件只选择执行部分语句,不一定都是按原顺序从头到尾地执行所有语句,这样的程序称为分支程序。第第第第第一一一一一节节节节节条条条条条件件件件件语语语语语句句句句句与与与与与复复复复复合合合合合语语语语语句句句句句[例 2.1]某服装公司为了推销产品,采取这样的批发销售方案:凡订购超过100套的,每套定价为50元,否则每套价格为80元。编程由键盘输入订购套数,输出应付款的金额数。解:设X为订购套数,Y为付款金额,则:①输入X;②判断X值;③根据判断结果选择符合条件的那种方法计算Y值;④输出计算结果。Pascal程序:ProgramExam21;Varx,y:integer;BeginWrite('X=');Readln(x);{输入X}ifx>10

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭