PASCAL程序基础

上传人:公**** 文档编号:586295606 上传时间:2024-09-04 格式:PPT 页数:77 大小:232KB
返回 下载 相关 举报
PASCAL程序基础_第1页
第1页 / 共77页
PASCAL程序基础_第2页
第2页 / 共77页
PASCAL程序基础_第3页
第3页 / 共77页
PASCAL程序基础_第4页
第4页 / 共77页
PASCAL程序基础_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《PASCAL程序基础》由会员分享,可在线阅读,更多相关《PASCAL程序基础(77页珍藏版)》请在金锄头文库上搜索。

1、镭吊奴桂庸阔刺助博钞寐揭藻墩交璃弥征缘缀欢孙角丛吠博牟莽黑组轴馁PASCAL程序基础PASCAL程序基础PASCALPASCAL程序设计基础程序设计基础柴沟中学柴沟中学 鹿咏梅鹿咏梅庞攒为肠霄企债瓮钟蓬吐瞻梭梆缸申畜亚渠逻义丑衬便弟息鸯直擎瞩撤业PASCAL程序基础PASCAL程序基础一、一、PASCAL语言基础知识语言基础知识二、二、结构化程序设计结构化程序设计三、三、数组与字符串数组与字符串四、四、函数与过程函数与过程五、五、递归递归廖蜘沥冗便乎容隶缉券蜜淫乔瞩禹弧剁褒相控宝疼咯氢浪阎旗响娶膜充隙PASCAL程序基础PASCAL程序基础一、一、PASCAL程序的基本结构程序的基本结构Pro

2、gram area;Program area;ConstConst pi=3.1416; pi=3.1416;VarVar r:integer; r:integer; s:real; s:real;BeginBegin writeln( writeln(enter r=enter r=);); readln(r); readln(r); s:=pi*r*r; s:=pi*r*r; write( write(s=s=,s),s)End.End.程序首部程序首部说明部分说明部分执行部分执行部分Program Program 程序名;程序名;Const Const 常量说明;常量说明;Type Ty

3、pe 类型说明;类型说明;Var Var 变量说明;变量说明;Function Function 函数说明;函数说明;Procedure Procedure 过程说明;过程说明;BeginBegin 语句语句1 1; 语句语句2 2; End.End.例:已知圆的半径例:已知圆的半径r r,编程求圆的面积,编程求圆的面积s.s.ProgramProgramConstConstVarVarBeginBeginEnd.End.第一节第一节PASCAL语言基础知识语言基础知识魂钵济狱丑帧害臣丫陶羡闸赃旭闭芹殷燃近黎物怔邀杂兽查慕赁绚盾牛找PASCAL程序基础PASCAL程序基础二、二、PASCAL字

4、符与符号字符与符号1 1标识符标识符(1) (1) 标识符的定义:标识符就是以标识符的定义:标识符就是以字母开头的字母数字序列,有效长度为字母开头的字母数字序列,有效长度为6363个字符,并且个字符,并且大小写等效大小写等效。可以用来。可以用来标示常量、变量、程序、函数等。标示常量、变量、程序、函数等。哦汁映之占亨镜帖藏暖犁爽诱矩讼蜘扳非削床女肉讼胺帜烃氰抨棚豪涯律PASCAL程序基础PASCAL程序基础二、二、PASCAL字符与符号字符与符号(2) (2) 标识符的分类:标识符的分类: a. a.保留字保留字( (关键字关键字) )所谓保留字是指在所谓保留字是指在PascalPascal语言

5、中具有特定的语言中具有特定的含义,标准含义,标准PascalPascal语言中的保留字一共有语言中的保留字一共有3535个个. .PROGRAM,BEGIN,END,CASE,FUNTION,PROCEDURE,ARRAY,AND,CONST,DIV,DO,DOWNTO,ELSE,FILE,FOR,GOTO,IF,IN,LABEL,MOD,NIL,NOT,OF,OR,PACKED,RECORD,REPEAT,SET,THEN,TO,TYPE,UNTIL,VAR,WHILE,WITH桨诉奔动昧群叠琅怒山吸姆镀欲书景瞬居新高钢母蹈视莉镶童柿适密来勉PASCAL程序基础PASCAL程序基础二、二、P

6、ASCAL字符与符号字符与符号b.标准标识符:指标准标识符:指Pascal语言预先定义的标识符,具有特殊含义。语言预先定义的标识符,具有特殊含义。标准常量标准常量FalseMaxintTrue标准类型标准类型BooleanCharRealInteger标准函数标准函数AbsArctanChrCosEofEolnExpLnOddOrdPredRoundSinSqrSqrtSuccTrunc标准过程标准过程DisposeGetNewPackPagePutReadReadlnResetRewriteUnpackWriteWriteln标准文件标准文件InputOutput兹蛆婶瞥喳炒赂橱土齐综劣泞遗

7、易骸察恒输匝钾祥菜忧阶缨抒屠哎磊氨搅PASCAL程序基础PASCAL程序基础二、二、PASCAL字符与符号字符与符号c c用户自定义标识符:由你自己根据需要来定义。用户自定义标识符:由你自己根据需要来定义。选用的标识符不能与保留字和标准标识符相同。选用的标识符不能与保留字和标准标识符相同。 在定义标识符时可以用的字符:在定义标识符时可以用的字符:A AZ Z;a az z;0 09 9;+ +,- -,* *,/ /,= =,=, ,( (,) ), , , , ,:=:=,;,;,. .,:,:,., , 注:Pasca语言除了能使用以上规定的基本符号外,不得使用任何其它符号。 泰颠芭工粒门

8、肄莽堤被瞬矫谗僳技矛荷颤降利金邵咐侣屏迷郸恃丸签僳彤PASCAL程序基础PASCAL程序基础三、三、PASCAL数据类型数据类型数据数据的一个重要特征就是它的类型,数据类型的一个重要特征就是它的类型,数据类型确定了数据的构成和可进行的运算。确定了数据的构成和可进行的运算。PascalPascal语语言是一种强类型语言,言是一种强类型语言,不同类型间不能任意转不同类型间不能任意转换,不同类型的变量一般不允许作混合运算。换,不同类型的变量一般不允许作混合运算。程序中出现的所有常量、变量和用户自定义的程序中出现的所有常量、变量和用户自定义的数据必须预先说明后才能使用。数据必须预先说明后才能使用。怕凳

9、切枉波震棋垫亮丙喧壮嫌拐染恒次瞅福围钦莽错症锐闪崎阶绝师翰荤PASCAL程序基础PASCAL程序基础三、三、PASCAL数据类型数据类型PascalPascal数据类型数据类型 简单类型简单类型构造类型构造类型指针类型指针类型 蟹台珊湃屈靖瞒滁堑砧锁德敌幕锯星烘候丑苛降呜括此厌楼褂搀疵宅胃掺PASCAL程序基础PASCAL程序基础三、三、PASCAL数据类型数据类型1.1.整型整型 类型类型数值范围数值范围shortint(短整型)-128.128integer(整型)-32768.32767longint(长整型)-2147483648.2147483647byte(字节型)0.255wor

10、d(字类型)0.65535耳奏识鱼沿撂队枝喀箩硅跺伺五展迁扼浪城腺需篙促讨荔弯厦是瞎焙炉巫PASCAL程序基础PASCAL程序基础三、三、PASCAL数据类型数据类型2.实型实型类型类型数值范围数值范围real(基本实型)2.9e-39.1.7e38single(单精度实型)1.5e-45.3.4e38double(双精度实型)5.0e-324.1.7e308傲技葱铸厚油埔扫顺姬篷浑涪曙狙缔棕社磺脉早蛮帽迅甥呛雁悲惭勃熏如PASCAL程序基础PASCAL程序基础三、三、PASCAL数据类型数据类型3.3.布尔型布尔型 booleanfalsetrue01逻辑真逻辑真逻辑假逻辑假潭螟芋虾颓堕览讥

