PASCAL语言程序教学.ppt

上传人:仙*** 文档编号:35312990 上传时间:2022-08-21 格式:PPT 页数:121 大小:744.50KB
返回 下载 相关 举报
PASCAL语言程序教学.ppt_第1页
第1页 / 共121页
PASCAL语言程序教学.ppt_第2页
第2页 / 共121页
点击查看更多>>
资源描述

《PASCAL语言程序教学.ppt》由会员分享,可在线阅读,更多相关《PASCAL语言程序教学.ppt(121页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、一、一、Pascal 语言概述语言概述lPASCAL语言也是一种算法语言,它是瑞士苏黎世联邦工业大学的N沃思(Niklaus Wirth)教授于1968年设计完成的,1971年正式发表。1975年,对PASCAL语言进行了修改,作为“标准PASCAL语言”。lPASCAL语言是在ALGOL 60的基础上发展而成的。它是一种结构化的程序设计语言,可以用来编写应用程序。它又是一种系统程序设计语言,可以用来编写顺序型的系统软件(如编译程序)。它的功能强、编译程序简单,是70年代影响最大一种算法语言。 初识程序例1.1编程在屏幕上显示“Hello World!”。 Pascal程序:Program e

2、x1;Begin Writeln(Hello World!);End. 这个简单样例程序,希望大家的程序设计学习能有一个良好的开端。程序中的Writeln是一个输出语句,它能命令计算机在屏幕上输出相应的内容,而紧跟Writeln语句后是一对圆括号,其中用单引号引起的部分将被原原本本地显出来。例1.2已知一辆自行车的售价是300元,请编程计算a辆自行车的总价是多少?解:若总售价用m来表示,则这个问题可分为以下几步处理:从键盘输入自行车的数目a;用公式 m=300*a 计算总售价;输出计算结果。Pascal程序:程序: Program Ex12; 程序首部程序首部 Var a,m: integer

3、;说明部分说明部分 Begin语句部分语句部分 Write(a=); ReadIn(a);输入自行车数目输入自行车数目 M := 300*a;计算总售价计算总售价 Writeln(M=,m);输出总售价输出总售价 ReadIn;等待输入回车键等待输入回车键 End.程序结构 Program 程序名; 程序首部 标号说明; (Label) 常量说明; (Const) 说明部分 类型说明; (Type) 变量说明; (Var) 过程或函数说明; Begin 程序体 (主程序) 语句系列; 语句部分 End. 图1.1 Pascal程序的结构编写你的第一个Pascal程序第一步:打开fp.exe(请

4、确定你已经正确安装了free pascal)然后你会看到形如右边的界面:第二步:点击File,New然后在蓝色的背景中按照左边的图打字。切记:不可错一字,不可倒一字,不可漏一字,不可多一字!第二章编写你的第一个Pascal程序第三步:按F9开始编译会弹出一个对话框叫你保存。输入hello_world后按Ok。如果正常,此时你会看到如下界面:第四步:按Ctrl+F9运行程序你会发现屏幕闪了一下,这表示你编译并运行成功了。第二章如何查看程序运行结果?l想知道刚才程序做了什么事,你可以按Alt+F5查看,或者点击Debug,User Screen来查看。l原来傻逼计算机只是在屏幕上输出了一些白点点。

5、第二章程序出错了怎么办?l当你编译了程序后如果有错误,会出现以下提示:这时候你按回车,光标会停在错误出现的后一个字符(没准是下一行)上。你必须修改错误的部分直到程序能够正确编译为止。如图,最常见的错误莫过于分号漏加。图中的“;” except but “BEGIN” found 意思就是分号漏加了。程序出错了怎么办?l在编译的时候出的错叫做编译错误,还有种错误是在运行的时候出错的,叫做运行时错误。比如你让计算机去计算3除以0,语法上是没有错误但是不符合逻辑。l不同的错误有不同的出错代码,具体请参见附录里的“Pascal错误码表”。出错提示中的(2,1)是出错的行数和列数。例1.4 输出两个自然

6、数相除的商和余数。解:设被除数、除数、商和余数,分别为A,B,C,D,均为变量,且都是整数类型。题中未给出具体的自然数A、B,可采用键盘输入方式。第二课第二课 赋值语句输出语句赋值语句输出语句l关键字和标识符关键字和标识符l常量、变量与算术表达式常量、变量与算术表达式 l赋值语句赋值语句 l输出语句输出语句 l应用例析应用例析 一、关键字和标识符关键字和标识符l标记符l标识符是用来标识(表示)程序、过程、函数、类型、符号常量、变量等的名字的符号lPASCAL规定,标识符由字母和数字组成,但第一个字符必须是字母,长度最长为8个字符,如果长度超过8个字符,只识别前8个字符一、关键字和标识符关键字和

7、标识符l关键字关键字PASCAL规定了一批英文单词,赋予它们以特定的含义,不能作为它用。PASCAL中一共有35个关键字,它们是:AND ARRAY BEGIN CASE CONST DIVDO DOWHILE ELSE END FILE FOR FUNCTION GOTO IF IN LABEL MODNIL NOT OF OR PACKED PROCEDUREPROGRAM RECORD REPEAT SET THENTO TYPE UNTIL VAR WHILE WITH二、二、 常量、变量与算术表达式常量、变量与算术表达式l常量常量 l变量变量 l算术表达式算术表达式 常常 量量l整型

8、常量整型常量 l整型常量采用我们平常使用的十进制整数表示。如138,0,-512等都是整型常量,而18.或18.0都不是整型常量。l实型常量实型常量 l实型常量包括正实数、负实数和实数零。pascal中表示实型常量的形式有十进制表示法和科学记数法。l字符常量字符常量 l在Pascal语言中,字符常量是由单个字符组成,所有字符来自ASCII字符集,共有256个字符。如:a,A,0等 l布尔常量布尔常量 l布尔型常量仅有两个值,真和假,分别用标准常量名true和false表示。它们的序号分别为1和0。 变 量l变量名变量名 l用一个合法的标识符代表一个变量。如n,m,rot,total 等都是合法

9、变量名。在程序中用到的变量必须在说明部分加以说明。 l变量的类型变量的类型 l常量是有类型的数据,变量在某一固定时刻用来存放一个常量,因此也应有相应的类型。如整型变量用来存放整数,实型变量用来存放实数。l变量说明变量说明 l变量说明的一般格式变量说明的一般格式: VAR ,:; (中括号内部分表示可省,下同)算术表达式算术表达式l算术表达式的定义算术表达式的定义 pascal语言中的算术表达式是由符合pascal语法规定的运算对象(包括常量、变量、函数)、算术运算符、圆括号组成的有意义的式子。如:A+3.14159*5/8.4-Abs(-1123)l算术运算符算术运算符 常用的有以下6个算术运

10、算符: (加) (减) (乘) (实数除)得到结果为实型.如5.0/2.0=2.5, 4/2=2.0不等于2。 DIV (整除) DIV它要求除数和被除数均为整型, 结果也为整型。如10 DIV 3=3, 5 DIV 10=0. DIV运算只取商的整数部分。 mod (求余),也只能用于整数运算,结果为整数。 例如:10 mod 4=2 , -17 mod 4= -1 , 4 mod (-3)=1, - 4 mod 3= -1l运算优先顺序运算优先顺序 表达式中相同优先级的运算符,按从左到右顺序计算; 表达式中不同优先级的运算符,按从高到低顺序计算; 括号优先级最高,从内到外逐层降低;算术表达

11、式练习题算术表达式练习题写出下面运算的结果:写出下面运算的结果:1、5*3*6 DIV 22、8/4*2.5/1.25*(3.7+2.3)3、18 DIV 4*sqr(4.0)/1.64、25 DIV 3 MOD 35、8 MOD(-16 MOD 3)*6四、输出语句四、输出语句l输出语句的两种格式输出语句的两种格式lwrite语句语句 格式Write(表达式1,表达式2,); 如:write(1,2,3,4); write(My name is Liping);l writeln语句语句 格式: Write(表达式1,表达式2,)或writelnl输出语句的功能输出语句的功能lwrite语句

12、将其后括号中的表达式一个接一个输出后,没有换行。而writeln语句则在输出各个表达式的值后换行。 write(1,2,3,4);write(5,6);输出为:输出为:123456writeln(1,2,3,4);write(5,6);输出为:输出为:123456三、赋值语句三、赋值语句l赋值语句的格式赋值语句的格式 变量名:=表达式; 其中:=称为赋值号l执行过程执行过程 计算机先计算赋值号右边表达式的值,然后将表达式的值赋给变量名代表的变量。 如:A:=(9*8)-(2-1); A:=A+1五、应用例析五、应用例析l例例1:某仓库5月1日有粮食100吨,5月2日又调进20吨,5月3日卖出库

13、存的3分之二,5月4日又调进库存的3倍粮食,问该仓库从5月1日到5月4日期间每天的粮食分别是多少吨?(输出每天的库存量)l分析:在这个问题中,主要要描述从5月1日到5月4日期间仓库的粮食库存量,且易知它是不断变化的。因此我们可以用一个变量A来描述仓库的粮食库存量。 五、应用例析五、应用例析l程序可写如下: Program ex1; Var A : integer; Begin A:=100; Writeln(5/1:,A); A:=A+20; Writeln(5/2:,A); A:=A div 3; writeln(5/3:,A); A:=A *4; writeln(5/4:,A);Readl

14、n; End. 五、应用例析五、应用例析l例例2:有三个小朋友甲乙丙。甲有50粒糖果,乙有43粒糖果,两有13粒糖果。现在他们做一个游戏。从甲开始,将自己的糖分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。问最后甲、乙、丙三人各有书多少粒糖果?l分析:分析:这个问题中我们关心的是在游戏过程中每个小朋友的糖果个数,且他们所拥有的的糖果数是在变化的。因此可用a,b,c三个变量分别存放甲乙丙三个小朋友在某一时刻所拥有的糖果数。对于每人,分糖后,他的糖果数一定为原来的糖果数 div 3(因为分糖过程糖果的数目不一定都刚好分完,用整除恰恰可以表示多余的糖自己吃掉)。

15、而其他两人则增加与这个小朋友现在拥有的一样的糖果。五、应用例析五、应用例析l程序可写如下:程序可写如下: program ex2; var A,B,C:integer; begin A:=50;B:=43;C:=13; 初始时每个小朋友所拥有的糖果数 A:=A div 3; B:=B+A;C:=C+A;甲小朋友分糖果后,每个人拥有的糖果数变化情况 B:=B div 3; A:=A+B;C:=C+B; 乙小朋友分糖果后,每个人拥有的糖果数变化情况 C:=C div 3; A:=A+C;B:=B+C; 丙小朋友分糖果后,每个人拥有的糖果数变化情况 writeln(A=,A,B=,B,C=,C);

16、输出结果 readln; end.练习题l1、已知某梯形的上底A=13,下底B=18,高H=9,求它的面积S。l2、输出两个自然数相除的商和余数。解:设被除数、除数、商和余数,分别为A,B,C,D,均为变量,且都是整数类型。题中未给出具体的自然数A、B,可采用键盘输入方式。练习题答案第一题:Program ti;Var a,b,h,s:real;Begin write(a,b,h=); read(a,b,h); s:=(a+b)*h/2; writeln(s=,s);End.A:=13;B:=18;H:=9;练习题答案 Program Ex14; Var a,b,c,d : integer;

17、Begin Write(INPUT A,B:); 给出提示信息 Readln(a,b); 输入a,b Writeln; 输出一空行 Write(a,/,b,=); 输出等式之后不换行 c:=a div b; 整除运算,取商的整数部分 d:=a mod b; 相除求余运算,取商的余数部分 Writeln(C,d); 输出后自动换行 Readln 等待输入回车键 End.第三课第三课 带格式的输出语句及输入语句带格式的输出语句及输入语句l写语句的输出格式写语句的输出格式l输入语句(读语句)输入语句(读语句) l顺序结构程序设计顺序结构程序设计 一、写语句的输出格式一、写语句的输出格式l隐含的输出格

18、式隐含的输出格式标准场宽标准场宽数据类型数据类型 标准标准pascal Turbo pascaInteger 10 实际长度实际长度 Real 22 17 布尔型布尔型 10 4或或5 字符串字符串 串长串长 串长串长一、写语句的输出格式一、写语句的输出格式l指定单场宽指定单场宽 格式:write(表达式:N)或writeln(表达式:N),其中N为自然数。若数据实际长度小于指定场宽时,则一律向右靠齐,左留空格。 如write(1234:8);write(abcdef:12) 输出结果: 1234abcdef l指定双场宽指定双场宽 双场宽输出格式为: write(实型表达式:m:n),其中m

19、和n都是自然数,m 用以指定整个数据所占的宽度,n指定输出实数的小数位数。 如 : write(sqrt(75):9:4); 输出:8.6602一、写语句的输出格式一、写语句的输出格式l例例1 :写出下列程序在turbo pascal下的输出结果. program ex1; const s=abcdefg; var i:integer; r:real; c:char;b:boolean; begin i:=1234;r:=1234.5678; c:=#;b:=true; writeln(i,i:6,i:3); writeln(r,r:12:5,r:8:5); writeln(c,c:5); w

20、riteln(s,s:10,s:5); writeln(b,b:5,b:3); end.运行结果如下:1234123412341.2345678000E+031234.567801234.56780#abcdefgabcdefgabcdefgTRUETRUETRUE一、写语句的输出格式一、写语句的输出格式例例2:已知A=253,B=43,输出A*B的运算式子。即输出如下: 253*43=10879 253 * 43 759 +1012 10879一、写语句的输出格式一、写语句的输出格式 分析:分析:对于该问题,我们只要控制好输出时右靠齐即可。即前四行的总宽度一样(例如为12),第五行总宽度比前

21、面少1。第六、七行总宽度与前四行一样。 参与程序如下: Program ex2 var a,b:integer; begin a:=253;b:=43; writeln(a:10,*,b,=,a*b) writeln(a:12); write(*:8);writeln(b:4); writeln(-:12); writeln(a*3:12); write(+:6);writeln(a*4:5); writeln(-:12); writeln(a*b:12); end.二、二、 输入语句(读语句)输入语句(读语句)l读语句的一般格式:读语句的一般格式: read(); readln(); 其中变

22、量名表是用逗号隔开的若干个变量名组成的。 功能:从标准输入文件(即INPUT,一般对应着键盘 )中读入数据,并依次赋给相应的变量。 说明: read和readln是标准过程名,它们是标准标识符。 执行到read或readln语句时,系统处于等待状态,等待用户从键盘上输入数据,系统根据变量的数据类型的语法要求判断输入的字符是否合法。 在输入数值型(整型或实型)数据时,数据间要用空格或回车分隔开各个数据,输入足够个数的数据,否则仍要继续等待输入,但最后一定要有回车,表示该输入行结束,直到数据足够,该读语句执行结束,程序继续运行。 二、二、 输入语句(读语句)输入语句(读语句)l例例3:设a、b、c

23、为整型变量,需将它们的值分别赋以10,20,30,写出对应下列语句的所有可能输入格式。 Read(a,b,c); 解解:根据,即可列出所有可能输入格式 (a)102030 (b)1020 30 (c)10 2030 (d)10 20 30 其中表示回车键。下同。二、二、 输入语句(读语句)输入语句(读语句) read语句与readln语句的第一个区别是: read语句是一个接一个地读数据,在执行完本Read语句( 读完本语句中变量所需的数据)后,下一个读语句接着从该数据输入行中继续读数据,也就是说,不换行。如: Read(a,b); Read(c,d); Read(e); 如果输入数据行如下:

24、 123456 则a,b,c,d,e的值分别为1,2,3,4,5,如果后面无读语句则数据6是多余的,这是允许的。 Readln则不同,在读完本Readln语句中变量所需的数据后, 该数据行中剩余的数据多余无用,或者说,在读完本Readln语句中变量所需数据后,一定要读到一个回车,否则多余的数据无用。 例例4 readln(a,b);readln(c) 则例3中的4种输入格式只有(b)(d)是有效的.二、二、 输入语句(读语句)输入语句(读语句) readln语句与read语句的第二个区别是:read 后一定要有参数表,而readln可以不带参数表,即可以没有任何输入项, 只是等待读入一个换行符

25、(回车)。经常用于暂停程序的运行,直到输入一个回车。 例例5:设有下列语句: read(a,b,c); readln(d,e); readln; readln(f,g); 其中,所有变量均为整型。再设输入的数据如下: 12 345678 910 11 1213 列表给出每个变量的值 各变量的值如下表所示。各变量的值如下表所示。变量名变量名 a b c d e f g 值值 1 2 3 4 5 11 12二、二、 输入语句(读语句)输入语句(读语句) 为了避免可能出现的错误,建议在程序中按下列原则使用读语句: (A)如果没有特殊需要,在一个程序中尽量避免混合使用read语句和readln语句;

26、(B)尽量用readln语句来输入数据, 一个数据行对应一个readln语句; (C)由于执行read或readln语句时, 系统不会提供任何提示信息,因此,编程时最好在readln语句之前加以适当提示,例如: write(Input a,b,c:); readln(a,b,c); 在执行时,屏幕上显示: Input a,b,c: 其中,为光标。执行readln语句后,系统处于待待输入状态, 只有输入了所需数据后才继续往下执行。 三、顺序结构程序设计三、顺序结构程序设计l例例6:某幼儿园里,有5个小朋友编号为1,2,3,4,5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果,现在

27、他们做一个分糖果游戏。从1号小朋友开始,将他的糖果均分三份(如果有多余的,则他将多余的糖果吃掉),自己留一份,其余两份分给他的相邻的两个小朋友。接着2号、3号、4号、5号小朋友也这如果做。问一轮后,每个小朋友手上分别有多少糖果。 分析:分析:这道问题与第二课中的例2基本一样,只不过这里有5位小朋友,且他们初始时糖果的数目不确定。这里用a,b,c,d,e分别存放5个小朋友的糖果。初始时它们的值改为由键盘输入。其它都与第二课中的例2类似。三、顺序结构程序设计三、顺序结构程序设计参考程序如下: program fentang; var a,b,c,d,e:integer; begin write(a

28、,b,c,d,e= );readln(a,b,c,d,e); a:=a div 3;b:=b+a;e:=e+a; 1号均分后,号均分后,1、2、5号的糖果数变化情况号的糖果数变化情况 b:=b div 3;c:=c+b;a:=a+b; 2号均分后,号均分后,1、2、3号的糖果数变化情况号的糖果数变化情况 c:=c div 3;b:=b+c;d:=d+c; 3号均分后,号均分后,2、3、4号的糖果数变化情况号的糖果数变化情况 d:=d div 3;c:=c+d;e:=e+d; 4号均分后,号均分后,3、4、5号的糖果数变化情况号的糖果数变化情况 e:=e div 3;d:=d+e;a:=a+e;

29、 5号均分后,号均分后,4、5、1号的糖果数变化情况号的糖果数变化情况 writeln(a=,a); 输出结果输出结果 writeln(b=,b); writeln(c=,c); writeln(d=,d); writeln(e=,e); readln; 暂停暂停 end.写出程序运行结果program pro3; var a,b,h,s:real; begin a:=5; b:=6; h:=2; s:=(a+b)*h/2; writeln(s=,s:6:2); end. 运行结果:运行结果:s= 11.00第四课第四课 简单的分支结构程序设计简单的分支结构程序设计lPASCAL中的布尔(逻辑

30、)类型中的布尔(逻辑)类型 l关系表达式与布尔表达式关系表达式与布尔表达式 l简单的简单的IF语句语句 一、 PASCAL中的布尔(逻辑)类型中的布尔(逻辑)类型 l布尔常量布尔常量 在Pascal语言中“真”用ture表示,“假”用False表示。所以布尔类型只有TRUE与FALSE两个常量。l布尔变量(布尔变量(BOOLEAN) 如果我们将某些变量说明成布尔型,那么这些变量就是布尔变量,它们只能用于存放布尔值(ture或false)。 例如,VAR A,B:BOOLEAN;l布尔类型是顺序类型布尔类型是顺序类型 由于这种类型只有两个常量,Pascal语言中规定ture的序号为1,false

31、的序号为0。一、 PASCAL中的布尔(逻辑)类型中的布尔(逻辑)类型 a)输出 VAR A,B:BOOLEAN; BEGIN A:=TRUE; B:=FALSE; WRITELN(A,B); END. 输出结果: TRUEFALSE b)布尔类型变量不能直接用读语句输入 布尔类型变量不能通过读语句给它们提供值。事实上,我们可以通过间接方式对布尔变量进行值的输入。 例如,以下程序是错误的: var a,b,c:Boolean; begin readln(a,b,c); 错误语句 writeln(a,b,c); end.l布尔类型的输入与输出布尔类型的输入与输出二、关系表达式与布尔表达式关系表达

