函数与过程精品课件_第1页
函数与过程精品课件_第2页
函数与过程精品课件_第3页
函数与过程精品课件_第4页
函数与过程精品课件_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、函数与过程第1页,共13页,2022年,5月20日,9点24分,星期一procedure fiveline; var i:integer; begin for i:=1 to 5 do writeln end;procedure nlines(n:integer); var i:integer; begin for i:=1 to n do writeln end;无参过程,输出5个空行带参过程,输出n个空行过程调用过程名(实在参数表) 实在参数若有,是用逗号隔开的变量或表达式,他们必须与形式参数顺序一一对应,个数相同,类型一致,而实参的名字与形参取名无关如:procedure lowterm

2、(var n,d:integer);lowterm(n,d);lowterm(n+d);lowterm(n,n/d);实参只有一个第二个实参是实型,而对应的形参是整型第2页,共13页,2022年,5月20日,9点24分,星期一过程调用是一个独立的语句,当执行到该语句时,则将实参中的信息传送给相应的形参(若有的话),然后转去执行过程说明中的语句,执行完毕后返回到调用位置例3:定义一个打印由“”组成的三角形的过程,然后,在主程序中输入行数,并调用该过程输出三角形。第3页,共13页,2022年,5月20日,9点24分,星期一Procedure sjx(x:integer);Var I,j:integ

3、er;Begin for I:=1 to x do begin for j:=1 to I do write(); writeln; end;End;Var a:integer;Begin read(a); sjx(a);End.第4页,共13页,2022年,5月20日,9点24分,星期一练习1:分别用函数和过程计算S=1/7!+1/9!+1/13!Procedure f(n:integer;var fac:real); var i:integer;k:longint; begin k:=1; for i:=2 to n do k:=k*i; fac:=1/k end;Var s1,s2,s3

4、:real;begin f(7,s1); f(9,s2); f(13,s3); s1:=s1+s2+s3; writeln(s1)end.Function f(n:integer):real; var i:integer;k:longint; begin k:=1; for i:=2 to n do k:=k*i; f:=1/k end;Var s:real; begin s:=f(7)+f(9)+f(13); writeln(s) end.第5页,共13页,2022年,5月20日,9点24分,星期一三、参数传递形参有4种:值参数、变量参数、过程参数、函数参数形式参数表中前无var,后有类型的

5、参数 形式参数表中前有var后有类型的参数 形参实参值参类型赋值相容的表达式变量参数同一类型的变量例:var x:real;i:integer;procedure change(y:real); begin end;change(sin(x)+0.5);change(1.0);change(x);change(i);若将过程首部改为:procedure change(var y:real);只有change(x)正确第6页,共13页,2022年,5月20日,9点24分,星期一形参是值参:过程或函数被调用时,系统为每个值参开辟临时存储单元,然后将对应实参的值赋给值参。由于值参与实参是不同的存储单

6、元,所以过程体中对值参的改变不会影响实参,数据的传送是单向的,当流程返回到调用程序时,值参所占的存储单元被释放。形参是变量参数:进入过程体前,系统将实参的存储地址传送给形参,过程体执行期间,对变量参数的操作就是对相应实参的操作,从而达到调用函数与被调函数之间互相传送数据的目的。参考课本P84P86第7页,共13页,2022年,5月20日,9点24分,星期一例Program transmit; var a,b:integer; procedure p(var x:integer;y:integer); begin x:=x+5; y:=y+5; writeln(x=,x,y=,y) end; b

7、egin a:=3;b:=3; p(a,b); p(a,b); writeln(a=,a,b=,b) end.x=8 y=8x=13 y=8a=13 b=3阅读课本例69P86第8页,共13页,2022年,5月20日,9点24分,星期一四、标识符的作用域在主程序中说明的常量、类型、变量、过程名等标识符,它们的作用域是整个程序,故称为全程量。而在过程或函数中说明的常量、类型、变量、参数以及嵌套在其内的过程名等标识符,作用域是说明它的过程或函数分程序之内,在之外不能使用,这些标识符成为局部量。如果在过程或函数中局部量与全程量(或非局部量)同名,则阻碍了过程或函数对同名全程量(或非局部量)的访问。P

8、rogram example; var x,y:integer; procedure change; var x:integer; begin x:=2;y:=2; writeln(x,y) end; begin x:=1;y:=1; writeln(x,y); change; writeln(x,y) end.全局量与局部量分析结果112212第9页,共13页,2022年,5月20日,9点24分,星期一五、嵌套一个函数或过程可能要求调用另一个函数或过程,我们称这种调用为函数与过程的嵌套Program nest; procedure outer1; procedure inner(z:real

9、); begin . end;inner begin end;outer1 procedure outer2; begin end; begin主程序 end.调用原则(函数同过程):1、外层的主程序或过程可以调用相邻内层的过程,但不允许隔层调用2、内层可以调用外层过程3、同一层的过程可以相互调用,但要遵守“向前说明”的原则nestouter1outer2inner第10页,共13页,2022年,5月20日,9点24分,星期一过程和函数的区别过程和函数都为子程序,但也有区别:1、标识符不同。函数的标识符为FUNCTION,过程为:PROCEDURE。2、函数中一般不用变量形参,用函数名直接返回

10、函数值;而过程如有返回值,则必须用变量形参返回。3、过程无类型,不能给过程名赋值;函数有类型,最终要将函数值传送给函数名。4、函数在定义时一定要进行函数的类型说明,过程则不进行过程的类型说明。5、调用方式不同。函数的调用出现在表达式中,过程调用,由独立的过程调用语句来完成。6、过程一般会被设计成求若干个运算结果,完成一系列的数据处理,或与计算无关的各种操作;而函数往往只为了求得一个函数值。第11页,共13页,2022年,5月20日,9点24分,星期一1、设计一个过程,计算圆的面积。在主程序中输入一个半径值,然后调用该过程,并输出圆的面积。const pi=3.1415926;var r,s:real;procedure yuan(x:real;var y:real); begin

温馨提示

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

评论

0/150

提交评论