- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函数和过程;一、函数(把完成某种计算的子程序定义为函数,每调用 一次产生一个结果);例1:设计一个求累加和的函数。输入一个正整数,然后计算从1到此数的累加和。;例如:要调用上面的函数,主程序如下:
Var x:integer;
begin
readln(x);
write(sum(x));
End.;例2:计算如图示多边形的面积;Function area(a,b,c:real):real;
Var p:real;
Begin
p:=(a+b+c)/2;
area:=sqrt(p*(p-a)*(p-b)*(p-c));
End;
Var b1,b2,b3,b4,b5,b6,b7,s:real;
Begin
readln(b1,b2,b3,b4,b5,b6,b7);
s:=area(b1,b5,b6)+area(b2,b6,b7)+area(b3,b4,b7);
Writeln(‘s=‘,s:8:2);
End.;二、过程;procedure fiveline;
var i:integer;
begin
for i:=1 to 5 do
writeln
end;;过程调用是一个独立的语句,当执行到该语句时,则将实参中的信息传送
给相应的形参(若有的话),然后转去执行过程说明中的语句,执行完毕
后返回到调用位置;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.;函数与过程的区别(课本P83-P84);练习1:分别用函数和过程计算S=1/7!+1/9!+1/13!;三、参数传递;形参是值参:过程或函数被调用时,系统为每个值参开辟临时
存储单元,然后将对应实参的值赋给值参。由于值参与实参是
不同的存储单元,所以过程体中对值参的改变不会影响实参,
数据的传送是单向的,当流程返回到调用程序时,值参所占的
存储单元被释放。;例;四、标识符的作用域;五、嵌套;一、教材P94-P96的应用实例要看会。;参考答案: 1、设计一个过程,计算圆的面积。在主程序中输入一个半径值,然后调用该过程,并输出圆的面积。;2、读入正整数n,利用函数求2到n之间所有的素数。;3、编写一个函数,根据参数指定的n,计算出函数值x,;4、在程序中定义一函数digit(n,k),它能分离出整数n从右边数第K个数字,并在主程序中调用此函数。如:digit(31859,3)=8, digit(2076,5)=0;6、向前引用;7、递归;一般来说,递归子程序在调用本身前应有条件语句控制何时继
续递归,何时结束递归,这个条件语句就是递归边界。例如
fac函数体中的“if n=0 then fac:=1”。;练1??快速排序;练2:输入一个十进制的整数(-32767..32767),求相应的二进制、八进制和十六进制的值。;练3:输入一个凸多边形的n个顶点坐标,求凸多边形的面积。;练4:(数据查找)给定一组数据,查找其中一个符合条件的数据。
文档评论(0)