32、式与布尔表达式 l什么是关系表达式? 用小括号、=、=、=、将两个算术表达式连接起来的式子就称为关系表达式(比较式)。 如:3+78, x+y10, 2*70。二、关系表达式与布尔表达式关系表达式与布尔表达式l布尔运算及布尔表达式 Pascal还引入三种逻辑运算符:not、and、or。它们分别相当于数学上的“非”、“且”和“或”的意义。abNot aa and ba or bFFTFFFTTFTTFFFTTTFTT二、关系表达式与布尔表达式关系表达式与布尔表达式lpascal规定: 表达式中相同优先级的运算符,按从左到右顺序计算; 表达式中不同优先级的运算符,按从高到低顺序计算;括号函数no

33、t*、/、div、mod、and+、or、xor关系运算(、=、y then writeln(x=,x) else writeln(y=,y);end.三、简单的三、简单的IF语句语句例3:华榕超市里卖电池,每个电池角钱,若数量超过10个,则可打7.5折。 Program ex3;Program ex3; Var Num:integer;Price,Total:realVar Num:integer;Price,Total:real; ;BeginBegin Write(Num=);readln(NumWrite(Num=);readln(Num); ); Price=0.8;Price=0.

34、8; If Num10 then Price:=Price If Num10 then Price:=Price* *0.75;0.75; Total:=NumTotal:=Num* *Price;Price; Writeln(TotalWriteln(Total=,Total:10:2);=,Total:10:2); ReadlnReadln; ;End.End.三、简单的三、简单的IF语句语句 例4:任意输入3个四位数x、y和z,按由大到小的顺序输出。program ex4;var x,y,z,t:integer;begin write(Please input x,y,z:); read

35、ln(x,y,z); if xy then begin t:=x; x:=y; y:=t; end; if xz then begin t:=x; x:=z; z:=t; end;if y0与x0两种情况,然后对于情况x0,再区分x是小于0,还是等于0。program ex1;varx:real;y:integer;begin wrtie(Input x:);readln(x);if x0then y:=1 x0时,时,y的值为的值为1 else x0时时 if x=0then y:=0 else y:=-1;writeln(x=,x:6:2,y=,y);end.一、 IF语句的嵌套语句的嵌套

36、if x=0then if x0then y:=1 else y:=0else y=-1;一、 IF语句的嵌套语句的嵌套例:输入某同学的数学百分制成绩,要求输出成绩等级A、B、C、D。规定90分以上为A,80-89分为B,60-79分为C,60分以下者为D。一、 IF语句的嵌套语句的嵌套program cj;var score:real;begin writeln(score=); readln(score); if score=90 then writeln(A) else if score=80 then writeln(B) else if score=60 then writeln(C

37、) else writeln(D);end.二、二、case语句语句l格式:格式: case of :语句1; :语句2; : :语句n end;lcase语句的执行过程:语句的执行过程: 先计算表达式(称为情况表达式)的值,如果它的值等于某一个常量(称为情况常量,也称情况标号),则执行该情况常量后面的语句,在执行完语句后,跳到case语句的末尾end处。说 明 情况表达式必须是顺序类型的; 情况常量是情况表达式可能具有的值,因而应与情况表达式具有相同的类型; 情况常量出现的次序可以是任意的; 同一情况常量不能在同一个case语句中出现两次或两次以上; 每个分语句前可以有一个或若干个用逗号隔开

38、的情况常量; 如果情况表达式的值不落在情况常的范围内,则认为本case语句无效,执行case语句的下一个语句。turbo pascal中增加了一个否则的情况,即增加一个else子句,但也是可省的。 每个常量后面只能是一个语句或一个复合语句。二、二、case语句语句l例例2 根据x的值,求函数Y的值: l分析:利用case语句进行程序设计, 关键在于巧妙地构造情况表达式。本例中三种情况可用一个表达式区分出来:Trunc(x/100)。因为x在(0100)之间时表达式值为0;x在100,200)时表达式值为1 ;其余部分可用else子句表示。二、二、case语句语句 program ex; var

