资源描述:
《函数和过程ж》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、函数和过程7.2.1函数过去用到的sqrt(x),abs(x),trunc(x)等,都是一些由系统预定义说明的标准函数过程,在应用中用户可根据自己的需要说明一些函数。函数说明形式如下:function函数名(形式参数表):函数类型;说明部分;begin函数体end;函数返回一个函数值,过程则能完成一系列各种操作。函数的调用方式出现在表达式中,而过程调用是一句独立的语句。例:计算
2、X
3、的函数VarA,b:real;functionzhoufei(x:real):real;varz:real;beginifx>=0thenz:=xelsez:=-x;zhoufei:=z;end;B
4、eginReadln(a);B:=Zhoufei(a);Writeln(b);End.[例2]求任意输入的五个自然数的最大公约数。解:⑴自定义一个专门求两自然数的最大公约数的函数GCD; ⑵调用自定义函数,第一次求前两个数的最大公约数;从第二次开始,用每次求得的最大公约数与下一个数再求两个数最大公约数,直到最后。本题共四次“求两个数的最大公约数”,设输入的五个自然数分别是a1,a2,a3,a4,a5,采用如下步骤:①求a1,a2两个数的最大公约数→ 存入a1;②求a1,a3两个数的最大公约数→ 存入a1;③求a1,a4两个数的最大公约数→ 存入a1;④求a1,a5两个数的最大
5、公约数→ 存入a1;⑤输出a1,此时的a1已是五个数的最大公约数。Pascal程序:ProgramExam42;Vara1,a2,a3,a4,a5:integder;functionGCD(x,y:integer):integer; {自定义函数}Varn:integer;begin While xmody<>0 do begin n:=x;x:=y;y:=n mod yend; GCD:=yend; Begin {主程序}Write('input5Numper:'); readln(a1,a2,a
6、3,a4,a5); {输入五个数} Write('(',a1,',',a2,',',a3,',',a4,',',a5,')=');a1:=GCD(a1,a2); {调用函数GCD} a1:=GCD(a1,a3); a1:=GCD(a1,a4); a1:=GCD(a1,a5); Writeln(a1); readlnEnd.练习:1、编写求n!的函数,利用它来求d=k!/(r!(k-r)!),其中k,r的值从键盘输入(k>r)。7.2.2过程过程说明由过程首部和过程体组成,其形式如下:procedure过程名
7、(形式参数表);-------过程首部说明部分;begin执行语句;……end;1、无参过程Procedurefiveblankline;VarI:integerbeginFori:=1to5dowriteln;End;BeginFiveblankline;End.2、有参过程例输出两个数中最大值的过程Varn1,n2:integer;procedurelargest(a,b:integer);beginifa>bthenwriteln(a)elsewriteln(b);end;BeginReadln(n1,n2);Largest(n1,n2);End.过程形参:值形参、变量形
8、参Proceduresub(x,y:integer;vark:real);其中,x,y为值形参,k为变量形参。例1:Vara:integer;Proceduresum(varb:integer);10BeginB:=b+10;20Writeln(b);20End;BeginA:=10;Sum(a);Writeln(a);End.2020例2:Varx,n:integer;Procedurechan(x:integer;vary:integer);BeginX:=x+5;Y:=y+5;Writeln(‘x=’,x,’y=’,y);End;BeginX:=10;n:=10;Chan
9、(x,n);Writeln(‘x=’,x,’n=’,n);End.函数、过程区别:1、过程允许没有形式参数,函数的形式参数不可缺少,且必须说明函数的数据类型;2、函数能返回值,要返回值的程序通常采用函数。