Pascal_讲课稿_第1页
Pascal_讲课稿_第2页
Pascal_讲课稿_第3页
Pascal_讲课稿_第4页
Pascal_讲课稿_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

1、Pascal语言上课笔记2011-12临沂一中专用(勿外传)第一节 Pascal 程序与上机调试一、程序的组成例题:10个同学每人买两本书,每本书的价格分别是a元和b元,计算一共需要多少元钱。参考程序:输入两个整数program sum1; /程序首部。 程序名:0001001sum1.pasconst /程序说明部分,定义常量maxn为10; maxn=10; var a,b,c:integer; /程序说明部分,a、b、c被说明为整型变量。begin /程序执行部分,下面是程序的内容。 write(a=); /在屏幕上输出一个字符串“a=”,输出完后不换行。read(a); /从键盘输入一

2、个数值赋给变量awrite(b=); read(b);c:=maxn*(a+b); /将a和b的和赋值给变量cwriteln(,a,+,b, ), *,maxn, =,c); /输出a+b=c的等式,输出完后换行end. /程序结束FreePascal 常用快捷键:打开一个已有文件 ( Open ):F3保存正在编辑的文件 ( Save ):F2编译程序 ( Compile ):Alt + F9 运行程序 ( Run ):Ctrl + F9查看程序运行结果:Alt + F5注:完整的PASCAL程序框架program 程序名(程序参数表); label 标号说明; const 常量说明; ty

3、pe 类型说明; var 变量说明; function 函数说明; procedure 过程说明; begin 程序语句; end.在Free Pascal 中可省程序参数表。在程序执行部分使用的标号、常量、类型、变量、记录、文件、过程和函数,都必须在说明部分进行说明。但并不是每个程序都必需的,根据需要而设。程序执行部分是指Begin开始到最后一条End. 结束语句的部分,是程序的核心。它由一系列语句组成,语句之间用“;”隔开,允许一行写多个语句,也允许一个语句写成几行。一般情况下一行只写一个语句。第二节 常量、变量和数据类型一、常量1、常量:在程序运行的整个过程中其值不能发生变化的量。2、常

4、量定义:常量定义出现在说明部分。格式如下: const /这种方式定义的常量在整个程序中不可以改变。 manx=1000; /常量定义赋值时用等号,即“=”,而不是“:=” 。 pi=3.1415926;3、常量定义部分必须以保留字开头,可以包含一个或多个常量定义,而且每个常量定义均以分号结束。二、变量1、变量定义:在程序的运行过程中其值可以发生改变的量。它具有以下三个要素:变量名、变量类型和变量值。2、变量说明 变量定义出现在说明部分。格式如下: var 变量名列表:类型; 变量名列表:类型; 实例: var a,b,c:integer; m:char; x,y:real; i,j:Bool

5、ean;3、变量名 自己命名一个适合的标识符。4、变量类型 程序在执行时,每个变量都要有相应的值;类型不一样,值也就不一样。5、注意: Pascal 语言中规定,在程序中使用的变量必须是:先定义后使用。否则,程序编译时会提示:Identifier not found XXX 意思是:变量XXX不识别。三、数据类型1、数据是程序设计的一个重要内容,其重要特征数据类型,确定了该数据的形、取值范围以及所能参与的运算。在Pascal语言中,无论常量还是变量必须属于一个确定的数据类型。Pascal的数据类型,按它的特点可分为三大类,如下图所示:简单类型特点是结构简单,不能被分解成为其它类型;结构类型特点

6、是构造类型,一般由其它数据类型按照一定的规则组合而成;指针类型具有特殊性,主要用于动态数据处理。简单类型中的整型、实型、字符型和布尔型是标准类型,枚举型和子界型是用户自定义类型的非标准型。所谓标准类型是指它已由Pascal语言预告定义,用户可以直接引用的数据类型。在这些数据类型中简单类型都是有序类型,除了实型以外的简单类型都是顺序类型,所谓顺序类型就是他们的值不仅是有序的而且是有顺序号。2、下面主要介绍整型、实型、字符型和布尔型四种常用的数据类型。(1)、整型 一个整型数据用来存放整数。Free Pascal支持七种预定义整型,它们是shortint(短整型)、integer(整型)、 lon