39、 x,y:real; begin write(Input x:);readln(x); case trunc(x/100) of 0:y:=x+1; 1:y:=x-1; else y:=0; end; end of case writeln(x=,x:8:2),y=,y:8:2); end. 三、选择结构的程序设计三、选择结构的程序设计 例例3 3 :输入一个年号:输入一个年号, ,判断它是否是闰年。判断它是否是闰年。 分析:什么是闰年?闰年在分析:什么是闰年?闰年在2 2月末增加一月末增加一天,闰年天,闰年366366天。天。 闰年的计算方法:公元闰年的计算方法:公元纪年的年数可以被四整除,

40、即为闰年;被纪年的年数可以被四整除,即为闰年;被100100整除而不能被整除而不能被400400整除为平年;被整除为平年;被100100整除也可被整除也可被400400整除的为闰年。如整除的为闰年。如20002000年年是闰年,而是闰年,而19001900年不是。年不是。 三、选择结构的程序设计三、选择结构的程序设计 program ex; var year:integer; begin write(Input year:);readln(year); write(year:6); if (year mod 400=0 )then writeln(is a leap year.) else i

41、f (year mod 4=0)and(year mod 1000) then writeln(is a leap year.) else writeln(is not a leap year.); end.三、选择结构的程序设计三、选择结构的程序设计 例例4 4 判断判断20072007年年, ,每个月份的天数。每个月份的天数。 program days; var month,days:integer; begin write(Input month:);readln(month); case month of 1,3,5,7,8,10,12:days:=31; 4,6,9,11 :days

