过程与函数.ppt
《过程与函数.ppt》由会员分享,可在线阅读,更多相关《过程与函数.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2010年冬令营年冬令营过程与函数过程与函数盐城市初级中学盐城市初级中学 谷爱清谷爱清2010年冬令营年冬令营宿舍纪律和卫生情况2010年冬令营年冬令营文件操作文件操作文件操作文件操作1 1、建立关联、建立关联、建立关联、建立关联 assign(inputassign(input,文件名文件名文件名文件名;assign(outputassign(output,文件名文件名文件名文件名););2 2、打开读文件、打开读文件、打开读文件、打开读文件reset(inputreset(input););打开写文件打开写文件打开写文件打开写文件rewrite(outputrewrite(output);
2、);3 3、关闭文件、关闭文件、关闭文件、关闭文件 close(inputclose(input););close(outputclose(output););eoln行结束函数行结束函数eof文件结束函数文件结束函数2010年冬令营年冬令营1 1、一般用数组实现线性表的顺序存储、一般用数组实现线性表的顺序存储2 2、顺序表的基本运算、顺序表的基本运算(1 1)建立线性表)建立线性表(2 2)求线性表的长度)求线性表的长度(3 3)查找一个元素)查找一个元素(4 4)删除一个元素)删除一个元素(5 5)插入一个元素)插入一个元素2010年冬令营年冬令营过程和函数过程和函数程程程程 序序序序 的
3、基本的基本的基本的基本结构结构结构结构顺序结构顺序结构顺序结构顺序结构选择结构选择结构选择结构选择结构循环结构循环结构循环结构循环结构过程和函数过程和函数过程和函数过程和函数说明:说明:程序中可以只有主程序而没有子程序,但不程序中可以只有主程序而没有子程序,但不能没有主程序,也就是说不能单独执行子程序。能没有主程序,也就是说不能单独执行子程序。程程序序设设计计程程序序设设计计的的基基本本思思的的基基本本思思想想:想想:自顶自顶自顶自顶向下、逐步求精向下、逐步求精向下、逐步求精向下、逐步求精程序的模块化程序的模块化程序的模块化程序的模块化2010年冬令营年冬令营一、函数定义及调用一、函数定义及调
4、用nPascal标准函数标准函数绝对值函数绝对值函数abs(x)如:如:y:=abs(-9)求平方函数求平方函数sqr(x)如:如:y:=sqr(5)求平方根函数求平方根函数sqrt(x)如:如:y:=sqrt(100)函数的一般格式是:函数的一般格式是:函数名(参数函数名(参数1,参数,参数2,)函数的调用形式是:函数的调用形式是:y:=函数名(实在参数表)函数名(实在参数表)2010年冬令营年冬令营Programsum(input,output);vari:integer;s:longint;begin例例1:编程求:编程求1222102 的和。的和。s:=0;fori:=1to10dos
5、:=s+sqr(i);writeln(s=,s);end.2010年冬令营年冬令营Programsum(input,output);vari:integer;s:longint;begin例例1:编程求:编程求1222102 的和。的和。s:=0;fori:=1to10dos:=s+sqr(i);writeln(s=,s);end.例例2 2:编程求:编程求1 1!2 2!1010!的和。!的和。fac(i)2010年冬令营年冬令营编写一个求编写一个求n!n!的函数的函数facfac。(注意注意n n的范围的范围)function function fac(n:integer):longint
6、fac(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;函函函函数数数数体体体体函数首部函数首部函数首部函数首部形式参数形式参数形式参数形式参数将函数值传递到函数名中将函数值传递到函数名中将函数值传递到函数名中将函数值传递到函数名中函数的结果类型函数的结果类型函数的结果类型函数的结果类型2010年冬令营年冬令营函数的格式函数的格式
7、function 函数名函数名(形参表):函数类型;形参表):函数类型;局部变量说明;局部变量说明;begin 语句语句1;;函数名:函数名:=表达式;表达式;end;函数首部函数首部函数首部函数首部函数体函数体函数体函数体将函数值传递给函数名将函数值传递给函数名在表达式中调用:函数名(实在参数表)在表达式中调用:函数名(实在参数表)在表达式中调用:函数名(实在参数表)在表达式中调用:函数名(实在参数表)如:如:如:如:y=y=fac(nfac(n)facfac为函数名,为函数名,为函数名,为函数名,n n为实参,函数类型为为实参,函数类型为为实参,函数类型为为实参,函数类型为longintl
8、ongint函数值通过函函数值通过函函数值通过函函数值通过函数名传送回调数名传送回调数名传送回调数名传送回调用程序。用程序。用程序。用程序。函数的调用函数的调用2010年冬令营年冬令营Programsum(input,output);vari:integer;s:longint;functionfac(n:integer):longint;vark:integer;t:longint;begint:=1;fork:=2tondot:=t*k;fac:=t;end;例例2 2:编程求:编程求1 1!2 2!1010!的和。!的和。注意:注意:自定义函数要自定义函数要先定义,后使用先定义,后使用b
9、egins:=0;fori:=1to10dos:=s+fac(i);writeln(s=,s);end.函数名将求得的函数值带函数名将求得的函数值带函数名将求得的函数值带函数名将求得的函数值带回调用该函数的程序中回调用该函数的程序中回调用该函数的程序中回调用该函数的程序中2010年冬令营年冬令营例例3 3 编写一个求三个数最大值的函数。编写一个求三个数最大值的函数。function max(a,b,c:real):real;var p:real;begin if ab then p:=a else p:=b;if cp then max:=c else max:=p;end;2010年冬令营年
10、冬令营例例4 4 计算如图所示的多边形面积。计算如图所示的多边形面积。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;a,b,c为三角形的边长为三角形的边长p为半周长,即为半周长,即p=(a+b+c)/2Program ex4(input,output);var b1,b2,b3,b4,b5,b6,b7,s:real;beginreadln(b1,b2,b3,b4,b5,b6,b7);s:=area(b1,b5,b6)+area(b2,b6,b7)+a
11、rea(b3,b4,b7);writeln(s=,s:10:3);end.分析:分析:b1b5b6b2b3b4b7用海伦用海伦公式求三角形的面积:公式求三角形的面积:s=p(p-a)(p-b)(p-c)a,b,c:real):real;area:=sqrt(p*(p-a)*(p-b)*(p-c);2010年冬令营年冬令营函数定义时注意:函数定义时注意:2 2、形参值来源于主程序的调用,只有在执行过程中调、形参值来源于主程序的调用,只有在执行过程中调用了函数,形参才得到具体值并参与运算,得到用了函数,形参才得到具体值并参与运算,得到函数值函数值。3 3、在函数体中至少有一条将在函数体中至少有一条
12、将函数值函数值传给函数名的赋值传给函数名的赋值语句。语句。函数的类型就是函数值的类型,函数值通过函函数的类型就是函数值的类型,函数值通过函数名传送回调用程序。数名传送回调用程序。4 4、函数体内定义的类型、常量、变量等只在本函数内有、函数体内定义的类型、常量、变量等只在本函数内有效,退出函数体后,分配的存储单元被释放。这些量与效,退出函数体后,分配的存储单元被释放。这些量与函数体外的同名变量无关。函数体外的同名变量无关。1 1、使用函数前应先说明。函数以、使用函数前应先说明。函数以functionfunction开头,函数开头,函数名由用户自定义一个标识符,用于存放最终函数值。名由用户自定义一
13、个标识符,用于存放最终函数值。function area(a,b,c:real):real;s:=area(3,4,5)2010年冬令营年冬令营调调 用用 函函 数数 时时 注注 意意:1 1、自定义函数中的形参,不是实际存在的变量,不占用、自定义函数中的形参,不是实际存在的变量,不占用内存单元,只在调用函数时,才临时开辟相应的内存单内存单元,只在调用函数时,才临时开辟相应的内存单元,存放实在参数的值元,存放实在参数的值,形参实质上是实参的一个形参实质上是实参的一个“替身替身”。在调用函数时,实参将值赋给形参,因此实参的个。在调用函数时,实参将值赋给形参,因此实参的个数、类型应与形参一一对应,
14、并且要有确定的值。数、类型应与形参一一对应,并且要有确定的值。2 2、函数调用步骤是:首先在调用程序中计算实参的值,、函数调用步骤是:首先在调用程序中计算实参的值,传送给对应的形参,接着执行函数体,最后将函数值返传送给对应的形参,接着执行函数体,最后将函数值返回给调用程序。回给调用程序。3 3、函数的定义是静态的,若定义后未被调用,则该函、函数的定义是静态的,若定义后未被调用,则该函数永远不会被执行。数永远不会被执行。2010年冬令营年冬令营例例5 5 自定义一个专门求两个自然数的最大自定义一个专门求两个自然数的最大公约数的函数公约数的函数GCD;GCD;functionGCD(x,y:int
15、eger):integer;varn:integer;beginwhilexmody0dobeginn:=x;x:=y;y:=nmody;end;GCD:=y;end;Greatestcommondivisor最大公约数最大公约数2010年冬令营年冬令营作业作业1:1:试定义一个函数试定义一个函数dax(chdax(ch),),能将小写能将小写字母转换为大写字母。字母转换为大写字母。例如:例如:dax(adax(a)=A )=A dax(bdax(b)=B)=Bfunctiondax(ch:char):char;beginif(ch=aandch=z)thendax:=chr(ord(ch)-
16、32);end;ASCII码:码:A65a972010年冬令营年冬令营作业作业2 2:定义一个函数定义一个函数 digit(n,k),digit(n,k),它能将整它能将整数数N N从右边数第从右边数第k k位上的数字取出来。位上的数字取出来。例如:例如:digit(12568,4)=2,digit(1436,6)=0digit(12568,4)=2,digit(1436,6)=0。拓展:拓展:1 1、从左边开始的第、从左边开始的第k k位上的数字位上的数字如何取出?如何取出?2 2、从指定的第、从指定的第k k位开始取位开始取m m个数字如何取个数字如何取出?出?2010年冬令营年冬令营在屏
17、幕上输出如图所示的图形。在屏幕上输出如图所示的图形。programexam;vari,j:integer;beginfori:=1to3dobeginwrite(:(39-i);forj:=1to2*i-1dowrite(*);writeln;end;End.*3939列列列列 *2010年冬令营年冬令营三、过程定义及调用三、过程定义及调用标准过程有:标准过程有:标准过程调用:标准过程调用:read/readln/write/writelnread(a,b,c);自定义过程的格式:自定义过程的格式:procedure 过程名过程名(形参表);形参表);局部变量说明;局部变量说明;begin 语
18、句语句1;语句语句2;end;过程首部过程首部过程体过程体2010年冬令营年冬令营过程的作用:过程的作用:可以得到可以得到若干个若干个运算结果;(返回值)运算结果;(返回值)执行一系列的数据处理;执行一系列的数据处理;完成其它与计算无关的操作;完成其它与计算无关的操作;2010年冬令营年冬令营 *在屏幕上输出如图所示的图形。在屏幕上输出如图所示的图形。proceduredraw(n:integer);proceduredraw(n:integer);vari,j:integer;beginfori:=1tondobeginwrite(:(39-i);forj:=1to2*i-1dowrite(
19、*);writeln;end;end;beginmaindraw(3);draw(6);draw(9);fork:=1to5dowriteln(*:39);end.2010年冬令营年冬令营例例6 6:定义一个求三角形面积的过程:定义一个求三角形面积的过程areaarea。procedurearea(a,b,c:real;varm:real);varp:real;beginp:=(a+b+c)/2;m:=sqrt(p*(p-a)*(p-b)*(p-c);end;a a a a、b b b b、c c c c、m m m m四个形式参数四个形式参数四个形式参数四个形式参数,其中其中其中其中a a
20、a a、b b b b、c c c c为值形参,参为值形参,参为值形参,参为值形参,参数数数数m m m m前面有前面有前面有前面有varvarvarvar,是变量形参。该过程被调用后,由是变量形参。该过程被调用后,由是变量形参。该过程被调用后,由是变量形参。该过程被调用后,由变变变变参参参参m m m m将结果传回调用程序将结果传回调用程序将结果传回调用程序将结果传回调用程序。2010年冬令营年冬令营过程定义和调用的注意点:过程定义和调用的注意点:1 1、使用、使用过程前应先定义。以过程前应先定义。以procedureprocedure开开头,头,过程名和函数名一样,由用户自定义,过程名和函
21、数名一样,由用户自定义,所不同的是,过程没有结果类型。所不同的是,过程没有结果类型。2 2、过程的运算结果是通过变参进行传递的。、过程的运算结果是通过变参进行传递的。2010年冬令营年冬令营procedurearea(a,b,c:real;vars1:real);varp:real;beginp:=(a+b+c)/2;s1:=sqrt(p*(p-a)*(p-b)*(p-c);end;b1b1b5b5b6b6b2b2b3b3b4b4b7b7例例7 7 用过程编写程序求如图所示的五边形面积。用过程编写程序求如图所示的五边形面积。三角形的面积通过三角形的面积通过变参变参s1传回主程序。传回主程序。b
22、egin end.sum:=sum+s;readln(b1,b2,b3,b4,b5,b6,b7);sum:=0;area(b1,b5,b6,s);area(b2,b6,b7,s);sum:=sum+s;area(b3,b4,b7,s);sum:=sum+s;writeln(sum=,sum:10:3);2010年冬令营年冬令营函数调用出现在表达式函数调用出现在表达式中中函数值是通过函数名函数值是通过函数名传回调用程序传回调用程序目目 的的为了求一个函数值为了求一个函数值结果类型结果类型无类型,不能给过无类型,不能给过程赋值程赋值函数有类型,最终要将函数有类型,最终要将函数值传送给函数名。函数值
23、传送给函数名。调用方式调用方式由独立的过程调由独立的过程调用语句来完成用语句来完成返回值返回值的方法的方法通过变参将运算的通过变参将运算的结果传给调用程序结果传给调用程序过过程程函函数数函数和过程的主要区别:函数和过程的主要区别:完成一系列的数据完成一系列的数据处理,或与计算无处理,或与计算无关的各种操作关的各种操作2010年冬令营年冬令营四、变量及其作用域四、变量及其作用域例例8看程序写结果看程序写结果programex8(input,output);varm:integer;proceduretest1;beginm:=100;end;beginm:=5;writeln(m=,m);tes
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 过程 函数
限制150内