11、度盖择谢峭岁搅酬点腹索捐犊派藕湾福涨源序来饺发掌PASCAL程序基础PASCAL程序基础三、三、PASCAL数据类型数据类型4.字符型字符型char字符型的值必须用字符型的值必须用单引号括起来单引号括起来,字字母作为字符型的值时,大小写是不等母作为字符型的值时,大小写是不等价的,价的,并且字符型只允许单引号中有并且字符型只允许单引号中有一个字符,否则就是字符串。一个字符,否则就是字符串。例:例:var var c:char; c:char; c:= c:=a a侥摄触靖菜官寄途旺平类淫勇盐迄漂凯窗丧劝酸酵值扭陇朔鳞综拟需夫谁PASCAL程序基础PASCAL程序基础四、常量与变量四、常量与变量1

12、.1.常量常量(1)(1)常量:在某个程序的整个过程中其值不变的量。常量:在某个程序的整个过程中其值不变的量。(2)(2)常量定义:常量定义出现在说明部分。语法格式:常量定义:常量定义出现在说明部分。语法格式:constconst常量标识符常量标识符1=1=常量值常量值1;1;.常量标识符常量标识符n=n=常量值常量值n;n;常量标识符的类型由定义它的常量的类型决定。常量标识符的类型由定义它的常量的类型决定。 ConstConst pi=3.1416; pi=3.1416; a=10; a=10; c= c=c c; ; t=true; t=true;莹覆蛔梳角慑脚洲许坝嚎惕端声格朱暗求懊昔尽

13、婴追浆桶峙耶诱舅憋斟挛PASCAL程序基础PASCAL程序基础四、常量与变量四、常量与变量2.2.变量变量(1)(1)变量:在某个程序的运行过程中变量:在某个程序的运行过程中其值可以发生改变的量其值可以发生改变的量(2)(2)变量说明:变量说明出现在说明部分。语法格式:变量说明:变量说明出现在说明部分。语法格式:varvar变量标识符列表变量标识符列表: :类型类型; ;.变量标识符列表变量标识符列表: :类型类型; ;varvara,b,c:integera,b,c:integer;m,n:real m,n:real ;令态些墒箔犯拎析匆甫幼烛剑闹进周徘潜糯架囊藉舟碘爽糖那球荫详迁喘PASC

14、AL程序基础PASCAL程序基础五、运算符和表达式五、运算符和表达式1.运算符运算符a.算术运算符算术运算符运算符运算运算对象结果类型运算符运算运算对象结果类型+加加整型、实型只要有一个运算对象是实型,结果就整型、实型只要有一个运算对象是实型,结果就-减减整型、实型是实型,如果全部的运算对象都是整整型、实型是实型,如果全部的运算对象都是整*乘乘整型、实型型并且运算不是除法,则结果为整型,整型、实型型并且运算不是除法,则结果为整型,/除除整型、实型若运算是除法,则结果是实型。整型、实型若运算是除法,则结果是实型。div整除整除整型整型整型整型mod取余取余整型整型整型整型5div3=15mod3

15、=2对挞池况缸琶憾糟禹拥冈船袖监烈采莱迫袁签挽根叶容支予隔在霖纺汇绵PASCAL程序基础PASCAL程序基础五、运算符和表达式五、运算符和表达式b.逻辑运算符逻辑运算符运算符运算符运算运算运算对象运算对象结果类型结果类型not逻辑非布尔型布尔型逻辑非布尔型布尔型and逻辑与布尔型布尔型逻辑与布尔型布尔型or逻辑或布尔型布尔型逻辑或布尔型布尔型xor逻辑异或逻辑异或布尔型布尔型布尔型布尔型not(非)条件为True时,其结果值为False;否则为True;(取反)not(34)and(与)两条件都为True时,其结果值为True;否则为False;or(或)两条件中只要有一个为True;其结果值

16、为True;否则为False;xor(异或)两条件的逻辑值不相同时,其结果值为True;否则为False;莫咋饰祥鸽萌颈贺尺搪山褂基捉盏校家篱徽痔含徘佬汗劫慧撰钡仪襄耐选PASCAL程序基础PASCAL程序基础五、运算符和表达式五、运算符和表达式c.关系运算符关系运算符运算符运算符运算运算运算对象运算对象结果类型结果类型=等于简单类型布尔型等于简单类型布尔型不等于不等于简单类型布尔型简单类型布尔型大于简单类型布尔型大于简单类型布尔型=大于等于大于等于简单类型布尔型简单类型布尔型运算符优先级运算符优先级:not*,/,div,mod,andxor,+,-,orin,=,=,=咨愁瓮加烁承晤店虽拙

17、詹背么则戏朱挥六朗鸟绘真庇陇弧搽醚察栗皆扑嗡PASCAL程序基础PASCAL程序基础五、运算符和表达式五、运算符和表达式2.表达式表达式(1)通过运算符把常量、变量、函数调用)通过运算符把常量、变量、函数调用结合起来组成的式子。结合起来组成的式子。pi*r*rpi*r*rSum+2Sum+2(xy) and (z=y)(xy) and (z=y)换沟坎痉脯贝辜耳万顷钒奸蜜男雏伙滋羚挤嫂身敲埋骗推秀引涵咨烷黍刀PASCAL程序基础PASCAL程序基础五、运算符和表达式五、运算符和表达式(2)数学上的表达式与)数学上的表达式与pascal语言表达式的区别语言表达式的区别数学表达式数学表达式PASC

18、AL表达式表达式注意注意2a2*a*号不能省略号不能省略aba/b除号的写法除号的写法abab不等号的写法不等号的写法aba=b小于等于号的写法小于等于号的写法训硅移尚剐睹迄架才吴敦座附像尿黎寺鸥呻焕渭昧阳皮东毯词哺苟耪申奥PASCAL程序基础PASCAL程序基础五、运算符和表达式五、运算符和表达式TrueTrueandandTrueTrue= =TrueTrueTrueTrueFalseFalseFalseFalseFalseFalseTrueTrueFalseFalseFalseFalseFalseFalseFalseFalsePascal中的逻辑运算:中的逻辑运算:撑舜喀昂瓷阵窜独湾伺懂

19、史患芭轰厅猾菏仿瑟瓷多贸第渤絮弛根退垣壁捌PASCAL程序基础PASCAL程序基础五、运算符和表达式五、运算符和表达式TrueTrueororTrueTrue= =TrueTrueTrueTrueFalseFalseTrueTrueFalseFalseTrueTrueTrueTrueFalseFalseFalseFalseFalseFalse厅渠惧得迟讳坐酮肚讥禹余跃随劣蚕篱忠犬估菜形轿骤添州稽闽橱偿逼栽PASCAL程序基础PASCAL程序基础第二节结构化程序设计pascal程序的三种基本结构顺序结构顺序结构分支结构分支结构循环结构循环结构讹垃湘脸示摆趾坊兰哑烯酉咏驯俯算仟喜春葵娶虱垂松仿烟貉

20、憨嘱瓜庸滓PASCAL程序基础PASCAL程序基础(一一)、什么是顺序结构:、什么是顺序结构:【例【例1】:键盘输入两个变量的值,交换值后输出。】:键盘输入两个变量的值,交换值后输出。方法:间接交换法方法:间接交换法算法分析:(算法分析:(“自顶向下,逐步求精自顶向下,逐步求精”的编程思想)的编程思想)s1:通过键盘给通过键盘给a,b两个变量赋值;两个变量赋值;s2:交换交换a,b的值;的值;s2-1:引入中间变量引入中间变量c;s2-2:在在c中存放的中存放的a值;值;s2-3:在在a中存放的中存放的b值;值;s2-4:在在b中存放的中存放的c值;值;s3:输出变量输出变量a,b的值。的值。

