NOIP初赛资料——过程和函数.ppt





《NOIP初赛资料——过程和函数.ppt》由会员分享,可在线阅读,更多相关《NOIP初赛资料——过程和函数.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程序设计程序设计程序设计程序设计P Pascalascalascalascal过程与函数过程与函数程序设计程序设计程序设计程序设计P Pascalascalascalascal过程和函数过程和函数程程程程 序序序序 的基本的基本的基本的基本结构结构结构结构顺序结构顺序结构顺序结构顺序结构选择结构选择结构选择结构选择结构循环结构循环结构循环结构循环结构过程和函数过程和函数过程和函数过程和函数说明:说明:程序中可以只有主程序而没有子程序,但不程序中可以只有主程序而没有子程序,但不能没有主程序,也就是说不能单独执行子程序。能没有主程序,也就是说不能单独执行子程序。程程序序设设计计程程序序设设计计的的
2、基基本本思思的的基基本本思思想想:想想:自顶自顶自顶自顶向下、逐步求精向下、逐步求精向下、逐步求精向下、逐步求精程序的模块化程序的模块化程序的模块化程序的模块化程序设计程序设计程序设计程序设计P Pascalascalascalascal标准函数有:标准函数有:标准函数的调用标准函数的调用X:=abs(-10);X:=abs(-10);Y:=sqrt(81);Y:=sqrt(81);Z:=round(35.9);Z:=round(35.9);abs(x)/sqrt(x)/round(x)程序设计程序设计程序设计程序设计P Pascalascalascalascal例例1-11-1:编程求:编程
3、求1 12 22 22 21001002 2 的和的和PROGRAMsum(input,output);VARi:integer;s:longint;BEGINs:=0;fori:=1to100dos:=s+sqr(i);writeln(s=,s);END.例例1_21_2:编程求:编程求1 1!2 2!3 3!1010!的和。!的和。fac(i)程序设计程序设计程序设计程序设计P Pascalascalascalascal一、函数的定义及调用一、函数的定义及调用一、函数的定义及调用一、函数的定义及调用Function Function 函数名函数名函数名函数名(形参表):函数类型;形参表):
4、函数类型;形参表):函数类型;形参表):函数类型;局部变量说明;局部变量说明;局部变量说明;局部变量说明;beginbegin 语句语句语句语句1 1;;函数名:函数名:函数名:函数名:=表达式;表达式;表达式;表达式;end;end;函数首部函数首部函数首部函数首部函数体函数体函数体函数体将函数值传递给函数名将函数值传递给函数名将函数值传递给函数名将函数值传递给函数名函数的类型函数的类型函数的类型函数的类型在表达式中调用:函数名(实参)在表达式中调用:函数名(实参)在表达式中调用:函数名(实参)在表达式中调用:函数名(实参)如:如:如:如:x=Abs(n)absx=Abs(n)abs为函数名
5、,为函数名,为函数名,为函数名,n n为实参,函数类型为为实参,函数类型为为实参,函数类型为为实参,函数类型为integer or integer or realreal注意:自定义函数先定义后使用。注意:自定义函数先定义后使用。函数值通过函数名函数值通过函数名函数值通过函数名函数值通过函数名传送回调用程序。传送回调用程序。传送回调用程序。传送回调用程序。程序设计程序设计程序设计程序设计P Pascalascalascalascal例例例例1-2 1-2 1-2 1-2 编写一个求编写一个求编写一个求编写一个求n!n!n!n!的函数的函数的函数的函数fac.fac.fac.fac.functi
6、on function fac(n:integer):longintfac(n:integer):longint;varvar k:integer;k:integer;t:longintt:longint;begin begin t:=1;t:=1;for k:=2 to n do for k:=2 to n do t:=t*k;t:=t*k;facfac:=t;:=t;end;end;endfacendfac 函函函函数数数数说说说说明明明明函数首部函数首部函数首部函数首部局部变量说明局部变量说明局部变量说明局部变量说明形式参数形式参数形式参数形式参数函数执行部分函数执行部分函数执行部分函数
7、执行部分将将将将函数值传递到函数名中函数值传递到函数名中函数值传递到函数名中函数值传递到函数名中函数的结果类型函数的结果类型函数的结果类型函数的结果类型程序设计程序设计程序设计程序设计P Pascalascalascalascal注注 意意:1 1 1 1、使用函数前应先说明。、使用函数前应先说明。、使用函数前应先说明。、使用函数前应先说明。3 3 3 3、形参就是函数的自变量,其初值来源于主程序的调用,只有、形参就是函数的自变量,其初值来源于主程序的调用,只有、形参就是函数的自变量,其初值来源于主程序的调用,只有、形参就是函数的自变量,其初值来源于主程序的调用,只有在程序的执行过程中调用了函
8、数,形参才能得到具体的值并参与在程序的执行过程中调用了函数,形参才能得到具体的值并参与在程序的执行过程中调用了函数,形参才能得到具体的值并参与在程序的执行过程中调用了函数,形参才能得到具体的值并参与运算,得到函数值。注意:形参表类似于变量说明,但只能使用运算,得到函数值。注意:形参表类似于变量说明,但只能使用运算,得到函数值。注意:形参表类似于变量说明,但只能使用运算,得到函数值。注意:形参表类似于变量说明,但只能使用类型标识符,且不能直接使用类型。形参可缺省。类型标识符,且不能直接使用类型。形参可缺省。类型标识符,且不能直接使用类型。形参可缺省。类型标识符,且不能直接使用类型。形参可缺省。4
9、 4 4 4、函数的类型也就是函数值的类型,函数值将通过函数名传送、函数的类型也就是函数值的类型,函数值将通过函数名传送、函数的类型也就是函数值的类型,函数值将通过函数名传送、函数的类型也就是函数值的类型,函数值将通过函数名传送回调用程序。回调用程序。回调用程序。回调用程序。5 5 5 5、函数体内所用的类型、常量、变量等只在本函数内有效,退出、函数体内所用的类型、常量、变量等只在本函数内有效,退出、函数体内所用的类型、常量、变量等只在本函数内有效,退出、函数体内所用的类型、常量、变量等只在本函数内有效,退出函数体后,分配的存储单元被释放。这些量与函数体外的同名变函数体后,分配的存储单元被释放
10、。这些量与函数体外的同名变函数体后,分配的存储单元被释放。这些量与函数体外的同名变函数体后,分配的存储单元被释放。这些量与函数体外的同名变量无关。量无关。量无关。量无关。6 6 6 6、在函数体中至少有一条将函数值传给函数名的赋值语句。、在函数体中至少有一条将函数值传给函数名的赋值语句。、在函数体中至少有一条将函数值传给函数名的赋值语句。、在函数体中至少有一条将函数值传给函数名的赋值语句。2 2 2 2、函数首部以保留字、函数首部以保留字、函数首部以保留字、函数首部以保留字functionfunctionfunctionfunction开头,函数名由用户自定义的开头,函数名由用户自定义的开头,
11、函数名由用户自定义的开头,函数名由用户自定义的一个标识符,用来存放最终函数值。一个标识符,用来存放最终函数值。一个标识符,用来存放最终函数值。一个标识符,用来存放最终函数值。程序设计程序设计程序设计程序设计P Pascalascalascalascalbeginbegin S:=fac(3)+fac(5)+fac(7);S:=fac(3)+fac(5)+fac(7);Writeln(sWriteln(s=,s)=,s)End.End.例例例例7-1 7-1 编写一个求编写一个求编写一个求编写一个求n!n!的函数的函数的函数的函数fac.fac.function function fac(n:i
12、nteger):longintfac(n:integer):longint;varvar k:integer;k:integer;t:longintt:longint;begin begin t:=1;t:=1;for k:=2 to n do for k:=2 to n do t:=t*k;t:=t*k;facfac:=t;:=t;end;end;endfacendfac 函函函函数数数数说说说说明明明明函数首部函数首部函数首部函数首部局部变量说明局部变量说明局部变量说明局部变量说明形式参数形式参数形式参数形式参数函数执行部分函数执行部分函数执行部分函数执行部分将将将将函数值传递到函数名中函
13、数值传递到函数名中函数值传递到函数名中函数值传递到函数名中Program ex1-2a(input,output);Program ex1-2a(input,output);varvar s:longints:longint;主主主主程程程程序序序序函数调用出现在表达式中函数调用出现在表达式中函数调用出现在表达式中函数调用出现在表达式中若求若求若求若求3 3!+5+5!+7+7!的值,如何修改程序?!的值,如何修改程序?!的值,如何修改程序?!的值,如何修改程序?程序设计程序设计程序设计程序设计P Pascalascalascalascal调调 用用 函函 数数 时时 注注 意意:调调 用用
14、函函 数数 时时 注注 意意:1 1 1 1、自定义函数中的形参,不是实际存在的变量,故又称为虚拟、自定义函数中的形参,不是实际存在的变量,故又称为虚拟、自定义函数中的形参,不是实际存在的变量,故又称为虚拟、自定义函数中的形参,不是实际存在的变量,故又称为虚拟变量,它们并不占用内存单元,只是在调用函数时,才临时开变量,它们并不占用内存单元,只是在调用函数时,才临时开变量,它们并不占用内存单元,只是在调用函数时,才临时开变量,它们并不占用内存单元,只是在调用函数时,才临时开辟相应的内存单元,存放实在参数的值,如辟相应的内存单元,存放实在参数的值,如辟相应的内存单元,存放实在参数的值,如辟相应的内
15、存单元,存放实在参数的值,如fac(3)fac(3)fac(3)fac(3)中的中的中的中的3 3 3 3。它是。它是。它是。它是在调用函数时的所用的自变量。形参实质上是实参的一个在调用函数时的所用的自变量。形参实质上是实参的一个在调用函数时的所用的自变量。形参实质上是实参的一个在调用函数时的所用的自变量。形参实质上是实参的一个“替替替替身身身身”。在调用函数时,实参将值赋给形参,因此实参的个数、。在调用函数时,实参将值赋给形参,因此实参的个数、。在调用函数时,实参将值赋给形参,因此实参的个数、。在调用函数时,实参将值赋给形参,因此实参的个数、类型应与形参一一对应,并且要有确定的值。类型应与形
16、参一一对应,并且要有确定的值。类型应与形参一一对应,并且要有确定的值。类型应与形参一一对应,并且要有确定的值。2 2 2 2、函数调用步骤是:首先在调用程序中计算实参的值,传送、函数调用步骤是:首先在调用程序中计算实参的值,传送、函数调用步骤是:首先在调用程序中计算实参的值,传送、函数调用步骤是:首先在调用程序中计算实参的值,传送给对应的形参,接着执行函数体,最后将函数值返回给调用程给对应的形参,接着执行函数体,最后将函数值返回给调用程给对应的形参,接着执行函数体,最后将函数值返回给调用程给对应的形参,接着执行函数体,最后将函数值返回给调用程序。序。序。序。3 3 3 3、函数的定义是静态的,
17、若定义后未被调用,则该函数永远、函数的定义是静态的,若定义后未被调用,则该函数永远、函数的定义是静态的,若定义后未被调用,则该函数永远、函数的定义是静态的,若定义后未被调用,则该函数永远不会被执行。不会被执行。不会被执行。不会被执行。程序设计程序设计程序设计程序设计P Pascalascalascalascal例例例例1-3 1-3 1-3 1-3 计算如图所示的多边形面积。计算如图所示的多边形面积。计算如图所示的多边形面积。计算如图所示的多边形面积。function area(a,b,c:real):function area(a,b,c:real):realreal;varvar p:re
18、al;p:real;begin begin p:=(a+b+c)/2;p:=(a+b+c)/2;area:=area:=sqrt(psqrt(p*(p-a)*(p-b)*(p-c);*(p-a)*(p-b)*(p-c);end;end;用海伦用海伦用海伦用海伦公式求三角形的面积:公式求三角形的面积:公式求三角形的面积:公式求三角形的面积:s=p(p-a)(p-b)(p-c)s=p(p-a)(p-b)(p-c)a,b,ca,b,c为三角形的边长,为三角形的边长,为三角形的边长,为三角形的边长,p p为半周长,即为半周长,即为半周长,即为半周长,即p=(a+b+c)/2p=(a+b+c)/2Pro
19、gram ex1-2(input,output);Program ex1-2(input,output);varvar b1,b2,b3,b4,b5,b6,b7,s:real;b1,b2,b3,b4,b5,b6,b7,s:real;BeginBegin readln(b1,b2,b3,b4,b5,b6,b7);readln(b1,b2,b3,b4,b5,b6,b7);s:=area(b1,b5,b6)+area(b2,b6,b7)+area(b3,b4,b7);s:=area(b1,b5,b6)+area(b2,b6,b7)+area(b3,b4,b7);writeln(swriteln(s=
20、,s:10:3);=,s:10:3);End.End.函数首部函数首部函数首部函数首部三个三个三个三个形式参数形式参数形式参数形式参数函数函数函数函数areaarea结果类型为实型结果类型为实型结果类型为实型结果类型为实型给给给给函数名函数名函数名函数名areaarea赋值赋值赋值赋值调用函数调用函数调用函数调用函数分析:分析:分析:分析:b1b1b5b5b6b6b2b2b3b3b4b4b7b7程序设计程序设计程序设计程序设计P Pascalascalascalascal2 2、过程定义及调用、过程定义及调用标准过程有:标准过程有:标准过程有:标准过程有:标准过程调用:标准过程调用:标准过程调
21、用:标准过程调用:read/read/readln/write/writelnreadln/write/writelnRead(a,b,c);Read(a,b,c);自定义过程的格式:自定义过程的格式:自定义过程的格式:自定义过程的格式:Procedure Procedure 过程名过程名过程名过程名(形参表);形参表);形参表);形参表);局部变量说明;局部变量说明;局部变量说明;局部变量说明;beginbegin 语句语句语句语句1 1;语句语句语句语句2 2;end;end;过程首部过程首部过程首部过程首部过程体过程体过程体过程体程序设计程序设计程序设计程序设计P Pascalascal
22、ascalascal将例将例将例将例1-21-21-21-2中中中中n!n!n!n!用过程用过程用过程用过程fa fa fa fa来定义来定义来定义来定义。Procedure fa(n:integer);var k:integer;begin t:=1;for k:=2 to n do t:=t*k;end;t t 在主程序中说明,为全程量。在主程序中说明,为全程量。在主程序中说明,为全程量。在主程序中说明,为全程量。n!n!的结果是如何回传给主程序的?的结果是如何回传给主程序的?的结果是如何回传给主程序的?的结果是如何回传给主程序的?是是是是通过通过通过通过t t带回主程序的。带回主程序的。
23、带回主程序的。带回主程序的。注意:注意:注意:注意:、过程体内所用的类型、常量、变量只在本过程内有效,、过程体内所用的类型、常量、变量只在本过程内有效,、过程体内所用的类型、常量、变量只在本过程内有效,、过程体内所用的类型、常量、变量只在本过程内有效,退出过程体后,该单元被释放。退出过程体后,该单元被释放。退出过程体后,该单元被释放。退出过程体后,该单元被释放。、不能给过程名赋值,过程名不能代表任何数据。、不能给过程名赋值,过程名不能代表任何数据。、不能给过程名赋值,过程名不能代表任何数据。、不能给过程名赋值,过程名不能代表任何数据。思考:思考:n!的结果存放在哪里?的结果存放在哪里?程序设计
24、程序设计程序设计程序设计P Pascalascalascalascal练习:练习:练习:练习:1-3-b 1-3-b 1-3-b 1-3-b 定义一个求三角形面积的过程定义一个求三角形面积的过程定义一个求三角形面积的过程定义一个求三角形面积的过程areaareaareaarea。Procedure area(a,b,c:real;Procedure area(a,b,c:real;Procedure area(a,b,c:real;Procedure area(a,b,c:real;varvarvarvar m:real);m:real);m:real);m:real);varvarvarva
25、r p:real;p:real;p:real;p:real;begin begin begin begin p:=(a+b+c)/2;p:=(a+b+c)/2;p:=(a+b+c)/2;p:=(a+b+c)/2;m:=m:=m:=m:=sqrt(psqrt(psqrt(psqrt(p*(p-a)*(p-b)*(p-c);*(p-a)*(p-b)*(p-c);*(p-a)*(p-b)*(p-c);*(p-a)*(p-b)*(p-c);end;end;end;end;a a a a、b b b b、c c c c、m m m m四个参数四个参数四个参数四个参数,a,a,a,a、b b b b、c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NOIP 初赛 资料 过程 函数

限制150内