《函数与过程优秀PPT.ppt》由会员分享,可在线阅读,更多相关《函数与过程优秀PPT.ppt(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、函数与过程第1页,本讲稿共13页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 5个空行个空行带参过程,输出带参过程,输出n n个空行个空行过程调用过程调用过程名过程名(实在参数表)(实在参数表)实在参数若有,是用逗号隔开的变量或表达式,他们必须实在参数若有,是用逗号隔开的变量或表达式,他们必须与形式参数顺序一一对应,个数相
2、同,类型一致,而实参的名与形式参数顺序一一对应,个数相同,类型一致,而实参的名字与形参取名无关字与形参取名无关如:如:procedure lowterm(var n,d:integer);lowterm(n,d);lowterm(n+d);lowterm(n,n/d);实参只有一个实参只有一个第二个实参是实型,而对应的形参是整型第二个实参是实型,而对应的形参是整型第2页,本讲稿共13页过程调用是一个独立的语句,当执行到该语句时,则将实参中的信息传送过程调用是一个独立的语句,当执行到该语句时,则将实参中的信息传送给相应的形参(若有的话),然后转去执行过程说明中的语句,执行完毕给相应的形参(若有的
3、话),然后转去执行过程说明中的语句,执行完毕后返回到调用位置后返回到调用位置例例3:定义一个打印由:定义一个打印由“”组成的三角形的过程,然后,组成的三角形的过程,然后,在主程序中输入行数,并调用该过程输出三角形。在主程序中输入行数,并调用该过程输出三角形。第3页,本讲稿共13页Procedure sjx(x:integer);Var I,j:integer;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
4、页练习练习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: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
5、 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页三、参数传递三、参数传递形参有形参有4种:值参数、变量参数、过程参数、函数参数种:值参数、变量参数、过程参数、函数参数形式参数表中前无形式参数表中前无var,后有类型的参数后有类型的参数 形式参数表中前有形式参数表中前有var后后有类型的参数有类型的参数 形参形参实参实参值参值参类型赋值相容的表达式类型赋值相容的表达式变量参数变量参数同一类型的变量同一类型的变量例:例:var x:real;i:integer;proce
6、dure 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页形参是值参:形参是值参:过程或函数被调用时,系统为每个值参开辟临时过程或函数被调用时,系统为每个值参开辟临时存储单元,然后将对应实参的值赋给值参。由于值参与实参是存储单元,然后将对应实参的值赋给值参。由于值参与实参是不同的存储单元,所以过程体中对值参的改变不会影响实参,不同的存储单元,所
7、以过程体中对值参的改变不会影响实参,数据的传送是单向的,当流程返回到调用程序时,值参所占的数据的传送是单向的,当流程返回到调用程序时,值参所占的存储单元被释放。存储单元被释放。形参是变量参数:形参是变量参数:进入过程体前,系统将实参的存储地址传送进入过程体前,系统将实参的存储地址传送给形参,过程体执行期间,对变量参数的操作就是对相应实参给形参,过程体执行期间,对变量参数的操作就是对相应实参的操作,从而达到调用函数与被调函数之间的操作,从而达到调用函数与被调函数之间互相传送数据的目互相传送数据的目的。的。参考课本参考课本P84P86第7页,本讲稿共13页例例Program transmit;va
8、r a,b:integer;procedure p(var x:integer;y:integer);begin x:=x+5;y:=y+5;writeln(x=,x,y=,y)end;begin 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页四、标识符的作用域四、标识符的作用域在主程序中说明的常量、类型、变量、过程名等标识符,它们在主程序中说明的常量、类型、变量、过程名等标识符,它们的作用域是整个程序,故称为全程量。而在过程或函数中说明的作用域是整个
9、程序,故称为全程量。而在过程或函数中说明的常量、类型、变量、参数以及嵌套在其内的过程名等标识符,的常量、类型、变量、参数以及嵌套在其内的过程名等标识符,作用域是说明它的过程或函数分程序之内,在之外不能使用,作用域是说明它的过程或函数分程序之内,在之外不能使用,这些标识符成为局部量。这些标识符成为局部量。如果在过程或函数中局部量与全程量(或非局部量)同名,则如果在过程或函数中局部量与全程量(或非局部量)同名,则阻碍了过程或函数对同名全程量(或非局部量)的访问。阻碍了过程或函数对同名全程量(或非局部量)的访问。Program example;var x,y:integer;procedure ch
10、ange;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页五、嵌套五、嵌套一个函数或过程可能要求调用另一个函数或过程,一个函数或过程可能要求调用另一个函数或过程,我们称这种调用为函数与过程的嵌套我们称这种调用为函数与过程的嵌套Program nest;procedure outer1;procedure inner(z:real);begin .end;inner beg
11、in end;outer1 procedure outer2;begin end;begin主程序主程序 end.调用原则(函数同过程):调用原则(函数同过程):1、外层的主程序或过程可以调用相邻、外层的主程序或过程可以调用相邻内层的过程,但不允许隔层调用内层的过程,但不允许隔层调用2、内层可以调用外层过程、内层可以调用外层过程3、同一层的过程可以相互调用,但要、同一层的过程可以相互调用,但要遵守遵守“向前说明向前说明”的原则的原则nestouter1outer2inner第10页,本讲稿共13页过程和函数的区别过程和函数都为子程序,但也有区别:1、标识符不同。函数的标识符为FUNCTION,
12、过程为:PROCEDURE。2、函数中一般不用变量形参,用函数名直接返回函数值;而过程如有返回值,则必须用变量形参返回。3、过程无类型,不能给过程名赋值;函数有类型,最终要将函数值传送给函数名。4、函数在定义时一定要进行函数的类型说明,过程则不进行过程的类型说明。5、调用方式不同。函数的调用出现在表达式中,过程调用,由独立的过程调用语句来完成。6、过程一般会被设计成求若干个运算结果,完成一系列的数据处理,或与计算无关的各种操作;而函数往往只为了求得一个函数值。第11页,本讲稿共13页1、设计一个过程,计算圆的面积。在主程序、设计一个过程,计算圆的面积。在主程序中输入一个半径值,然后调用该过程,并输出中输入一个半径值,然后调用该过程,并输出圆的面积。圆的面积。const pi=3.1415926;var r,s:real;procedure yuan(x:real;var y:real);begin y:=pi*x*x;end;begin readln(r);yuan(r,s);writeln(s=,s:6:2);end.第12页,本讲稿共13页作业编写一个函数,根据参数指定的编写一个函数,根据参数指定的n,计算出,计算出函数值函数值x,计算公式如下:,计算公式如下:第13页,本讲稿共13页