21、程序代码:程序代码:programex1;vara,b,c:integer;beginwrite(pleaseinputa,b:);read(a,b);writeln(a=,a,b=,b);c:=a;a:=b;b:=c;writeln(a=,a,b=,b)end. 一一 .顺顺序序结结构构程程序序设设计计Pascal 语言的语句分为简单语句(也称基本语句)和复合语句(也称构造语句) 剂的码烛扎喧塔儿突放捻持六良虚稿郧市延瞅瞬抑梦竹业雍延跋怪昭洁箔PASCAL程序基础PASCAL程序基础o(二二):几个简单语句:几个简单语句:o1赋值语句:赋值语句:o格式:变量标识符:格式:变量标识符:=表达式

22、;表达式;o功能:计算和赋值双重功能:功能:计算和赋值双重功能:o【例2】写出程序执行后,变量的值。o程序代码:oprogramex2;ovaroa,b:integer;oc:real;och:char;obool:boolean;obeginoa:=3;ob:=a;ob:=a+1;oa:=a+1;oc:=a+b;och:=h;obool:=true;obool:=notbool;oend.o说明:1)“:=”赋值号不同于“=”号,具有方向性,具有计算功能。o2)赋值号两边的类型应该相同。o3)一个赋值语句只能给一个变量赋值,变量可以进行多次赋值。o4)被赋值的变量可以作为因子参与运算。通焙洁

23、创咐丝沼雏仲霖御用腊汗戎蘑垫星零牟脆残砚沏名喷固红丰冶鲤擒PASCAL程序基础PASCAL程序基础2输入语句(输入语句(read,readln):格式:格式:read(变量名表变量名表);readlnread(a1,a2,a3);等价于等价于read(a1);read(a2);read(a3);readln(a1,a2,a3);等价于等价于read(a1);read(a2);read(a3);readln;功能:通过键盘,给指定的变量赋值。功能:通过键盘,给指定的变量赋值。【例3】:写出程序运行后,变量的值。程序代码:programex3;vara,b,c:integer;i,j,k:real

24、;ch1,ch2,ch3:char;beginread(a,b,c);readln(i,j,k);read(ch1,ch2,ch3);writeln(a=,a,b=,b,c=,c);writeln(i=,i,j=,j,k=,k);writeln(ch1=,ch1,ch2=,ch2,ch3=,ch3);end.程序运行后,输入数据:123456.17890dos执行readln后多余的数据将被忽略;执行read后多余的数据要么被忽略,要么被下一个read或readln语句所读入。嗅反踢藕撤么遗你仍无遍梧茫圭蚜瞎呈税牧钻梁省芝针栋岂躇去匝提陵伶PASCAL程序基础PASCAL程序基础o3输出语句(

25、输出语句(write,writeln):):o格式:格式:write(输出项);(输出项);owriteln;o功能:按指定的格式将输出项的内容输出。功能:按指定的格式将输出项的内容输出。o【例【例4】:写出程序运行后的结果。】:写出程序运行后的结果。o程序代码:oprogramex4;oconstoa=10;ob=20;obeginowriteln(50);owriteln(a);owriteln(a+b);owriteln(a+b=,a+b)oend.o说明:1)输出项的内容可以是一项,也可以是若干项,各项之间用逗号分隔。o2)当输出项为常量,直接输出常量的值;当输出项为变量时,输出该变量

26、存储单元内的内容,变量允许属于任何一种标准数据类型;当输出项为表达式时,先计算后输出;当输出项为字符串时,原样输出单引号括起来的内容。501030a+b=30露词搪饭迄哥撮躺瓷青削樊演湖染哭养沛瘴稠旨辑恬债谢恰风衷昌颧闯煞PASCAL程序基础PASCAL程序基础1、定义:复合语句是由若干条语句组成的语句序列。形式:begin语句1;语句2;语句nend;用保留字begin和end括起来,构成一条逻辑上的语句,语法上充当一条语句。(三三):复合语句:复合语句:浦员果内介滔趣傈太防湍漏座塌英惕失钳砧责宵噬碧闸栖峻敖谋错贩赫涂PASCAL程序基础PASCAL程序基础二二.选选择择结结构构程程序序设设

27、计计1if语句:语句:格式:(1)if条件then语句(2)if条件then语句1else语句2(3)if语句嵌套if条件1then语句11elseif条件2then语句21else语句22;产延潞冰噶畦蹋惭侧扛输土破爆七堑估咯善偶侨相玩漏梧坟锻世肝拽滚居PASCAL程序基础PASCAL程序基础例:计算下列函数y=Programp;Varx,y:real;beginread(x);ifx0theny=1elsey=0;writeln(y=,y);end.输入:5输出:0(x=0)1(x0)-1(x0)拦宛伤馆蹋慈苑葡押蒙揍铝壮娟读木幌翻藉产赋乙寺耘垄疙噶光掀由程侣PASCAL程序基础PASCA

28、L程序基础2case语句:分情况语句(多分支语句)格式:case表达式of常数表1:语句1;常数表2:语句2;常数表n:语句n;else语句n+1end;功能:先计算表达式的值,然后将表达式的值依次与各常数表进行对照,当找到一个与表达式的值相匹配的常数表时,就去执行该CASE常数表后面的语句。说明:1)end与case对应2)表达式的类型通常是整型、字符型3)常量表是常量,其类型与表达式的类型要一致。常量表中的常量不能重复。卫呐庶舆氮识炸阮怔爵慢茶圣赢劳册哺郧抚岭弦搂惺楷赢祷盼碴昏挖崇罐PASCAL程序基础PASCAL程序基础通常将一组重复执行的语句称为循环体,而控通常将一组重复执行的语句称为

29、循环体,而控制重复执行或终止执行由重复终止条件决定。制重复执行或终止执行由重复终止条件决定。因此,重复语句是由循环体及重复终止条件两部因此,重复语句是由循环体及重复终止条件两部分组成。分组成。FOR循环循环当循环当循环while直到直到repeat循环循环一、循环结构的三种形式:三三.循循环环结结构构程程序序设设计计秉丰冻闰闹殆凝盏疏汉介抵翻此斤蹋豁瘪恒粥殴嘻粳航醒挚命脊汹膜朝培PASCAL程序基础PASCAL程序基础(一)for循环语句1 1forfor语句:(语句:(“计数循环计数循环”):就是将规定循环体重复执行的次数。):就是将规定循环体重复执行的次数。格式:格式:for for 控制

30、变量:控制变量:= =初值初值 to to 终值终值 do do 循环体语句;循环体语句; for for 控制变量:控制变量:= =初值初值 downto downto 终值终值 do do 循环体语句;循环体语句;2、for语句执行过程语句执行过程 先将初值赋给左边的变量(称为循环控制变量);先将初值赋给左边的变量(称为循环控制变量); 判断循环控制变量的值是否已判断循环控制变量的值是否已“超过超过”终值,如已超过,则跳到步骤终值,如已超过,则跳到步骤; 如果末超过终值,则执行如果末超过终值,则执行dodo后面的那个语句(称为循环体);后面的那个语句(称为循环体); 循环变量递增(对循环变

31、量递增(对toto)或递减(对)或递减(对downt o)downt o); 返回步骤返回步骤; 循环结束,执行循环下面的一个语句。循环结束,执行循环下面的一个语句。3 3、说明:、说明: 1) 1) 初值和终值可以是表达式,控制变量和初值、终值的类型相同,且必须是整型、布初值和终值可以是表达式,控制变量和初值、终值的类型相同,且必须是整型、布尔型和字符型等顺序类型,不能为实型。尔型和字符型等顺序类型,不能为实型。 2 2)递增按)递增按succsucc函数规律变化,递减按函数规律变化,递减按predpred函数规律变化,整型按数值大小变化,如果函数规律变化,整型按数值大小变化,如果为字符型量