42、:=30; 2 :days:=28; else days:=0; end; if days0 then writeln(Days=,days); end.三、选择结构的程序设计三、选择结构的程序设计 例例5 5 期未来临了,班长小Q决定将剩余班费X元钱,用于购买若干支钢笔奖励给一些学习好、表现好的同学。已知商店里有三种钢笔,它们的单价为6元、5元和4元。小Q想买尽量多的笔(鼓励尽量多的同学),同时他又不想有剩余钱。请您编一程序,帮小Q制订出一种买笔的方案。 分析:对于以上的实际问题,要买尽量多的笔,易知都买分析:对于以上的实际问题,要买尽量多的笔,易知都买4元的笔肯定可以买最多支笔。因此最多可

43、买的笔为元的笔肯定可以买最多支笔。因此最多可买的笔为x div 4支。支。由于小由于小q要把钱用完,故我们可以按以下方法将钱用完:若要把钱用完,故我们可以按以下方法将钱用完:若买完买完x div 4支支4元钱的笔,还剩元钱的笔,还剩1元,则元,则4元钱的笔少买元钱的笔少买1支,支,换成一支换成一支5元笔即可;若买完元笔即可;若买完x div 4支支4元钱的笔,还剩元钱的笔,还剩2元,元,则则4元钱的笔少买元钱的笔少买1支,换成一支支,换成一支6元笔即可;若买完元笔即可;若买完x div 4支支4元钱的笔,还剩元钱的笔,还剩3元,则元,则4元钱的笔少买元钱的笔少买2支,换成一支支,换成一支5元笔