7、gint(长整型)、 byte(字节型)、 word(字类型)、int64和qword,Free Pascal分别用相应的名字作为他们的标识符。每一种类型规定了相应的整数取值范围以及所占用的内存字节数。Free Pascal 语言预定义了两个整型常量标识符:maxint 和 maxlongint ,它们各表示确定的常数值,maxint为32767,maxlongint为2147483647,它们的类型分别是integer和longint 。如下表所示:类 型数值范围占字节数二进制位数shortint-128 1271带符号8位byte0 2551不带符号8位word0 655352不带符号16

8、位integer-32768 327672带符号16位longint-2147483648 21474836474带符号32位int64-9223372036854775808 92233720368547758078带符号64位qword0 184467440737095516158不带符号64位(2)、实型Free Pascal 语言支持五种预定义实型,它们是:real(实型)、single(单精度实型)、 double(双精度实型)、 comp(装配实型)、 extended(扩展实型)。每一种类型规定了相应的实数取值范围、所占用的内存字节数以及它们所能达到的精度。如下表所示:类 型数值

9、范围占字节数有效位数real2.9e-39 1.7e3861112single1.5e-45 3.4e38478double5.0e-324 1.7e30881516comp-263+1 263-181920extended3.4e-4932 1.1e4932101920实型常量包括正实数、负实数和实数0 。Free Pascal 语言中表示实型常量的形式通常有两种:、十进制表示法这是我们最熟悉也最常用的带小数点的表示方法,要求小数点前后必须有数字,如0.0、-0.0、+5.61、-8.0、-6.050等都是实型常量,而0.、.012等形式都不合法。、科学记数法科学记数法是采用指数形式的表示方

10、法,如1.25×105可以表示成1.25E+05。其中E表示10这个底数,而E之前为一个十进制表示的小数,称为尾数,E之后必须为一个整数,称为“指数”。合 法:-1234.56E+26、+0.268E-5、1E5不合法:.34E12、2.E5、E5、E、1.2E+0.5注意:实数运算比整数速度慢并且无法像整数那样精确表示,只能近似表示。(3)、布尔型(boolean)一个布尔型数据用来存放逻辑值(布尔值),布尔型的值只有两个:false假、true真。(4)、字符型(char)字符型只允许单引号中有一个字符,否则就是字符串(string)。也就是我们信息技术课本中讲的那个ASCII码

11、。如A、y、9、0调试如下程序,看结果如何?program aa; /程序名:0001002shujuleixing.pasvar a,b:integer; c,d:real; m,n:boolean; ch:char; begin a:=10; b:=55; writeln(a=,a, , b=,b); c:=(a+200)/b; writeln(c=,c); writeln(c=,c:10:2); /这种输出方式叫场宽控制,如果不使用,默认方式是科学记数法输出。 ch:=R; writeln( ch=,ch); m:=5>6; n:=10>9; writeln( m=,m, ,

12、 n= ,n);end. 第三节 表达式与常用函数一、赋值语句1、格式:变量名:=表达式;或 函数名:=表达式;如:X:=5; X:=X+1; 此句的意义是:把变量X的值加1后再赋给X,即执行完此句后的变量X的值,是执行该句前变量X的值加1之后的结果。2、注意:(1)” := “ 称为赋值号,不要与 ” = “ 混淆。赋值有方向性,左边只能是变量,不能是表达式,如 x := 1是非法的。(2)赋值号两边的类型必须相同,但是整型表达式可以赋值给实型,反之不成立。(3)一个赋值语句只能给一个变量赋值,变量可以赋值多次,但只保留最后一次的值。(4)被赋值的变量可以作为表达式因子参与运算,如: i:=

13、i+1;是合法的。(5)对变量的赋值是对变量的存入访问。如d:=a;语句执行后,d的变量内容就已经是a变量的内容,但是a变量的值并没有消失与改变。 (6)、在实际编程中,我们经常使用a:=a+1;作为计数器,用s:=s+x;作为累加器,用t:=t*n;作为累乘器。二、Pascal 常用函数库1、正常书写标准函数名和调用的参数。2、每个函数对自变量的数据类型都有一定的要求。如奇函数:Odd (x),函数的结果为布尔型。当X为奇数时,函数值为true;当X为偶数时,函数值为false。例如: Odd (13)= True Odd (16)= False3、函数值的类型也是一定的。算术运算函数函数名