32、,按为字符型量,按ASCIIASCII码表的顺序计算。码表的顺序计算。 3 3)初值和终值在循环之前计算,重复过程中,其值不受影响;不得在循环语句中对控)初值和终值在循环之前计算,重复过程中,其值不受影响;不得在循环语句中对控制变量进行赋值。制变量进行赋值。 4 4)当初值超过终值,不执行循环,循环次数为零。)当初值超过终值,不执行循环,循环次数为零。舀抒诈助胸通安弗翌深幽趴拈陛扶桥桐臣迷惧啤孽苟很捞豆你形爬副簿昔PASCAL程序基础PASCAL程序基础例:计算1+2+3+100之和vari,s:integer;begins:=0;fori:=1to100dos:=s+i;writeln(s)

33、;end.循环体:重复执行循环体:重复执行初值初值i:循环控制变量循环控制变量终值终值替剿顿矛卯钦衔圆忧潦娟促铝棺料畜创其还窑屈陇丸甥舱霜企辐慑组诀她PASCAL程序基础PASCAL程序基础(二)(二)while语句:语句:对于对于for循环有时也称为计数循环。循环有时也称为计数循环。适合用于事先知道循环次数适合用于事先知道循环次数.当循环次数未知,只能根据某一条件来决定是否进行循环时,用当循环次数未知,只能根据某一条件来决定是否进行循环时,用while语句实现循环要更方便。语句实现循环要更方便。(“当型循环当型循环”):当条件满足时反复执行循环体。):当条件满足时反复执行循环体。格式:格式:

34、while布尔表达式布尔表达式do语句语句;执行过程:执行过程:while语句的执行过程为:语句的执行过程为:判断布尔表达式的值判断布尔表达式的值,如果其值为真如果其值为真,执行步骤执行步骤2,否则执行步骤否则执行步骤4;执行循环体语句执行循环体语句(do后面的语句后面的语句);返回步骤返回步骤1;结束循环结束循环,执行执行while的下一个语句。的下一个语句。说明:说明:1)为了使)为了使while循环能正常终止,循环能正常终止,布尔表达式中的变量必须在循环体中的某布尔表达式中的变量必须在循环体中的某语句中有所改变,即有可能使布尔表达式的值为假,语句中有所改变,即有可能使布尔表达式的值为假,

35、使循环结束,否则将出使循环结束,否则将出现死循环。现死循环。2)循环体中的语句一般是多条语句,用)循环体中的语句一般是多条语句,用begin和和end使其成为一条复合语句。使其成为一条复合语句。卓仅出凭脉候臆郴钠瑰土窑悔彤奖矢管贼勇菩玉腺柳甚瑚蔬菠递戮韧渡旨PASCAL程序基础PASCAL程序基础引例:引例:求恰好使求恰好使s=1+1/2+1/3+1/n的值大于的值大于10时时n的值。的值。vars:real;n:integer;n分母分母begins:=0;n:=0;whiles=10do当当s的值还未超过的值还未超过10时时beginn:=n+1;分母分母1s:=s+1/n;将下一项值累加

36、到将下一项值累加到send;writeln(n);输出结果输出结果end.值皆蝶筹笆备锅互家滤籽温胸哩乃图噪吴票笨尤位论踏扫殆肪既笼驮宁荚PASCAL程序基础PASCAL程序基础repeat语句:(“直到型循环”):反复执行循环体直到条件满足为止。格式:repeat语句1;语句2;语句3;语句nuntil布尔表达式;执行过程:先执行指定的语句序列,然后判断表达式。(三) repeat语句:(“直到型循环”)耿榷筒腊焰阳坪锹嘴尤摹返霉乐通教酉救记阀南欣饭炒坦每旁畏哑吞物凌PASCAL程序基础PASCAL程序基础例】:输入若干个字符,它的终止符是#,计算输入的字符中a(A)出现的次数。progra

37、mex7;varch:char;i:integer;begini:=0;repeatread(ch);if(ch=a)or(ch=A)theni:=i+1;untilch=#;writeln(i=,i)end.价锭敛啦暮筒广惊抿升樟实眨嚏赖夹厌魄拜页轴冲怎统畸硅臀狱柱登罗谓PASCAL程序基础PASCAL程序基础三种循环语句的相同点与不同点FORWHILEREPEAT语句格式句格式FOR := TO DO WHILE DOREPEATUNTIL 循循环变量量赋值布布尔尔表达式表达式无循无循环变量量循循环次数次数确定,由初确定,由初值和和终值决定决定不确定,由循不确定,由循环体前的布体前的布尔尔

38、表表达式决定,当达式决定,当值为“假假”时,结束循束循环。可能一次循可能一次循环也没有也没有不确定,由循不确定,由循环体后的布体后的布尔尔表达式决定,当表达式决定,当值为“真真”时结束循束循环。至少有一次循至少有一次循环循循环体体多多语句句时,需用,需用BEGIN和和END多多语句句时,需用,需用BEGIN和和END多多语句句时,不需用,不需用BEGIN和和END齐嫉岸谩洱兹捌缴均避乔甘亥玲膊歼鸥沼剁臀贱陆抓俞妻拴炯汁求拯享拯PASCAL程序基础PASCAL程序基础数组一、为什么要使用数组:例例1输入50个学生的某门课程的成绩,打印出低于平均分的同学号数与成绩。分析:在解决这个问题时,虽然可以

39、通过读入一个数就累加一个数的办法来求学生的总分,进而求出平均分。但因为只有读入最后一个学生的分数以后才能求得平均分,且要打印出低于平均分的同学,故必须把50个学生的成绩都保留下来, 然后逐个和平均分比较,把高于平均分的成绩打印出来。如果,用简单变量a1,a2,,a50存放这些数据,可想而知程序要很长且繁。要想如数学中使用下标变量ai形式表示这50个数,则可以引入下标变量ai。这样问题的程序可写为:第三节 数组与字符串欣捎钮憋畴腋诵沸融筐孤萍柴式贡钾台啊献碍恋揍几跨廖嘎监咎峡逻垮洒PASCAL程序基础PASCAL程序基础tot:=0;tottot:=0;tot表示总分表示总分 for i:=1

40、to 50 do for i:=1 to 50 do 循环读入每一个学生的成循环读入每一个学生的成绩,并累加它到总分绩,并累加它到总分beginbeginread(ai);read(ai);tot:=tot+ai;tot:=tot+ai;end;end;ave:=tot/50;ave:=tot/50;计算平均分计算平均分for i:=1 to 50 dofor i:=1 to 50 doif aiave then writeln(No.,i, if aiave then writeln(No.,i, ,ai);,ai);如果第如果第i i个同学成绩小于平均分,则将输出个同学成绩小于平均分,则将

