pascal第2章简单程序设计.ppt
《pascal第2章简单程序设计.ppt》由会员分享,可在线阅读,更多相关《pascal第2章简单程序设计.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章第二章 顺序结构顺序结构第一节赋值语句第一节赋值语句第二节输入输出语句第二节输入输出语句第三节常量和变量第三节常量和变量第四节标准数据类型第四节标准数据类型第五节顺序结构程序设计第五节顺序结构程序设计 第一章的简单程序已体现出处理问题的步骤的顺序关系,每条语句按自上而下的顺序依次执行一次,这种自上而下依次执行的程序结构称为顺序结构程序。在一个程序中,所有的操作都由执行部分来完成,而执行部分又都是由一条条语句组成的。因此,先要学习Pascal语言的基本语句,并且在学习过程中逐步学会程序设计的基本方法。我们还是先绕过那些繁琐的语法规则细节,先看一些例子,然后给出语法以供选手们参考。第一节赋值
2、语句第一节赋值语句赋值语句赋值语句 变量代表的是一个存储单元,其值是可变的,那么其中的值是怎么提供的,又是怎么改变的呢?可以通过赋值语句来进行。赋值语句的格式:变量名:=表达式(或常量),其中:=称为赋值号,右边是一个表达式,表达式计算完毕后的结果赋给左边的变量。如:a:=(9*8)-(2-1);/a的值等于71 a:=b;/a的值等于b的 值,b的值没有被更改 a:=a+1;/a的值增加1例例2.1 输入两个正整数A和B,试交换A、B的值(使A的值等于B,B的值等于A)?【分析】【分析】交换两个变量的值方法很多,一般我们采用引入第三个变量的算法,二个变量交换,可以想像成一瓶酱油和一瓶醋进行交
3、换,这时容易想到拿一个空瓶子过来:将酱油倒到空瓶中;将醋倒到酱油瓶中;将原空瓶中的酱油倒到醋瓶中。程序如下:program ex2_1;var a,b,c:integer;/引入三个变量begin readln(a,b);/输入A、B c:=a;/A的值临时存储在C中 a:=b;/B的值赋给A b:=c;/C的值赋给B writeln(a,b);end.例例2.2某仓库5月1日有粮食100吨,5月2日又调进20吨,5月3日卖出库存的三分之二,5月4日又调进库存的3倍粮食,问该仓库从5月1日到5月4日期间每天的粮食分别是多少吨?(输出每天的库存量)【分析】本例中,主要要描述从5月1日到5月4日每
4、天仓库的粮食库存量,它是不断变化的,我们可以用一个变量A来存储仓库当前的库存量。程序如下程序如下:Program ex2_2;Var a:integer;begin a:=100;writeln(5/1:,A);/输出5月1日的库存量 a:=a+20;writeln(5/2:,A);a:=a div 3;/div是整除,相当于对结果取整操作 writeln(5/3:,A);a:=a*4;writeln(5/4:,A);readln;end.本程序中语句的自上而下的顺序很关键,这类程序严格自上而上每条语句都被执行一次就称为顺序程序。例例2.3 数学中有个经典的“鸡兔同笼”问题,已知头共30个,脚
5、共90只,问笼中的鸡和兔各有多少只?【分析】设鸡为j只,兔为t只,头为h,脚为f,那么有:j+t=30 2*j+4*t=90解此题暂不必采用数学上直接解方程的办法,可采用“假设条件与逻辑推理”的办法,假设笼中30 个头全都是兔,那么都按每头只脚计算,总脚数为(4*h),与实际脚数(f)之差为(4*h-f),如果这个差=0,则笼中全是兔(即鸡为0只);如果这个差值 0,说明多计算了脚数,凡是鸡都多计算了两只脚,用它除以2就能得到鸡的只数,算法为:j=(4*h-f)/2 /先用脚数差值除以2算出鸡的只数 t=h-j /再用总头数减鸡数算出免的只数注意这两步运算的先后顺序。程序如下程序如下:prog
6、ram ex2_3;Const h=30;f=90;/常量定义 Var j,t:integer;/为整数类型的变量begin j:=(4*h-f)div 2;/div是整除运算 t:=h-j;writeln(j=,j,t=,t);/引号中内容原样输出,两部分内容用空格隔开end.算术表达式算术表达式 算术表达式的定义算术表达式的定义 Pascal语言中的算术表达式是由符合Pascal语法规定的运算对象(包括常量、变量、函数)、算术运算符、圆括号组成的有意义的式子。如a+30*5/8.4 算术运算符算术运算符常用的有以下6个算术运算符:+(加)-(减)*(乘)/(实数除)得到结果为实型。如5/2
7、=2.5,4/2=2.0(结果不是2)div(整除)div它要求除数和被除数均为整型,结果也为整型。如10 div 2=5,10 div 3=3,5 div 10=0,-15 div 4=-3。div运算只取 商的整数部分,参与div运算的两个对象都不能为实型。mod(求余数),也只能用于整数运算,结果为整数。如:10 mod 4=2,-17 mod 4=-1,4 mod(-3)=1,-4 mod 3=-1,即 a mod b=a-(a div b)*b。div的结果是相除后的商,mod的结果是相除后的余数。因此有:8 div 3=28 mod 3=27 div 3=27 mod 3=16 d
8、iv 3=26 mod 3=0运算优先顺序运算优先顺序 如果一个表达式里出现两个或两个以上的运算符,则必须规定它们的运算次序。Pascal规定的运算优先级别(与数学中规定的一样):表达式中相同优先级的运算符,按从左到右顺序计算;表达式中不同优先级的运算符,按从高到低顺序计算;括号优先级最高,多层括号则从内到外逐层降低;在算术运算中运算符的优先顺序与数学上的四则运算一致,即先乘除后加减(注:mod、div运算的优先级与*、/相同)。下面是几个Pascal表达式的例子:数学表达式Pascal表达式1.b2-4acb*b-4*a*c2.(a+b)/(c+d)3.(a+b)/c+d4.a*b/(c*d
9、)或a*b/c/d5.1.25*1051.25E+56.1+e-xsinx1+exp(-x)*sin(x)7.2r2*pi*r(pi常量由系统提供)8.(100 x500)(x=100)and(x=500)Pascal的常用数学函数的常用数学函数 abs(取绝对值),sqr(平方),sqrt(开方),sin(正弦),cos(余弦),arctan(反正切),exp(以e为底的指数),Ln(自然对数),trunc(取整),round(四舍五入)。Pascal规定,所有函数的自变量必须写在括号中。例如:sin2x应写成 sin(2*x)(a+b)2应写成 sqr(a+b)或(a+b)*(a+b)应写
10、成 sqrt(b*b-4*a*c)sin,cos函数的自变量应为弧度。若是度,需要转换成弧度。例如:sin32o15 应写成 sin(32.25*3.14159/180)Lgx(以10为底的对数)由换底公式得,应写成 Ln(x)/Ln(10)x3可以写成 x*x*x (a+b)3可以写成sqr(a+b)*(a+b)或三个(a+b)连乘 xy可以写成 exp(y*Ln(x),根据换底公式有:也可写成 power(x,y)(power 函数不要标准库中,需要调用数学库,数学库的调用参见附录三)trunc是去掉小数部分,取其整数部分。Round是将小数部分四舍五入后变为整数(即得到最接近于它的整数)
11、。因此trunc(1.2)=1round(1.2)=1trunc(1.7)=1round(1.7)=2trunc(-3.7)=-3round(-3.7)=-4 运算、标准函数表运算、标准函数表运算表运算符运算对象类型结果类型+、-、*整型或实型整型或实型/整型或实型实型div、mod整型整型not、and、or布尔型布尔型、=、布尔型标准函数表运算符整型实型字符型布尔型整型predsuccabssqrtruncroundordord实型sincosarctanLnexpsqrtsinabsarctanLnexpsqrtsqr字符型chrpredsucc布尔型predsucc表中的列表示函数参数
12、的类型,行表示函数执行后返回的结果类型。如trunc函数的参数是实型,该函数的运算结果是整型,即对实数取整。第二节输入输出语句第二节输入输出语句输入语句输入语句 在程序中变量获得一个确定的值,可以用赋值语句,但是有些变量的值往往不能事先确定,需要在程序运行时输入,输入语句就是用于把外界要处理的数据传输给程序。输入语句是在程序运行时由用户给变量提供数据的一种很灵活的输入动作。输入语句的格式:read(变量1,变量2,)功能:从标准输入文件(默认对应着键盘)中输入数据,并依次赋给相应的变量。说明:说明:执行到输入语句时,系统处于等待状态,等待从键盘上输入数据,并且根据变量的数据类型判断输入内容是否
13、合法,如果内容不合法则提示106格式错误。如执行read(a),假设a是整型变量,那么输入的内容为数字是合法的,其它字符提示格式错误。在输入数值型(整型或实型)数据时,数据间用空格或回车分隔开。read语句是一个接一个地输入数据,在执行完本条read语句(读完本语句中变量所需的数据)后,下一个输入语句接着从该行中的下一个数据继续读取数据,也就是说输入光标不换行,readln语句是read+line的缩写,意思是为括号中的变量赋完值后立即换行,如果有下一条输入语句,只能从下一行开始读取。read 后一定要有参数表(变量名),而readln可以不带参数表,即可以没有任何输入项,这时系统等待读入一个
14、换行符(回车)。经常用于暂停程序的运行,直到输入一个回车。为了避免可能出现的错误,建议在程序中按下列原则使用读语句:(a)如果没有特殊需要,在一个程序中尽量避免混合使用read语句和readln语句;(b)尽量用readln语句来输入数据,一个数据行对应一个readln语句如:read(a,b);read(c,d);read(e);如果输入数据为:1 2 3 4 5 6,那么a,b,c,d,e的值分别为1,2,3,4,5,如果后面没有输入语句了那么数据6是多余的。输入同样的数据,如果三条输入语句read都改成readln情况就不同,每个readln语句执行后都要换行,第一条readln语句读完
15、二个数接后换行(第一行中其余数据全部被作废),第二条readln语句将从下一行开始读取二个数,再换行到第三行,第三条readln语句在第三行中读取一个数,也就是说5个数据不能放在一行上,至少要有三行的内容。例例2.4 设a、b、c为整型变量,将它们的值分别赋为10、20和30,写出对应下列语句的所有可能输入格式。read(a,b,c);【分析】根据说明,可列出所有可能输入的格式:(a)10 20 30(b)10 20 30(c)10 20 30(d)10 20 30如果把输入语句改为:readln(a,b);read(c),那么只有(b)(d)二种输入格式有效。例例2.5 设有下列语句:rea
16、d(a,b,c);readln(d,e);readln;readln(f,g);其中,所有变量均为整型。再设输入的数据格式如下:1 23 4 5 6 7 89 101112 13 列表给出每个变量的值。【分析】【分析】可以假想有一个数据位置指针,每读一个数据后,指针后移到该数据之后,每执行一个readln语句后,指针移到下一行的开头。各变量的值如下表所示。变量名ABCDEFG值123451112输出语句输出语句 输出语句的作用是将程序处理的结果输出到标准输出文件(默认对应显示器屏幕),一个程序可以没有输入,但一个程序肯定要有输出,否则编写程序就失去任何意义。(1)write语句格式:write
17、(输出项1,输出项2,)。输出语句中的输出项可以是变量、常量、表达式和字符串。如:write(The score of LiPing is:,56+32);/引号内的内容原样输出(2)writeln语句格式:writeln(输出项1,输出项2,)。writeln是write+line的缩写,writeln语句相当于write语句+换行,即输出完毕后换到下一行。特殊地,writeln语句只是起到换行作用,不输出任何内容。输出语句的功能输出语句的功能 计算机执行到输出语句时,将括号中的输出项一个接一个地输出到屏幕上,如果输出项是表达式那么先计算出表达式的值再输出其结果。write语句与writel
18、n语句格式上都相似,但它们在功能上有所不同,两个语句的区别在于,write语句将其后括号中的表达式一个接一个输出后,没有换行。而writeln语句则在输出所有输出项后换行。例如以下两个程序段的输出分别为:(1)write(1,2,3,4);write(5,6);输出为:123456(2)writeln(1,2,3,4);/输出完毕后换行 write(5,6);/另起一行输出输出为:1234 56例例2.6 输入一个三位数数,要求把这个数的百位数与个位数对调,输出对调后的数。【分析】先求出自然数的个位、十位、百位,然后个位与百位对调。程序如下程序如下:Program ex2_6;var a,b,
19、c,m,n:integer;begin readln(m);a:=m div 100;/百位数 b:=(m div 10)mod 10;/十位数 c:=m mod 10;/个位数 n:=c*100+b*10+a;/重新组合对调后的数 writeln(n);end.运行结果:输入:234输出:n=432例例2.7 已知某班有男同学x位,女同学y位,x位男生平均分是87分,y位女生的平均分是85,问全体同学平均分是多少分?【分析】男女生的人数需要用户输入,然后根据题意(x*87+y*85)/(x+y)求出全体同学的平均分。程序如下:程序如下:Program ex2_7;var x,y:intege
20、r;begin readln(x,y);writeln(x*87+y*85)/(x+y);/实数以默认的科学 记数法格式输出end.例例2.8 歌手大奖赛上6名评委给一位参赛者打分,6个人打分的平均分为9.6分;如果去掉一个最高分,这名参赛者的平均分为9.4分;如果去掉一个最低分,这名参赛者的平均分为9.8分;如果去掉一个最高分和一个最低分,这名参赛者的平均是多少?【分析】首先求出6名评委的总分,然后根据去掉最高分的总分和最低分的总分,求出最高分的分值和最低分的分值,最后总分减去最高分和最低分除以4即是答案。程序如下:程序如下:Program ex2_8;Var high,low,score_
21、all,score_high,score_low,ans:real;begin score_all:=6*9.6;/6名评委的总分 score_high:=5*9.4;/去掉最高分的总分 score_low:=5*9.8;/去掉最低分的总分 high:=score_all score_high;/最高分 low:=score_all score_low;/最低分 ans:=(score_all high low)/4;writeln(ans);/实数以默认的科学记数法格式输出end.带格式的输出语句带格式的输出语句 在Pascal语言中输出数据时是可以按照设定的格式进行输出,对整数默认的输出形
22、式为按十进制数形式。对实数的输出,默认的形式是科学记数法形式(如果不想用科学记数法输出而用平时熟悉的小数形式输出,要自己另外定义)。事实上,输出语句中的每个输出项之后可以加上格式说明,对输出时的格式进行设置,若输出项后没有加格式说明,则数据按系统默认的格式输出。默认的输出格式默认的输出格式Pascal语言为整型数据、实型数据、布尔型数据和字符串规定了每种数据所占的宽度(即一个数据输出时占几列),一个数据所占的宽度称为场宽或字段宽。系统给出的默认场宽称为标准场宽。每一种Pascal版本给定的标准场宽不尽相同。下表给出标准Pascal和Free Pascal版所规定的标准场宽。数据类型标准Pasc
23、alFree Pascalinteger10实际长度real2225布尔型104或5字符串串长串长 在Free Pascal系统中,对于整型、字符串的输出都是按数据本身长度输出,对于布尔型数据(只有TRUE和FALSE两种值),TRUE为4列,FALSE为5列,采用大写输出。而实型数据的输出时,则按25列输出,其中第一列为符号位,正号不显示,后6位为“Ennnn”,中间的18列为尾数部分。如:writeln(sqrt(75);则输出 8.6602540378443865E+0000;/第一位为空格表示是正数 writeln(sqrt(81);则输出 9.0000000000000000E+00
24、00。有时,在程序中往往根据实际情况,需要自己定义场宽。指定场宽指定场宽 在输出语句中输出项含有格式符号时,就是为了指定输出项的场宽。指定单场宽指定单场宽格式:write(表达式:n)或writeln(表达式:n),其中n为自然数,指定单场宽后,所有数据不再按默认的标准场宽输出,而按指定场宽输出。若数据实际长度小于指定场宽时,则一律向右靠齐,左补空格。如:write(1234:8,abcdef:12)输出结果:1234 abcdef /1234前有4个空格,abcdef前有6个空格 对于实型数据指定单场宽时,如果指定场宽大于标准场宽(25列)时,右靠齐按标准场宽格式输出25位,左边补空格。若场
25、宽小于标准场宽时,第一位仍为符号位,最后六位仍为Ennnn,中间部分为尾数显示部分。如果指定的宽度小于10位,则设置场宽无效。指定双场宽指定双场宽输出项是实数时,如果希望输出的实数不用科学记数法形式输出而用小数形式输出,可以用指定双场宽方法输出,双场宽只适用于实型数的输出。双场宽输出格式为:write(实型数:m:n),其中m和n都是自然数,m 用于指定整个数据所占的宽度,n指定输出小数的位数。如:write(sqrt(75):9:4);输出:8.6602 /总的占9列,其中保留4位小数 如果双场宽指定中m小n+2,则m无效,按保留n位小数的最少位数输出。如:write(sqrt(75):5:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- pascal 简单 程序设计
限制150内