14、标识符说明示例绝对值函数abs(x)取变量X的绝对值abs (101)=101平方函数sqr()求X的平方sqr(-5)=25平方根函数sqrt()求X的平方根sqrt(16)=4正弦函数sin(x)正弦函数,X为弧度数sin(1)=0.845余弦函数cos(x)余弦函数,X为弧度数cos(1)=0.540反正切函数arctan(x)反正切函数,返回值为弧度数arctan(1)=0.784自然指数函数exp(x)求X的自然指数,exexp(1)=2.718282exp(y*lnx)求X的Y次幂,XY ,结果为实形。Exp(4*ln(3)=81自然对数函数ln(x)求X的自然对数ln(

15、1)=0随机函数random(x)随机函数:无自变量时,函数值为0,1)间的随机小数;X为整数时,取0,X)之间的随机整数;在调用随机函数之前,应该使用randomize过程进行初始化,生成一个随机序列,否则产生的数都一样。示例程序:program cimi; /程序名:0001003zhishucimi.pasvar / /求i的j次幂 结果为实型。 i,j:integer; c:real;begin read(i,j); c:=exp(j*ln(i); writeln(c:10:2);gram suijihanshu; /程序名:0001004suijihanshu.pas

16、var / 如何使用随机函数。 i,j:integer;begin randomize; for i:=1 to 10 do begin j:=random(100); write(j:5); end;end. 算术运算过程过程名标识符说明加1inc(i)使i:=i+1加binc(i,b)使i:=i+b减1dec(i)使i:=i-1减bdec(i,b)使i:=i-b转换函数函数名标识符说明示例取整函数int(x)返回X的整数部分,结果为实型int (10.67)=10取小数函数frac(x)返回X的小数部分frac(10.67)=0.67截尾函数trunc(x)截取X的整数部分,结果

17、为长整型trunc (10.67)=10舍入函数round(x)对X进行四舍五入,结果为长整型round (10.67)=11奇偶函数odd(x)X为奇数时,函数值为true;否则,为falseodd(-101)=trueodd(256)=false序数函数ord(x)函数值为自变量对应的序号ord(a)=97字符函数chr(x)X表示ASCII值,即字符序号,函数值为对应的字符。chr(97)= a大写字母函数upcase(x)使小写字母变成大写upcase(a)= A顺序函数函数名标识符说明示例前趋函数pred(x)求X的前驱,也就是前一个pred(y)= x后续函数succ()求X的后继

18、,也就是后一个succ(y)= z4、Pascal语言中的表达式是由符合Pascal语法规定的运算符、圆括号和运算对象组成,运算对象包括常量、变量、函数、集合等。根据表达式计算值的类型,表达式可分为算术表达式、逻辑表达式、字符表达式和集合表达式。(1)、算术运算符运算符运算运算对象结果类型+ 加整型、实型只要有一个运算对象是实型,结果就是实型,如果全部的运算对象都是整型并且运算不是除法,则结果为整型,若运算是除法,则结果是实型- 减整型、实型* 乘整型、实型/ 除整型、实型div 整除整型 整型mod 取余(取模)整型 整型(2)、逻辑运算符、布尔型逻辑运算参与逻辑运算的操作数均为布尔型,运算

19、结果也是布尔型。其中:not 只要求一个操作数,是单目运算符,而and、or 、xor 要有两个操作数。ABnot AA and BA or BA xor Btruetrueflasetruetrueflasetrueflaseflaseflasetruetrueflasetruetrueflasetruetrueflaseflasetrueflaseflaseflase、二进制数逻辑运算参与逻辑运算的操作数均为整型,运算结果也是整型。然后,在计算机内的数据是以二进制数方式存放的,逻辑运算时按整型数的二进制数的每位实现逻辑运算,运算结果表示表示成整型。每位逻辑运算的真值表如上表,只是true

20、为二进制数1,flase为二进制数0,二进制位运算如下表。运算符操作说明示例and二进制按位与10 and 7=2or二进制按位或10 or 7=15xor二进制按位异或10 xor 7=13shl二进制左移2 shl 7=256shr二进制右移8 shr 2=2 (3)、关系运算符及比较运算符(最低优先级) 运算符运算运算对象结果类型=等于简单类型布尔型<> 不等于简单类型布尔型<小于简单类型布尔型>大于简单类型布尔型<= 小于等于简单类型布尔型 >= 大于等于简单类型布尔型5、优先级:具体优先顺序:(1)、括号内先算(2)、函数(3)、运算符优先顺序 运

21、算符优先级 not 1(高)*,/,div,mod,and 2xor,+,-,or 3in,=,<>,>=,<=,<> 4(低)(4)、同级运算按从左到右的次序。综合题例:program ab01; /综合运用 程序名:0001005zongheyunyong.pasvar in1,in2,in3,in4,in5,in6:integer; in11,in22,in33,in44,in55,in66:integer; re1,re2,re3,re4,re5,re6:real; re11,re22,re33,re44,re55,re66:real; x1,x2,

22、x3,x4,x5,x6:boolean; x11,x22,x33,x44,x55,x66:boolean; ch1,ch2,ch3,ch4,ch5,ch6:char; ch11,ch22,ch33,ch44,ch55,ch66:char;begin writeln('Please input 4 integer:'); read(in1,in2,in3,in4); writeln('abs(',in1,')=',abs(in1); writeln('sqr(',in2,')=',sqr(in2); writeln(

23、'sqrt(',in3,')=',sqrt(in3); writeln('sin(',in4,')=',sin(in4); writeln('Please input a integer,in5='); read(in5); if odd(in5) then writeln('odd(',in5,')=true') else writeln('odd(',in5,')=false'); randomize; in6:=random(100); writ

24、eln('in6=',in6); inc(in6,12); writeln('inc(in6+12)=',in6); writeln('plase input a integer:'); readln(in11); dec(in6,in11); writeln('in6-',in11,'=',in6); writeln('Please input a real,re1='); readln(re1); re2:=int(re1); re3:=trunc(re1); writeln('int(

25、',re1,')=',re2:10:2); writeln('trunc(',re1,')=',re3:0:3); writeln('ord(','A',')=',ord('A'); writeln('Please input a integer(0127):'); read(in33); writeln('ASCII=',in33,' de zifu shi ',chr(in33); readlnend.第四节 输入、输出语句

26、一、输入语句1、read( < 变量名表 > ):2、readln( < 变量名表 > ):3、二者的区别:读完相应的变量表后,换不换行的问题。说明:()、变量名表由一个或多个由逗号隔开的变量标识符组成,它们必须在程序说明部分预先说明,可以是整型、实型、字符型,布尔型不能直接读入。()、数据可从键盘读入,也可以从文件读入。()、readln可以不包含变量名表,下面是等价的。read(a,b); readln; 等价于readln(a,b); 调试下面的例子:变量说明var a,b,c,d:integer;执行结果abcd程序段一read(a);readln(b,c);r

27、ead(d);1236程序段二readln (a);read(b,c);read(d);1678数据输入1 2 3 4 56 7 8调试程序:program shuru; /输入语句练习 程序名:0001006shuru.pasuses crt; /uses crt与readkey成对使用,作用是程序运行结果后,不返回编辑页面,var /等看完结果再按一下键盘上的回车键再回到编辑页面。 a,b,c,d:integer;begin read(a); readln(b,c); read(d); readln; writeln('a=',a:2,' b=',b:2,&

28、#39; c=',c:2,' d=',d:2); readln(a); read(b,c); read(d); writeln('a=',a:2,' b=',b:2,' c=',c:2,' d=',d:2); readkeyend. 此题输入格式如下: 1 2 3 4 56 7 8此时按回车后出现结果,然后再输入1 2 3 4 56 7 8然后对比两组结果有什么不同,体会与理解两种输入格式的区别。二、输出语句1、write(x):2、writeln(x ):3、二者的区别:输出相应的变量表后,换不换行的问题

29、。说明:()、输出的内容包括变量、引号括起的内容、表达式。()、输出场宽的控制。、x如果是实数,不加控制,将按科学计数法输出、单场宽、双场宽、单引号中的内容原样输出。4、调试下面的例子:程序代码运行结果程序段一write(I am a );write(student.);I am a student.程序段二writeln(I am a );write(student.);I am a student.调试程序:program shuchu; /输出语句练习 程序名:0001007shuchu.pasbegin write('I am a '); write('stud

30、ent.'); writeln; /本句只是输出换行,即换到下一行。 writeln('I am a '); write('student.');end.第五节 顺序结构程序设计一、顺序结构若程序按照语句的书写先后顺序逐句执行,直到程序的结束,这种结构我们叫做顺序结构。该结构最简单。如下Begin 语句1;语句2;语句n;End.注意:每条语句后面以分号“;”结束。例题1:随机产生一个四位数,并求出各位数字和。分析:(1)、定义六个变量,一个用于存放产生的四位数,四个用于存放每一位(千、百、十、个位)上的那个数字,最后一个用于存放这四个数字的和。(2)、

31、随机产生一个四位数。 要产生区间A,B之间的数,表达式为A+random(B-A+1)。(3)、如何拆分一个数。 可以利用前面学过的两个运算符div和mod实现。程序如下:program feilisws; / 理解顺序结构 程序名:0001008shunxujiegou.pasvar number,a,b,c,d,s:integer;begin randomize; number:=1000+random(9000); /随机产生一个四位数赋给变量number a:=number mod 10; /对number进行各位数分离,a是个位上的数字 b:=number div 10 mod 10

32、; /b是十位上的数字 c:=number div 100 mod 10; /c是百位上的数字 d:=number div 1000; /d是千位上的数字 s:=a+b+c+d; writeln('number=',number); writeln(a, '+',b, '+',c, '+',d, '=',s); readlnend.例题2:交换两个变量的值:由键盘输入两个正整数A和B,编程交换这两个变量的值。解析:可以这样理解,现在有两个杯子,A里面装有牛奶、B里面装有果汁,如果要把A里面的牛奶倒入B里面,而B里面

33、的果汁倒入A里面,可以借助另外一个空杯子C,过程是这样的:先把A里面的牛奶倒入C里面,再把B里面的果汁倒入A里面,最后把C里面的牛奶再倒入B里面。程序如下:program jiaohuan; /两个变量的值交换 程序名:0001009jiaohuan.pasvar a,b,c:integer;begin write('a,b='); read(a,b); writeln('yuan a=',a); writeln('yuan b=',b); c:=a; a:=b; b:=c; writeln('xin a=',a); writel

34、n('xin b=',b);end.例题3:分钱游戏。甲、乙、丙三人共有24元钱,先由甲分钱给乙、丙两人,所分给的数与各人已有数相同;接着由乙分给甲、丙,分法同前;再由丙分钱给甲、乙,分法亦同前。经上述三次分钱之后,每个人的钱数恰好一样多。 求原先各人的钱数分别是多少?解析:设甲、乙、丙三人的钱数分别为A,B,C。用倒推(逆序)算法, 从最后结果入手,按反相顺序,分步骤推算出每次各人当时的钱数:(在每个步骤中,各人钱数分别存在A、B、C中)  步骤:A=8 B=8 C=8        这是最后结果的钱数,三

35、人都一样多   步骤: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未得到乙分给的钱时,只有

36、巳有数的一半;B应包含给A,C及本身数三者之和   步骤: B=B/2 (=7)     C=C/2 (=4)     A=A+B+C(=13)  B、 C未得到甲分给的钱时,只有巳有数的一半;A应包含给B,C及本身数三者之和   步骤: 输出A(=13)B(=7)C(=4)此时的A,B,C 就是三人原先的钱数 甲(A)乙(B)丙(C)最后每人钱数888丙分之前4416乙分之前2148甲分之前1374细心观察,会发现本程序语句的顺序很关键。此例用反推顺序(逆序),按步骤正确推

37、算出各变量的值。当然,有的问题可按正序步骤编程,这类程序都称为顺序程序。程序如下:program fen_money; /分钱游戏 程序名:0001010fenqian.pasvar a,b,c:integer;begin a:=8;b:=8;c:=8; 对应于步骤 a:=a div 2;b:=b div 2;c:=a+b+c; 对应于步骤 a:=a div 2;c:=c div 2;b:=a+b+c; 对应于步骤 b:=b div 2;c:=c div 2;a:=a+b+c; 对应于步骤 writeln('a=',a,' ':4,'b=',b,

38、' ':4,'c=',c); 输出 readlnend. 例题4:输入x,y。若在圆环内,输出true,若在圆环外;输出false。圆环如图所示。讨论:如图所示,若式子1x2+y24成立,则在圆环内,否则在圆环外。设布尔变量bool,当x,y在圆环内时,让它取值为true,否则取值为false。其中 “点(x,y)若在圆环内”的表达式:(x2+y212)且(x2+y222) 程序如下:program yuanhuandian; /点是否在圆环内 程序名:0001010yuanhuan.pasvar x,y :real; bool:boolean;begin wr

39、iteln; write('x='); readln(x); write('y='); readln(y); bool:=(x*x+y*y>=1) and (x*x+y*y<=4); write(bool); readln;end.例题5:输入一个字符,求其序号、前导(即前一字符)、后继(即后一字符)。程序如下:program pred_succ; /求字符的前驱与后继 程序名:0001012predsucc.pasvar ch,pch,sch:char; num:integer;begin writeln; write('please in

40、put a character:'); readln(ch); write('pred_ch:',pred(ch),' succ_ch:',succ(ch),' num:',ord(ch); readln();end./ 测试时,可以删除倒数第二条语句readln();后,执行情况有何不同?练习题: 1、输入圆的半径r,计算圆的周长和面积。2、写一程序读入三角形的三个边a,b,c,计算并打印三角形的面积S。可利用下列公式计算。 其中 3、输入一个三位整数,将它们反向输出。例如输入139,输出应为931。第六节 选择结构程序设计一、复合语句

41、复合语句的一般形式:begin 语句1;语句2;语句n;end.在这里,begin与end起语句括号的作用,相当于使用了一个语句括号将若干语句括了起来,看作一句运行。程序运行时,通常是按书写的顺序去执行复合语句的各个语句。常用在程序中的固定位置。比如选择与循环语句中某个标识符的后面。二、条件语句(if语句)1、格式(1)、if 条件表达式 then 语句;(2)、if 条件表达式 then 语句1 else 语句2;对于格式(1):在条件为真时,执行THEN后的语句。在条件为假时,不执行THEN后的语句,在两种情况下的后继语句都是IF语句的下一个语句。对于格式(2):其中“条件表达式”实际上是

42、一个布尔表达式,它的值可以是真(true)或假(false)。在条件为真时,执行语句1,否则(条件为假)执行语句2。2、功能: (1)、格式1的if 语句的执行标准是:若条件表达式的条件为真,则执行then后面的语句,当条件不成立时,退出if结构,去执行if语句后面的语句。(2)、格式2的if 语句的执行标准是:若条件表达式的条件为真,则执行then后面的语句1,否则执行后面的语句2。要特别注意else前面的语句1最后不能有分号,因为分号是两个语句之间的分隔符,而else并非语句,如果在此处添加了分号,则在编译时就会认为if 语句到此结束,而把else当做另一句的开头,输出出错信息。如果语句1

43、和语句2有内容不是一个语句,而是多个语句,此时要有复合语句,即用begin和end括起来。例题1:输入两个数a、b,将它们由小到大输出。程序如下:program max00; /两个数按由小到大顺序输出 程序名:0001013if_daxiao.pasvar a,b,t:integer;begin read(a,b); if a>b then begin /如果第一个数大于第二个数,则两个数互换。 t:=a;a:=b;b:=t; end; writeln(a,' ',b);end.说明:本题程序中红色标出的程序段,看看换成下面的语句有什么区别?if a>b then

44、 writeln(b,' ',a) else writeln(a,' ',b);例题2:输入一个三位数,将数字位置重新排列,组成一尽可能大的三位数。分析:利用运算符div和mod分离数字,然后确定三个数字的大小顺序,最后重新组成一个新的三位数。程序如下:program sanweishu; /重组三位数 程序名:0001014sanweishu.pasvar t,a,b,c,n:integer;begin read(n); a:=n div 100; b:=n div 10 mod 10; c:=n mod 10; if a<b then begin t:

45、=a;a:=b;b:=t; end; if a<c then begin t:=a;a:=c;c:=t; end; if b<c then begin t:=b;b:=c;c:=t; end; n:=100*a+10*b+c; writeln(n);end.例题3:托运行李火车托运行李,要根据行李的重量按不同标准收费。例如不超过50kg,按每公斤0.35元收费。若超过50kg,则其中50kg按每公斤0.35元收费,其余超过部分按每公斤0.50元收费。现输入托运行李重量,要求计算并输出托运费。说明:数学建模:设托运行李重量为weight,该问题要求根据weight是否超过50,按不同

46、公式计算出托运费。设托运费为pay。weight和pay均为实型。算法如下:(1)、读入weight的值。(2)、根据weight的大小选择不同的公式计算pay。(3)、输出pay。公式如下: pay = weight * 0.35 weight50 50 * 0.35 + (weight 50) * 0.50 weight>50程序如下:program tuoyun; /火车托运费用计算 程序名:0001015tuoyun.pasvar weight,pay:real;begin write('weight='); readln(weight); if weight&l

47、t;=50 then pay:=0.35*weight else pay:=0.35*50+0.5*(weight-50); writeln('pay=',pay:6:2);end.3、嵌套:if语句可以多层嵌套。嵌套时为了避免误解,可以用begin ,end括起嵌套部分,构成一个复合语句,从外部看来就相当于一个语句;else分句一般和最近的if分句配套: if 条件 then begin if 条件1 then else ; end else begin if 条件2 then else ; end;if 条件语句后面的then 和else后都可以跟if 语句,也可以只一个语

48、句跟if 语句,右图就是一种情况:例题:有一个函数表达式如下:编写程序,输入x,输出y的值。程序如下:program daxiaoyuling; /大于小于等于0 程序名:0001016daxiaoyuling.pasvar x:real; y:integer;begin write('please input x='); readln(x); if x<0 then y:=-1 else if x>0 then y:=1 else y:=0; writeln('y=',y);end.三、分支语句(case语句)1、格式case语句又称分情况(分支)

49、语句,格式如下:case表达式 of 标号1:语句1; 标号2:语句2; 标号n:语句n; <else 语句n+1> /可选项,即此句可有可没有end;2、功能(1)、先计算表达式的值,注意:这个表达式中不能含有int 、round等函数,表达式的值不能是实数。(2)、然后用表达式的值依次与各标号进行对照,当找到一个与测试表达式的值相匹配的标号后,就去执行该case标号后相应的语句块,然后跳到与case相对应的end后面的语句继续执行。(3)、如果找不到与之匹配的标号(若有else则执行它后面的语句),退出case语句,执行它后面的语句。(4)、end与case对应;标号与语句之间

50、用“:”分隔;else与语句之间不用分隔符。(5)、标号必须是一常量,其类型与表达式的类型一致(6)、可以多个标号对应同一条语句 (7)、每个标号后面的语句可以是多条语句,但必须用复合语句 (beginend)括起来例题1:“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠。编一个程序,用户输入加油量、汽油品种和服务类型(f-自动,m-自己,e-协助),然后计算应付款。程序如下:program pcase1; /分支语句加油 程序名:0001017case_oil.pasvar oil,help:char; kg,total:real;begin write('En

51、ter the amount in kilograms(kg):'); readln(kg); write('Which type of the gasoline(a,b,c):'); readln(oil); write('Which type for service(f,m,e):'); readln(help); case oil of /处理汽油的类型 'a': total:=1.50*kg; 'b': total:=1.35*kg; 'c': total:=1.18*kg; else writel

52、n('Input Error!') end; case help of /处理服务类型 'f':; 'm': total:=total*(1-0.05); 'e': total:=total*(1-0.10); else writeln('Input Error!') end; writeln; writeln('Total is ',total:10:2);end.例题2:从键盘上读入年和月,输出该月有多少天。讨论:每年的1、3、5、7、8、10、12月,每月有31天;4、6、9、11月,每月有30天;2月闰年有29天,平年有28天。年号能被4整除,但不能被100

温馨提示

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

评论

0/150

提交评论