41、输出而要在程序中使用下标变量,则必须先说明这些而要在程序中使用下标变量,则必须先说明这些下标变量的整体下标变量的整体数组,即数组,即数组是若干个同名数组是若干个同名(如上(如上面的下标变量的名字都为面的下标变量的名字都为a a)下标变量的集合下标变量的集合。 禄刨貌踏歉馈撅钻瞒隅蛀氦淘杆戳弯颧工剃悍尾围郝殆捷诽荫中跋峪趾崭PASCAL程序基础PASCAL程序基础二、一维数组二、一维数组当数组中每个元素只带有一个下标时,我们称这样的数组为一维数组。1、一维数组类型的定义、一维数组类型的定义一维数组类型的一般格式:array下标1.下标2of;o我们可以说,数组是由固定数量的相同类型的元素组成的。

42、如:typearraytype=array1.8ofinteger;vara1,a2:arraytype;或vara1,a2:array1.8ofinteger;免考曲瘁瘦祖复瘟梁此痘溢存按涌何貉浦猪酒判写冶检逃免锻车演否挣峡PASCAL程序基础PASCAL程序基础一维数组应用示例例例输入50个数,要求程序按输入时的逆序把这50个数打印出来。也就是说,请你按输入相反顺序打印这50个数。分析:我们可定义一个数组a用以存放输入的50个数,然后将数组a内容逆序输出。源程序如下:programex5_1;typearr=array1.50ofinteger;说明一数组类型arrvara:arr;i:i

43、nteger;beginwriteln(Enter50integer:);fori:=1to50doread(ai);从键盘上输入50个整数readln;fori:=50downto1do逆序输出这50个数write(ai:10);end.肯裴纱寇糟暂棉峪恋寐阎缄缆涂上萝涛涯邵堆娥咸扑捅畏零朗庙风夯娄灼PASCAL程序基础PASCAL程序基础二维数组o数组类型的定义中有两个下标类型二维数组类型的定义:ntype intarr=array 1.4 of integer; arr=array 1.5 of intarr; nvar a:arr;n变量a是一个二维的数组变量,它有5个分量,分别用a1

44、, a2, a3, a4, a5表示,每个分量相当于一个一维的数组变量(有4个整型分量),通过下标区分:a1,1, a1,2, a1,3, a1,4 a2,1, a2,2, a2,3, a2,4a3,1, a3,2, a3,3, a3,4 a4,1, a4,2, a4,3, a4,4a5,1, a5,2, a5,3, a5,4够政研豁阐羹像更戎破查负阿孵倔博崖购溺焦舟伤刮翱沤术馁咎厕阻寂卤PASCAL程序基础PASCAL程序基础otypearr=array1.5ofarray1.4ofinteger;vara:arr;等价的定义方式:otypearr=array1.5,1.4ofinteger

45、;vara:arr;或vara:array1.5,1.4ofintegera1,1 a1,2 a1,3 a1,4 a2,1 a2,2 a2,3 a2,4a3,1 a3,2 a3,3 a3,4 a4,1 a4,2 a4,3 a4,4a5,1 a5,2 a5,3 a5,4垣妒生硫附了磋毖绑睛赴欠卒夫斡罩短努阶俗译食鄂浇韧猩捌宙啮硫巫瘁PASCAL程序基础PASCAL程序基础二维数组应用举例:例:例:输入输入4名学生数学、物理、英语、化学、名学生数学、物理、英语、化学、pascal五门课五门课的考试成绩,求出每名学生的平均分,打印出表格。的考试成绩,求出每名学生的平均分,打印出表格。分析:用二维数组

46、分析:用二维数组a存放所给数据存放所给数据,第一下标表示学第一下标表示学生的学号生的学号,第二个下标表示该学生某科成绩,如第二个下标表示该学生某科成绩,如ai,1、ai,2、ai,3、ai,4、ai,5分别存放第分别存放第i号学生数学、物号学生数学、物理、英语、化学、理、英语、化学、pascal五门课的考试成绩五门课的考试成绩,由于要求每由于要求每个学生的总分和平均分,个学生的总分和平均分,所以第二下标可多出两列,分所以第二下标可多出两列,分别存放每个学生别存放每个学生5门成绩和总分、平均分。门成绩和总分、平均分。掘晦各啡逢溉闷唱吏夯脱盆撵热殿押她呀柔斥荒狗冈宫蚜榴斤逐家度艰幻PASCAL程序

47、基础PASCAL程序基础源程序如下:program ex5_4;var a:array1.4,1.7of real;i,j:integer; beginfillchar(a,sizeof(a),0);函数fillchar用以将a中所有元素置为0writeln(Enter 4 students score);for i:=1 to 4 do beginfor j:=1 to 5 do 读入每个人5科成绩begin read(ai,j); 读每科成绩时同时统计总分 ai,6:=ai,6+ai,j;end;readln;ai,7:=ai,6/5;求平均分 end;输出成绩表 writeln( No.

48、 Mat. Phy. Eng. Che. Pas. Tot. Ave.); for i:=1 to 4 do beginwrite(i:2, );for j:=1 to 7 do write(ai,j:9:2);writeln; end;end.著托崎面姓桌壕弃仆请奎震炳专倪恳丑缓墟痞毅查奄啤壮绎断作尊谜掀腑PASCAL程序基础PASCAL程序基础字符串字符串有常量形式和变量形式。字符串有常量形式和变量形式。把按一定顺序排列的字符数据叫做字符串,把按一定顺序排列的字符数据叫做字符串,表示方法是将字符放入单引号中表示方法是将字符放入单引号中,字符,字符串个数叫做字符串的长度。串个数叫做字符串的长

49、度。字符串变量可以用串类型标识符字符串变量可以用串类型标识符stringn来表示。来表示。N取值在取值在1255之间。省略为之间。省略为255。定义格式定义格式:type字符串类型名字符串类型名=string最大长度最大长度;定义字符串变量格式是:定义字符串变量格式是:Var字符串变量名:字符串类型名;字符串变量名:字符串类型名;也可以直接定义字符串变量,其格式为:也可以直接定义字符串变量,其格式为:Var变量名:变量名:string最大长度最大长度;或或变量名:变量名:string;字符串之间的运算:字符串之间的运算:对字符串可以整体输入或输出,如:对字符串可以整体输入或输出,如:read(

50、x);write(y);允许对串变量进行赋值,如:允许对串变量进行赋值,如:X:=abc;y:=x。可以对字符串进行连接运算,使用可以对字符串进行连接运算,使用+进行连接。如:进行连接。如:ho+me结果是:结果是:home。字符串之间可以进行关系运算:字符串之间可以进行关系运算:、=、=、=、。比较方法按比较方法按ASCII码一个字符一个字码一个字符一个字符比较。符比较。士澡蚂黑冈架睁碌垫辞玫挤浑旨需诵跋赊诞搁卡禹掷粪厘靴艘盟边锣邀兴PASCAL程序基础PASCAL程序基础字符串函数(1)字符串测长函数)字符串测长函数格式:格式:length(s)功能:求字符串功能:求字符串S的长度,结果为

51、整型。的长度,结果为整型。(2)求子串函数)求子串函数格式:格式:copy(s,n,1);功能:在功能:在S串的第串的第N位开始截取位开始截取1位字符串。位字符串。(3)查找子串函数查找子串函数格式:格式:pos(b,s);功能:求子串功能:求子串b在在s中出现的起始位置,结果为整型,若未找到显示中出现的起始位置,结果为整型,若未找到显示0。(4)插入过程)插入过程格式:格式:insert(s1,s2,i);功能:将功能:将s1插入插入s2中的第中的第i个字符位置,若结果超出个字符位置,若结果超出s2的最大长度,则超出的部分被截的最大长度,则超出的部分被截掉。掉。(5)删除过程)删除过程格式:

52、格式:delete(s,I,n);功能:删除功能:删除s中第中第i个字符位置开始的个字符位置开始的n个字符。个字符。(6)数值转换为字符串过程)数值转换为字符串过程格式:格式:str(v,s);功能:将数值功能:将数值V转换成字符串,存放在字符串变量转换成字符串,存放在字符串变量s中。中。(7)字符串转换为数值过程)字符串转换为数值过程格式:格式:val(s,v,c);功能:将数字串功能:将数字串s转换成数值转换成数值v,变量变量C记录检测出错的第一个字符的位置,当未出错时,记录检测出错的第一个字符的位置,当未出错时,C为为0。翼墒混病牧叭较胡腔咬蛰形氨赏试陨荷寨嚏口暑帕魔从恳仓虫亩隘莲坟近P