44、和一支元笔和一支6元笔即可。元笔即可。 从以上对买笔方案的调整,可以看出笔的数目都是从以上对买笔方案的调整,可以看出笔的数目都是x div 4,因此该方案因此该方案的确为最优方案。三、选择结构的程序设计三、选择结构的程序设计 program pen; var a,b,c:integer; a,b,c分别表示在买笔方案中,分别表示在买笔方案中,6元、元、5元和元和4元钱笔的数目元钱笔的数目 x,y:integer; x,y分别表示剩余班费和买完最多的分别表示剩余班费和买完最多的4元笔后剩的钱元笔后剩的钱 begin write(x=);readln(x); 输入输入x c:=x div 4; 4

45、元笔最多买的数目元笔最多买的数目 y:=x mod 4; 求买完求买完c支支4元笔后剩余的钱数元笔后剩余的钱数y case y of 0 : begin a:=0;b:=0; end; 1 : begin a:=0;b:=1;c:=c-1; end; 2 : begin a:=1;b:=0; c:=c-1;end; 3 : begin a:=1;b:=1; c:=c-2;end; end; writeln(a=,a,b=,b,c=,c); end. 练习题答案:2 2、program lx2;program lx2; var x,y,z,t:real var x,y,z,t:real; ; b

46、egin begin write(input x,y,z write(input x,y,z:);:); readln(x,y,z readln(x,y,z); ); if xy then if xy then begin begin t:=x;x:=y;y t:=x;x:=y;y:=t;:=t; end; end; if xz thenif xz then begin begin t:=x;x:=z;z t:=x;x:=z;z:=t;:=t; end; end;if yz thenif yz then begin begin t:=y;y:=z;z t:=y;y:=z;z:=t;:=t; e

