优选函数与过程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
end.
编一程序,求从10名同学中选出3名代表,有几种不同的选法。 (公式:C(m,n)=m!/n!*(m-n)!从m中选n)
program zohe1; var m,n:integer;
c:longint; function factor(x:integer):longint;{定义} var i:integer; p:longint; begin p:=1; for i:=1 to x do p:=p*i; factor:=p;{这个语句必须} end; begin write('m,n=');readln(m,n); c:=factor(m) div (factor(n)*factor(m-n));{调用} writeln('c(',m,',',n,')=',c); end.
function 函数名(形参表):函数类型; { 函数首部}
var
{局部变量说明部分}
begin
{函数体}
...
{函数语句}
...
函数名:=表达式
end;
说ห้องสมุดไป่ตู้:
①函数由首部与函数体两部分组成。
②函数首部以关键字function开头。
③函数名是用户自定义的标识符。
④函数的类型也就是函数值的类型,所求得的函数值通过函数名
{X的类型与函数类型必须一致}
y:=49; x:=sqrt(y);
又,如果函数类型是boolean,则还可以出现在条件语句中,
充当条件表达式: if 函数名(实在参数表) then ……
program ysh; var x,y:real;
function sh(t:real):real;
begin
sh:=(exp(t)-exp(-t))/2;
L1 L6
L3
s2
s3 L7
L5
L4
五边形的面积可以变成3个三角形 面积的和。
根据L1、L2、L6计算三角形面积s1 根据L3、L6、L7计算三角形面积s2 根据L4、L5、L7计算三角形面积s3
将s1、s2、s3相加得到五边形面积
计算三角形面积的海伦公式:
1 p = --- (a+b+c)
2 ts = p(p-a)(p-b)(p-c)
传回调用它的程序。可见,函数的作用一般是为了求得一个值。
⑤当缺省形参表时,称为无参函数。
⑥函数体与程序体基本相似,由说明部分和执行部分组成。
⑦函数体中的说明部分用来对本函数使用的标号、常量、类型、
变量、子程序加以说明,这些量只在本函数内有效。
⑧函数体的执行部分由begin开头,end结束,中间有若干用分号
例、输入 x的值,计算y。已知
sh(1+shx) y=
sh2x+sh3x
其中sh是双曲正弦函数,题中要四次调 用这个函数,可以将它定义成一个函数。
et-e-t
已知计算双曲正弦的公式为 sh(t) =
2
双曲正弦函数为:
function sh(t:real):real; begin sh:=(exp(t)-exp(-t))/2; end;
在一个程序中可以只有主程序而没有子程序(本章以前都是如 此),但不能没有主程序,也就是说不能单独执行子程序。pascal中 子程序有两种形式:函数和过程。
一、函数
在此之前,我们曾经介绍并使用了pascal提供的各种标准函数, 如ABS,SUCC等等,这些函数为我们编写程序提供了很大的方便。但 这些函数只是常用的基本函数,编程时经常需要自己定义一些函数。
end;
begin
read(x);
y:=sh(1+sh(x))/(sh(2*x)+sh(3*x));
writeln(y);
end.
3、形参与实参 形参:全称为“形式参数”是在定义函数名和函数体的时候使用的
参数,目的是用来接收调用该函数时传递的参数.
实参:全称为“实际参数”是在调用时传递给该函数的参数
所以形参即函数的自变量。自变量的初值来源于函数调用,即 实参。
在函数中,形参一般格式如下:
变量名表1:类型标识符1;变量名表2:类型标识符2;…;变量名表n:类型标识符n
(x,y : integer ; z : real ; a : char)
例、求五边形的面积。边长L1—L7由键盘读入。
L2
s1
隔开的 语句,只是end后应跟分号,不能像程序那样用句号“.”。
⑨在函数体的执行部分,至少应该给函数名赋一次值,以使在函
数执行 结束后把函数值带回调用程序。
2、函数的调用 函数在语法上相当于一个表达式,所以,调用时,函数不能独立
成为一个语句;它可以出现在任何表达式可以出现的地方。
例如赋值语句的右边: X:=函数名(实在参数表);
例:求正整数A和B之间的完全数(A<B). 分析:所谓完全数是指它的小于该数本身的因子之和等于它本
身,如6=1+2+3,6即是一个完全数。因此我们可定义一个布尔型 函数perfect(x),若x是完全数,其值为TURE,否则为FALSE。
1、函数的定义 在pascal中,函数也遵循先说明后使用的规则,在程序中,函数
的说明放在主程序的说明部分。函数的结构与主程序的结构很相似。
function 函数名(形参表):函数类型; var begin ... ... 函数名:=表达式 end;
{ 函数首部} {局部变量说明部分}
{函数体} {函数语句}
program area; var l1,l2,l3,l4,l5,l6,l7,s:real; function ts(a,b,c:real):real; var p:real; begin p:=(a+b+c)/2; ts:=sqrt(p*(p-a)*(p-b)*(p-c)); end; begin read(l1,l2,l3,l4,l5,l6,l7); s:=ts(l1,l2,l6)+ts(l3,l6,l7)+ts(l4,l5,l7); writeln(‘area=’,s);
优选函数与过程
子程序的使用不仅缩短了程序,节省了内存空间及减少了程 序的编译时间,而且有利于结构化程序设计。因为一个复杂的问 题总可将其分解成若干个子问题来解决,如果子问题依然很复杂, 还可以将它继续分解,直到每个子问题都是一个具有独立任务的 模块。这样编制的程序结构清晰,逻辑关系明确,无论是编写、 阅读、调试还是修改,都会带来极大的好处
编一程序,求从10名同学中选出3名代表,有几种不同的选法。 (公式:C(m,n)=m!/n!*(m-n)!从m中选n)
program zohe1; var m,n:integer;
c:longint; function factor(x:integer):longint;{定义} var i:integer; p:longint; begin p:=1; for i:=1 to x do p:=p*i; factor:=p;{这个语句必须} end; begin write('m,n=');readln(m,n); c:=factor(m) div (factor(n)*factor(m-n));{调用} writeln('c(',m,',',n,')=',c); end.
function 函数名(形参表):函数类型; { 函数首部}
var
{局部变量说明部分}
begin
{函数体}
...
{函数语句}
...
函数名:=表达式
end;
说ห้องสมุดไป่ตู้:
①函数由首部与函数体两部分组成。
②函数首部以关键字function开头。
③函数名是用户自定义的标识符。
④函数的类型也就是函数值的类型,所求得的函数值通过函数名
{X的类型与函数类型必须一致}
y:=49; x:=sqrt(y);
又,如果函数类型是boolean,则还可以出现在条件语句中,
充当条件表达式: if 函数名(实在参数表) then ……
program ysh; var x,y:real;
function sh(t:real):real;
begin
sh:=(exp(t)-exp(-t))/2;
L1 L6
L3
s2
s3 L7
L5
L4
五边形的面积可以变成3个三角形 面积的和。
根据L1、L2、L6计算三角形面积s1 根据L3、L6、L7计算三角形面积s2 根据L4、L5、L7计算三角形面积s3
将s1、s2、s3相加得到五边形面积
计算三角形面积的海伦公式:
1 p = --- (a+b+c)
2 ts = p(p-a)(p-b)(p-c)
传回调用它的程序。可见,函数的作用一般是为了求得一个值。
⑤当缺省形参表时,称为无参函数。
⑥函数体与程序体基本相似,由说明部分和执行部分组成。
⑦函数体中的说明部分用来对本函数使用的标号、常量、类型、
变量、子程序加以说明,这些量只在本函数内有效。
⑧函数体的执行部分由begin开头,end结束,中间有若干用分号
例、输入 x的值,计算y。已知
sh(1+shx) y=
sh2x+sh3x
其中sh是双曲正弦函数,题中要四次调 用这个函数,可以将它定义成一个函数。
et-e-t
已知计算双曲正弦的公式为 sh(t) =
2
双曲正弦函数为:
function sh(t:real):real; begin sh:=(exp(t)-exp(-t))/2; end;
在一个程序中可以只有主程序而没有子程序(本章以前都是如 此),但不能没有主程序,也就是说不能单独执行子程序。pascal中 子程序有两种形式:函数和过程。
一、函数
在此之前,我们曾经介绍并使用了pascal提供的各种标准函数, 如ABS,SUCC等等,这些函数为我们编写程序提供了很大的方便。但 这些函数只是常用的基本函数,编程时经常需要自己定义一些函数。
end;
begin
read(x);
y:=sh(1+sh(x))/(sh(2*x)+sh(3*x));
writeln(y);
end.
3、形参与实参 形参:全称为“形式参数”是在定义函数名和函数体的时候使用的
参数,目的是用来接收调用该函数时传递的参数.
实参:全称为“实际参数”是在调用时传递给该函数的参数
所以形参即函数的自变量。自变量的初值来源于函数调用,即 实参。
在函数中,形参一般格式如下:
变量名表1:类型标识符1;变量名表2:类型标识符2;…;变量名表n:类型标识符n
(x,y : integer ; z : real ; a : char)
例、求五边形的面积。边长L1—L7由键盘读入。
L2
s1
隔开的 语句,只是end后应跟分号,不能像程序那样用句号“.”。
⑨在函数体的执行部分,至少应该给函数名赋一次值,以使在函
数执行 结束后把函数值带回调用程序。
2、函数的调用 函数在语法上相当于一个表达式,所以,调用时,函数不能独立
成为一个语句;它可以出现在任何表达式可以出现的地方。
例如赋值语句的右边: X:=函数名(实在参数表);
例:求正整数A和B之间的完全数(A<B). 分析:所谓完全数是指它的小于该数本身的因子之和等于它本
身,如6=1+2+3,6即是一个完全数。因此我们可定义一个布尔型 函数perfect(x),若x是完全数,其值为TURE,否则为FALSE。
1、函数的定义 在pascal中,函数也遵循先说明后使用的规则,在程序中,函数
的说明放在主程序的说明部分。函数的结构与主程序的结构很相似。
function 函数名(形参表):函数类型; var begin ... ... 函数名:=表达式 end;
{ 函数首部} {局部变量说明部分}
{函数体} {函数语句}
program area; var l1,l2,l3,l4,l5,l6,l7,s:real; function ts(a,b,c:real):real; var p:real; begin p:=(a+b+c)/2; ts:=sqrt(p*(p-a)*(p-b)*(p-c)); end; begin read(l1,l2,l3,l4,l5,l6,l7); s:=ts(l1,l2,l6)+ts(l3,l6,l7)+ts(l4,l5,l7); writeln(‘area=’,s);
优选函数与过程
子程序的使用不仅缩短了程序,节省了内存空间及减少了程 序的编译时间,而且有利于结构化程序设计。因为一个复杂的问 题总可将其分解成若干个子问题来解决,如果子问题依然很复杂, 还可以将它继续分解,直到每个子问题都是一个具有独立任务的 模块。这样编制的程序结构清晰,逻辑关系明确,无论是编写、 阅读、调试还是修改,都会带来极大的好处