53、ASCAL程序基础PASCAL程序基础一、过程和函数统称子程序。子程序的执行过程第四节第四节 函数与过程函数与过程锻号盎淀杂锗员灼傈淳性举泳击骸核闽让奖邹播折凭岔鹰淀货节崔你状契PASCAL程序基础PASCAL程序基础函数(1)标准函数:)标准函数:我们已经接触过一些我们已经接触过一些FreePascal提供一些内部标准函数,供编程时调用,提供一些内部标准函数,供编程时调用,象求象求|X|可调用可调用ABS(X),求可调用),求可调用SQRT(49)等等。实际上,这些函数是一等等。实际上,这些函数是一些包含在些包含在FreePascal系统中供用户调用的程序模块,分别命名为:系统中供用户调用的

54、程序模块,分别命名为:ABS,SQRT等。因而,只要在程序中遵照一定的调用规则,写出某一函数等。因而,只要在程序中遵照一定的调用规则,写出某一函数名以及此函数所需的参数,系统就会自调用这些程序模块,求得运算结果。名以及此函数所需的参数,系统就会自调用这些程序模块,求得运算结果。如:如:ABS(X)SQRT(12+X)等等。等等。(2)自定义函数)自定义函数系统提供的这些内部标准函数,虽然使用起来十分方便,但其中种类和数系统提供的这些内部标准函数,虽然使用起来十分方便,但其中种类和数量毕竟有限,不可能包含用户的所有需要。在实际问题中,经常会遇到诸如量毕竟有限,不可能包含用户的所有需要。在实际问题

55、中,经常会遇到诸如求求N!这一类的运算,系统中则没有提供相应的函数可供调用。为此,!这一类的运算,系统中则没有提供相应的函数可供调用。为此,FreePascal允许用户自行定义一些函数,我们称之为自定义函数。这种自定义函允许用户自行定义一些函数,我们称之为自定义函数。这种自定义函数一经定义,就可象内部函数一样,通过函数名调用它。但要注意:这些函数一经定义,就可象内部函数一样,通过函数名调用它。但要注意:这些函数必须在程序中定义,也只能在本程序中使用。数必须在程序中定义,也只能在本程序中使用。晃贰栖掣着圭儒敝和贝宜蹲驱贯驶恬茫涧单构拄恤首酌腮裂妨鳖劫磷科卿PASCAL程序基础PASCAL程序基础

56、函数定义及调用函数定义及调用一、Pascal标准函数:abs(x)、sqr(x)、等二、用户自定义函数:函数定义的格式:function():;函数首部函数首部begin;:=;end;函数体函数体膛贺奎恋硅裹珊轧醉插巡石紫鸵冗又极泛狡拜亩簧触甫松且拣友酞球滚日PASCAL程序基础PASCAL程序基础函数说明函数说明注:1)函数首部以关键字function开头。2)括号内为形式参数表,即形参表。3)函数的类型也就是函数值的类型。4)函数的执行部分以begin开头,以end结束(end后有一个分号)。在执行部分,至少要有一条将函数值传给函数名的赋值语句,即::=;这样就由函数名将求得的函数值带回

57、调用该函数的程序中。舆恃侈守疑官苑冰坚也陈和罐贫挟蕾射扑酷郑牺属燃任草旁踩卵莱皇成香PASCAL程序基础PASCAL程序基础【例】 求3!+5!+7!的值分析:可以先编写一个求n!的函数fac。 Program exp7_1 ; 程序首部 Var s,: real ; x :integer ;function fac(n:integer): real ; 函数首部函数值的类型是实型 var 局部变量说明 k,t:integer; begin t:=1; for k:=2 to n do t:=t*k; fac:=t; 将结果赋值给函数 end;begin 主程序调用 s:=fac(3) + f

58、ac(5) +fac(7) ; writeln( s =,s) end.避植素欺皖扩寺淫抱栋闰糯工背垦绽耕引忌贤橱卸澳靴铰溃黑窗宠辙泼勾PASCAL程序基础PASCAL程序基础函数的调用函数的调用:可以在任何与函数值类型兼容的表达式中调用可以在任何与函数值类型兼容的表达式中调用函数,或者说,函数调用只能出现在允许表达式函数,或者说,函数调用只能出现在允许表达式出现的地方,或作为表达式的一个因子。出现的地方,或作为表达式的一个因子。函数调函数调用方式与标准函数的调用方式相同。用方式与标准函数的调用方式相同。函数调用的一般格式:函数调用的一般格式:函数名(实在参数表)函数名(实在参数表)说明:说明

59、:实在参数简称实在参数简称实参实参。实参的个数必须与函数说明中形参的个数一致,实。实参的个数必须与函数说明中形参的个数一致,实参的类型与形参的类型应当一一对应。参的类型与形参的类型应当一一对应。调用函数时,一般的,实参必须有确定的值。调用函数时,一般的,实参必须有确定的值。函数调用的步骤为:函数调用的步骤为:计算实参的值,计算实参的值,“赋给赋给”对应的形参对应的形参;函数的定义是静态的,若定义后未被调用,则该函数永远不会被执行。函数的定义是静态的,若定义后未被调用,则该函数永远不会被执行。调用的自定义函数应在调用之前已定义过。调用的自定义函数应在调用之前已定义过。自定义函数中的形参,因不是实

60、际存在的变量,故又称为虚拟变量,它自定义函数中的形参,因不是实际存在的变量,故又称为虚拟变量,它们并不占用内存单元,只有在调用函数时,才临时开辟相应的内存单元,们并不占用内存单元,只有在调用函数时,才临时开辟相应的内存单元,存放实在参数的值。实在参数表是一些由逗号分隔的参数,它们是在存放实在参数的值。实在参数表是一些由逗号分隔的参数,它们是在调用函数时所用的自变量。只有在调用函数时,才将实在参数的值传送到调用函数时所用的自变量。只有在调用函数时,才将实在参数的值传送到形参的临时内存单元中去。可见,形参实质上是实参的一个形参的临时内存单元中去。可见,形参实质上是实参的一个“替身替身”。莹愉皿融衡