47、nd; end; write(x,y,z write(x,y,z=);=); readln(x,y,z readln(x,y,z); ); end. end.第六课第六课 for循环语句循环语句lfor语句的一般格式语句的一般格式 lFor语句执行过程语句执行过程 l说明说明 l应用举例应用举例 一、 for语句的一般格式语句的一般格式 for := to do ;for := downto do 其中其中for、to、downto和和do是是Pascal保留字。表达式保留字。表达式1 与与表达式表达式2的值也称为初值和终值。的值也称为初值和终值。二、二、For语句执行过程语句执行过程先将初值

48、赋给左边的变量(称为循环控制变量);先将初值赋给左边的变量(称为循环控制变量);判断循环控制变量的值是否已判断循环控制变量的值是否已 超过超过 终值,如已超终值,如已超过,则跳到步骤过,则跳到步骤;如果末超过终值,则执行如果末超过终值,则执行dodo后面的那个语句(称为后面的那个语句(称为循环体);循环体);循环变量递增(对循环变量递增(对toto)或递减(对)或递减(对downtdownt o) o);返回步骤返回步骤;循环结束,执行循环结束,执行forfor循环下面的一个语句。循环下面的一个语句。三、说明三、说明循环控制变量必须是顺序类型。例如,可以是整型、字符型等,但不能为实型。循环控制

49、变量的值递增或递减的规律是:选用to则为递增;选用downto则递减。所谓循环控制变量的值超过终值,对递增型循环,超过指大于,对递减型循环,超过指小于。循环体可以是一个基本语句,也可以是一个复合语句。循环控制变量的初值和终值一经确定,循环次数就确定了。但是在循环体内对循环变量的值进行修改,常常会使得循环提前结束或进入死环。建议不要在循环体中随意修改控制变量的值。for语句中的初值、终值都可以是顺序类型的常量、变量、表达式。 写出下列程序的运行结果:1、J:=0; For k:=3 to 7 do j:=j+k; Write(j=:8,j);输出结果为:输出结果为: j=25j=252、k:=0

50、; for i:=1 to 10 do begin k:=k+1; write(k); end;输出结果为:输出结果为: 55写出下列程序的运行结果:3、program p3; var a,b,i:integer; begin a:=1; b:=4; for i:=a to b do begin a:=3; b:=5; write(i:3); end; end.执行结果: 1 2 3 4四、应用举例四、应用举例计算1234+100之和。program l1;var I,sum:integer;begin sum:=0; for i:=1 to 100 do sum:=sum+i; writel

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com