61、册本蛤庚谣傣操意诱卯藻粟谨锚铺碗驼湃搓僻琳谋除盎译爪船PASCAL程序基础PASCAL程序基础【例】:计算右图五边形的面积。【例】:计算右图五边形的面积。programex3;varb1,b2,b3,b4,b5,b6,b7,s:real;functionarea(a,b,c:real):real;varp:real;beginp:=(a+b+c)/2;area:=sqrt(p*(p-a)*(p-b)*(p-c);end;beginwriteln(inputb1-b7:);readln(b1,b2,b3,b4,b5,b6,b7);s:=area(b1,b5,b6)+area(b2,b6,b7)+

62、area(b3,b4,b7);writeln(s=,s:10:3);end.b7b4b3b2b1b5b6狭浊只惊疗伎堆彩谦叭搪剐拿缘硅锣售铣拎谢汤氮诣邢骨阁测廊次再警亦PASCAL程序基础PASCAL程序基础过程定义及调用一、标准过程:read、readln、write、writeln等二、用户自定义过程:过程定义的格式:procedure();过程首部begin;过程体;end;哲视婉蚌诲棠宫设湃纂咆赛该躇蔚栽滤抖椿蚊拷强驻服询缠叮盗班矫熄掸PASCAL程序基础PASCAL程序基础说明说明:过程首部以关键字过程首部以关键字procedure开头。开头。过程名是用户自定义的标识符,只用来标识一

63、个过程,不过程名是用户自定义的标识符,只用来标识一个过程,不能代表任何数据,因此不能说明能代表任何数据,因此不能说明“过程的类型过程的类型”。形参表的一般格式形式如下:形参表的一般格式形式如下:var变量名表:类型;变量名表:类型;var变量名表:类型。其中带变量名表:类型。其中带var的称为变量形参,不带的称为变量形参,不带var的称为值形参。的称为值形参。在过程体内使用的有关常量、变量等必须在过程体的说明在过程体内使用的有关常量、变量等必须在过程体的说明部分内加以说明或定义。部分内加以说明或定义。与函数体不同的是:函数体的执行部分至少有一个语句给与函数体不同的是:函数体的执行部分至少有一个

64、语句给函数名赋值,而过程体的执行部分不能给过程名赋值,因为函数名赋值,而过程体的执行部分不能给过程名赋值,因为过程名不能代表任何数据。过程名不能代表任何数据。邪躁智使授练谆庄定蹿洱克碱溉制蔷堆念登鄙渺涸囚戒税封仔灶纤颅付还PASCAL程序基础PASCAL程序基础三、过程调用:三、过程调用:【例】:计算五边形的面积。programex3_1;varb1,b2,b3,b4,b5,b6,b7,s,sum:real;procedurearea(a,b,c:real;vars:real);varp:real;beginp:=(a+b+c)/2;s:=sqrt(p*(p-a)*(p-b)*(p-c);en

65、d;beginwriteln(input b1-b7:);readln(b1,b2,b3,b4,b5,b6,b7);sum:=0;area(b1,b5,b6,s);sum:=sum+s;area(b2,b6,b7,s);sum:=sum+s;area(b3,b4,b7,s);sum:=sum+s;writeln(s=,s:10:3); end.过程过程主程序主程序过程过程调用调用形式参数表形式参数表碍惩习伴编绰田由孟碗铬杰肉扁睁腹蘑攀序昭等式勒殆疲抒醚铂鲜莹纯协PASCAL程序基础PASCAL程序基础过程的调用过程的调用过程调用是通过一条过程调用是通过一条独立的过程调用语句独立的过程调用语句来

66、实现的,它与函数调来实现的,它与函数调用完全不同。过程调用与调与标准过程(如用完全不同。过程调用与调与标准过程(如write,read等)的方式相等)的方式相同。调用的一般格式为:同。调用的一般格式为:过程名过程名或或过程名(实在参数表)过程名(实在参数表)说明说明:实参的实参的个数、类型个数、类型必须与形参一一必须与形参一一对应对应。对应于值形参的实参可以是表达式,对应于变量形参的实参只能是变量。对应于值形参的实参可以是表达式,对应于变量形参的实参只能是变量。过程调用的步骤为:计算实参的值;将值或变量的过程调用的步骤为:计算实参的值;将值或变量的“地址地址”传送给对应传送给对应的形参;执行过

67、程体;返回调用处。的形参;执行过程体;返回调用处。埋砚际融诺申工袱仟戴貉牺智擅醉宽妊颜倘森昆痘一娱癸蘑个御绸王瞎柔PASCAL程序基础PASCAL程序基础1函数往往只为求一个函数值;过程一般会被设计成求若干个运算结果,完成一系列的数据处理,或与计算无关的各种操作。2函数有类型,最终要将函数值传送给函数名;过程无类型,不能给过程名赋值。3调用方式不同。函数的调用出现在表达式中;过程的调用是由独立的过程调用语句实现的。4返回值的方法不同。函数值是通过函数名传回调用程序;过程则是通过参数将运算的结果传给调用程序。四、过程与函数的主要区别:四、过程与函数的主要区别:蓄峰忿集漫拇轿掂捏弹灸肉肾埋随疆廖陇

68、朝侵穆诺苦琴艇亏刺忌肝澈诽缅PASCAL程序基础PASCAL程序基础变量及其作用域变量及其作用域一、变量的类型:一、变量的类型:全程变量和局部变量全程变量和局部变量1)、全程变量和它的作用域)、全程变量和它的作用域全程变量是指在程序开头的说明部分定义和说明的量全程变量是指在程序开头的说明部分定义和说明的量。全程变量的作用域分为两种情况:全程变量的作用域分为两种情况:(1)在全程变量和局部变量不同名时,其作用域是整个程序。在全程变量和局部变量不同名时,其作用域是整个程序。(2)在全程变量和局部变量同名时,全局变量的作用域不包含同在全程变量和局部变量同名时,全局变量的作用域不包含同名局部变量的作用

69、域。名局部变量的作用域。2)、局部变量和它的作用域)、局部变量和它的作用域凡是在子程序内部使用的变量,必须在子程序中加入说明。凡是在子程序内部使用的变量,必须在子程序中加入说明。这种在子这种在子程序内部说明的变量称为局部变量。程序内部说明的变量称为局部变量。局部变量的作用域是其所在的子局部变量的作用域是其所在的子程序。程序。形式参数也只能在子程序中有效,因此也属于局部变量。形式参数也只能在子程序中有效,因此也属于局部变量。局部变量的作用域分为两种情况:局部变量的作用域分为两种情况:(1)当外层过程的局部变量名和嵌套过程中的局部变量不同名时,当外层过程的局部变量名和嵌套过程中的局部变量不同名时,

70、外层过程的局部变量作用域包含嵌套过程。外层过程的局部变量作用域包含嵌套过程。(2)当外层过程的局部变量名和嵌套过程内的局部变量名同名时,当外层过程的局部变量名和嵌套过程内的局部变量名同名时,外层过程的局部变量作用域不包含此过程。外层过程的局部变量作用域不包含此过程。事像癌敲恢伞哑机简第厩丙钉汹步骏禹皮渔擒芒稍锌穷樊志津糠巾她狐箭PASCAL程序基础PASCAL程序基础【例5】:全程变量的作用域。programex5;varm:integer;proceduretest1;beginm:=100;end;beginm:=5;writeln(beforethetest1call,mis:,m);t

71、est1;writeln(afterthetest1call,mis:,m);end.运行结果:beforethetest1call,mis:5afterthetest1call,mis:100解伦猿于牌涯姬毅袒聂袖级拜痴亥诉煌踏鸡斌失漂表日一揣漓钝慷坪蠢轿PASCAL程序基础PASCAL程序基础【例6】:比较全程变量与局部变量的作用域。programex6;varm:integer;proceduretest2;varm:integer;beginm:=100;end;beginm:=5;writeln(beforethetest2call,mis:,m);test2;writeln(aft

72、erthetest2call,mis:,m);end.运行结果:beforethetest1call,mis:5afterthetest1call,mis:5瘫绸绢哭观圭栋赋币塔折合花狮瞄尉艇琉顽筏邮嘘迫麓泵棺柿农载苹毒短PASCAL程序基础PASCAL程序基础参数的传递参数的传递一、参数的类型:1形参和实参:形参和实参:函数调用和过程调用的一般步骤:注意:由于形参类型不同,其在函数和过程调用中所起的作用也不同。形参的类型可分为:值形参、变量形参、函数形参、过程形参。实参也对应分为:值实参、变量实参、函数实参、过程实参。 实参和形参结合 执行函数体或过程体 返回调用处继续执行删彬垄樊泽祥梨寇热

73、嘴沟璃雁共滨陈鲍撵革职封婆臀实刨犹涵既狱拌晓础PASCAL程序基础PASCAL程序基础2、值参和变参(1)值参:在函数或过程定义中,没有加VAR说明的参数,在调用函数或过程时,调用程序将实在参数的值直接传递给形参,起着赋值作用。(2)变参:在函数或过程定义中,加有VAR说明的参数,在调用函数或过程时,调用程序将实在参数的变量地址传递给形变参,因此当过程或函数处理中,改变形参变量的值,则实在参数的变量值也随之改变。(共享同一个存储单元)例:procedurearea(a,b,c:real;vars:real);坟耽压沧幌戳衔叼窿厉涧挞辆台辟疽梯径纷佐撑帮停吗蜀坪婆色耀且泣裴PASCAL程序基础P

74、ASCAL程序基础3值参和变参例题:值形参:functionfac(x:integer):integer;【例7】:值参数分析programex7;vara:integer;proceduresum(b:integer);beginb:=b+10;writeln(b=,b);end;begina:=10;sum(a);writeln(a=,a);end.运行结果:b=20a=10蒂僧傣神拔漾斌呵荫啦博志追鲸咨揩依坍烤丸糕骇漆猖驯殊屏嗓衫凋胖艺PASCAL程序基础PASCAL程序基础变量形参:procedurearea(a,b,c:real;vars:real;)几点说明:1.函数不允许用变量形

75、参;过程如需向调用程序返回值时,应采用变量形参。2.变量形参要求它的实参和它是同一类型的变量,而不能是表达式。3.在过程执行时,遇到对变量形参的引用或赋值,就是对相应参数的引用或赋值。4.对变量形参的任何操作就是对实参本身的操作。充淬冬霸递桌氧徒访诡厢判锑磨恶篙厌逐橇绣东气净峰秋吮饯吻坟靶塞亢PASCAL程序基础PASCAL程序基础【例8】:变量参数分析programex8;vara:integer;proceduresum(varb:integer);beginb:=b+10;writeln(b=,b);end;begina:=10;sum(a);writeln(a=,a);end.运行结果

76、:b=20a=20仙徒棺篱骂收圣矫雹适摆初些愿写坎侵墙湍助帆笆妈物赊惕睫妆金茂拾止PASCAL程序基础PASCAL程序基础o小结:值参和变参o值形参传值:调用时可用表达式代替形参,不改变实在参数的值。o变量形参传地址:调用时必须用变量代替形参变量,改变实在参数的值。例:请看下列程序的运行结果。programli3_10;vara,b,c:integer;proceduresub(x,y:integer;varz:integer);beginx:=x+1;y:=y+1;z:=x+y;writeln(sub:x=,x:2,y=,y:2,z=,z:2);end;begina:=1;b:=4;c:=9

77、;writeln(main:a=,a:2,b=,b:2,c=,c);sub(a,b,c);writeln(main:a=,a:2,b=,b:2,c=,c);sub(c+5,b*b,a);writeln(main:a=,a:2,b=,b:2,c=,c);readln;end.运行结果:main:a1b4c9sub:x2y5z7main:a1b4c7sub:x13y17z30main:a30b4c7览寞增田菩梳蹿等藐驴钉检哉漱骄挡探膜韦嗅答蕊鲸恢仑绊摩衬便姑瑰梅PASCAL程序基础PASCAL程序基础1递归的定义:Pascal语言中,如果在一个函数、过程等的定义或说明内部又直接或间接地出现有对自身

78、的引用,则称它们是递归的或者是递归定义的。例如:在数学上,所有偶数的集合可递归地定义为:0是一个偶数;一个偶数和2的和是一个偶数。可见,仅需两句话就能定义一个由无穷多个元素组成的集合。2递归的实现:通过函数或过程的调用来实现。函数或过程直接调用其自身,称为直接递归;函数或过程间接调用其自身,称为间接递归。第五节第五节 程序的递归调用程序的递归调用就猪椽噬祖缚劳溜憨喷唤诉脯唉兴僚灸卖次侣肇唁议终浩朝锋支辖叁迟纫PASCAL程序基础PASCAL程序基础3例题:【例】:用递归计算n!n!可以由下列公式表示:programex15;varn:integer;s:integer;functionfac(

79、a:integer):integer;beginifa=0thenfac:=1elsefac:=a*fac(a-1);end;beginreadln(n);s:=fac(n);writeln(n,!=,s)end.输入:5输出:n!1 n=0n(n-1)! n0巾芝霸剃杀锈蔓猩端先交汾琅搭犹豪志骏霄佩丝蘑愿阮帽演写乏让邵留员PASCAL程序基础PASCAL程序基础主程序主程序fac(5)5*fac(4)4*fac(3)3*fac(2)2*fac(1)1*fac(0)1112624120晕童氰筛驭停尾税虾姐邵蔫悼辽圾浑览词乃规咆顽茂簧颂驯瞥呕铸案酱贮PASCAL程序基础PASCAL程序基础递归结

80、构的优点:结构清晰、容易阅读和理解,递归结构的缺点:需要保留每次递归调用时的参数,和局部变量,占用内存大,耗费机时多,程序运行的效率较低,递归算法的实用情况:符合递归的描述:1.需要解决的问题可以化为子问题求解,而子问题求解的方法与原问题相同,只是数量增大或减少。2.递归调用的次数是有限的。3.必须有递归结束的条件。哮壬撤衫必钉娱稽薄晤传苟享糜窿览设衷岂臼形迭毙坎踏缚颅疫四晒潍预PASCAL程序基础PASCAL程序基础分析以下程序写出运行结果(循环结构练习)1、Vary,m,d:integer:BeginReadln(y,m);Casemof1,3,5,7,8,10,12:d:=31;4,6,

81、9,11:d:=302:if(ymod4)=0and(ymod100=10)or(ymod400=0)thend:=29elsed:=28;end;writeln(y,d):end.input:20002output:2、VarS,I:ingeger;BeginS:=0;ForI:=1to100doIf(Imod3=0)and(Imod4=0)Thens:=s+i;Writeln(s=,s)End.output:3、Vari:integer;Beginfori:=1to100doifimod2=0thenBeginwrite(i:4);ifimod5=0thenwriteln;End;End.

82、output:作作业业撵登比丢冈龟银授键集碘厨盒靳臆益托绑赶渐耀揉此羊凸惮悼疙坛队炒棺PASCAL程序基础PASCAL程序基础4、VARi,j:integer;BEGINFoRi:1TO5DoBEGINFoRj:5DOWNT0iDoWrite(“十);WritelnENDEND5、varn,i,a1,a2,a3:integer;beginreadln(n);a1:=3;a2:=5;write(a1:8,a2:8);fori:=3tondobegina3:=a1+a2;a1:=a2;a2:=a3;write(a3:8);end;end.输入:10输出:6、VARi,j,k,sum1,sum2:I

83、nteger;BEGINsum1:0;sum2:0;k:1;whilek10DOBEGINif(kMOD20)THENFORi:1To5D0sum1:sum1十iELSEFORj:1To5D0sum2:sum2十i;k:k十1;END;writeln(suml,sum2)END7、VARn:Integer;b,t:Real;BEGINt:1;b:1;n:2;REPEATb:b*n;t:t十b;n:n十1UNTILn8;Writeln(t:3:0)END讼猜噪宽群唬橙徐释肛腻乔怀叮巾洲遥棕课争揖皿辈碳柯亿宗雏赞插擅马PASCAL程序基础PASCAL程序基础镭吊奴桂庸阔刺助博钞寐揭藻墩交璃弥征缘缀欢孙角丛吠博牟莽黑组轴馁PASCAL程序基础PASCAL程序基础结结束束磕唉园弊暑裕凤岸兜淹洽粤态泅输会拨疹海辉个抒社薄垦辉柞赌逻诫乾扎PASCAL程序基础PASCAL程序基础

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号