函数与过程201009.ppt

上传人:qwe****56 文档编号:65289862 上传时间:2022-12-04 格式:PPT 页数:25 大小:122KB
返回 下载 相关 举报
函数与过程201009.ppt_第1页
第1页 / 共25页
函数与过程201009.ppt_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《函数与过程201009.ppt》由会员分享,可在线阅读,更多相关《函数与过程201009.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、函数与过程函数与过程四会中学 徐琴 2010-09在结构化程序设计中,不但要求程序要采用顺序、分支在结构化程序设计中,不但要求程序要采用顺序、分支在结构化程序设计中,不但要求程序要采用顺序、分支在结构化程序设计中,不但要求程序要采用顺序、分支和循环这几种基本结构,同时,在整个程序设计过程中,和循环这几种基本结构,同时,在整个程序设计过程中,和循环这几种基本结构,同时,在整个程序设计过程中,和循环这几种基本结构,同时,在整个程序设计过程中,要求程序具有模块化,这样,子程序设计的显得非常有要求程序具有模块化,这样,子程序设计的显得非常有要求程序具有模块化,这样,子程序设计的显得非常有要求程序具有模

2、块化,这样,子程序设计的显得非常有必要。必要。必要。必要。n n1.细化算法的过程,可以将每一个子问题运用一段细化算法的过程,可以将每一个子问题运用一段相对独立的小程序来解决;相对独立的小程序来解决;n n2.一些具有相同或功能相似的程序段在程序中的不一些具有相同或功能相似的程序段在程序中的不同位置反复出现,可以将这样的程序段做成一个同位置反复出现,可以将这样的程序段做成一个整体,用一个标识符给它起一个名字,凡是需要整体,用一个标识符给它起一个名字,凡是需要这个程序段的地方只要简单地引用其标识符即可。这个程序段的地方只要简单地引用其标识符即可。n n3.子程序包括过程和函数两种形式。子程序包括

3、过程和函数两种形式。一个程序就由一个主程序和一些子程一个程序就由一个主程序和一些子程序(也叫模块)组成。这样一来主程序序(也叫模块)组成。这样一来主程序的功能就变成了组织功能,什么时候需的功能就变成了组织功能,什么时候需要某一个功能就可以让子程序去做,当要某一个功能就可以让子程序去做,当然子程序也是你设计的,这样做的好处然子程序也是你设计的,这样做的好处是为了便于编写和理解,特别是在大型是为了便于编写和理解,特别是在大型的程序一般都由几百个子程序。的程序一般都由几百个子程序。主程序主程序登录子程序登录子程序计算子程序计算子程序输出子程序输出子程序一、函数和过程一、函数和过程使用函数和过程有四个

4、方面要清楚使用函数和过程有四个方面要清楚:一是如何定义。一是如何定义。二是在哪里定义(在哪里编写代码)。二是在哪里定义(在哪里编写代码)。三是如何调用。三是如何调用。四是如何向传递参数。四是如何向传递参数。一、标准过程和标准函数一、标准过程和标准函数 由由Pascal定义的过程和函数。如我们定义的过程和函数。如我们熟悉的熟悉的read,write等为标准过程;等为标准过程;ord,chr等为标准函数,程序员编程时直等为标准函数,程序员编程时直接引用就行了。接引用就行了。一.函数与过程的关系和区别常用的标准函数常用的标准函数:sqrt(xsqrt(x),),sqr(xsqr(x),),abs(x

5、abs(x),),exp(xexp(x)在程序设计中,怎样使用他们?在程序设计中,怎样使用他们?不用定义,直接使用(不用定义,直接使用(pascalpascal编译程序中集成了编译程序中集成了上述函数)。上述函数)。一.函数与过程的关系和区别有返回值,因此在程序设计中不能作为一个单独有返回值,因此在程序设计中不能作为一个单独的语句来使用(只能成为的语句来使用(只能成为表达式的一部分表达式的一部分)y:=sqrt(x);/rightsqr(x);/errorread(a,b,c);/right过程过程 vs vs 函数函数区别:有且只有一个返回值(函数);区别:有且只有一个返回值(函数);无返回

6、值(过程);无返回值(过程);函数的定义格式函数的定义格式Function 函数名(函数名():):该函数该函数返回值的类型返回值的类型例如:例如:w:=upcase(ch);y:=sqrt(x);二、自定义过程和函数二、自定义过程和函数 由程序员在程序中定义后再使用。给某个语句序由程序员在程序中定义后再使用。给某个语句序列组成的子程序赋于一个适当的名字。程序中凡是列组成的子程序赋于一个适当的名字。程序中凡是需要出现这个语句序列的地方,可以简单的写上子需要出现这个语句序列的地方,可以简单的写上子程序的名字。这种完成一个操作的子程序称为过程。程序的名字。这种完成一个操作的子程序称为过程。子程序的

7、定义称为过程说明。子程序的定义称为过程说明。如果一个子程序执行后能够返回其结果值,那么如果一个子程序执行后能够返回其结果值,那么它就可以用于表达式中,称这种子程序为函数,这它就可以用于表达式中,称这种子程序为函数,这种语句序列的定义称为函数说明。种语句序列的定义称为函数说明。一、过程一、过程使用过程有四个方面要清楚使用过程有四个方面要清楚:一是如何定义过程。一是如何定义过程。二是在哪里定义(在哪里编写代码)。二是在哪里定义(在哪里编写代码)。三是如何调用过程。三是如何调用过程。四是如何向过程传递参数。四是如何向过程传递参数。三、函数和过程说明三、函数和过程说明 FunctionFunction

8、函数名函数名函数名函数名(形式参数形式参数形式参数形式参数表表表表):):函数函数函数函数类类类类型;型;型;型;说说说说明部分;明部分;明部分;明部分;beginbegin语语语语句句句句1;1;语语语语句句句句2;2;语语语语句句句句n n;函数名函数名函数名函数名:=:=表达式表达式表达式表达式 给该给该给该给该函数函数函数函数赋赋赋赋返回返回返回返回值值值值 endend;ProcedureProcedure过过过过程名程名程名程名(形形形形式式式式参数参数参数参数表表表表););说说说说明部分明部分明部分明部分;beginbegin语语语语句句句句1;1;语语语语句句句句2;2;语语

9、语语句句句句3;3;语语语语句句句句n n;end;end;四、函数和过程的调用四、函数和过程的调用 1)1)1)1)函数调用函数调用函数调用函数调用 函数在语法上相当于一个表达式,所以,调用时,函函数在语法上相当于一个表达式,所以,调用时,函函数在语法上相当于一个表达式,所以,调用时,函函数在语法上相当于一个表达式,所以,调用时,函数不能独立成为一个语句;它只能出现在表达式可以出数不能独立成为一个语句;它只能出现在表达式可以出数不能独立成为一个语句;它只能出现在表达式可以出数不能独立成为一个语句;它只能出现在表达式可以出现的地方。如下形式:现的地方。如下形式:现的地方。如下形式:现的地方。如

10、下形式:X:=X:=X:=X:=函数名函数名函数名函数名(实在参数表实在参数表实在参数表实在参数表);X);X);X);X的类型与函数类型必须一的类型与函数类型必须一的类型与函数类型必须一的类型与函数类型必须一致致致致 如果函数类型是如果函数类型是如果函数类型是如果函数类型是booleanbooleanbooleanboolean,则还可以出现在条件语句中,则还可以出现在条件语句中,则还可以出现在条件语句中,则还可以出现在条件语句中,充当条件表达式:充当条件表达式:充当条件表达式:充当条件表达式:if if if if 函数名函数名函数名函数名(实在参数表实在参数表实在参数表实在参数表)the

11、n)then)then)then 2)2)2)2)过程调用过程调用过程调用过程调用 过程在语法上相当于一个语句,在调用时,直接写下过程在语法上相当于一个语句,在调用时,直接写下过程在语法上相当于一个语句,在调用时,直接写下过程在语法上相当于一个语句,在调用时,直接写下过程名即可:过程名即可:过程名即可:过程名即可:过程名过程名过程名过程名(实在参数表实在参数表实在参数表实在参数表););););五、形参和实参五、形参和实参 子程序调用子程序调用子程序调用子程序调用(过程调用或函数调用过程调用或函数调用过程调用或函数调用过程调用或函数调用)的执行顺序分为以的执行顺序分为以的执行顺序分为以的执行顺

12、序分为以下几步:下几步:下几步:下几步:实参和形参结合实参和形参结合实参和形参结合实参和形参结合 执行子程序执行子程序执行子程序执行子程序 返回调用返回调用返回调用返回调用 处继续执行处继续执行处继续执行处继续执行 子程序说明的形式参数表对子程序体直接引用的子程序说明的形式参数表对子程序体直接引用的子程序说明的形式参数表对子程序体直接引用的子程序说明的形式参数表对子程序体直接引用的变量进行说明,详细指明这些参数的类别、数据类型变量进行说明,详细指明这些参数的类别、数据类型变量进行说明,详细指明这些参数的类别、数据类型变量进行说明,详细指明这些参数的类别、数据类型要求和参数的个数。子程序被调用时

13、必须为它的每个要求和参数的个数。子程序被调用时必须为它的每个要求和参数的个数。子程序被调用时必须为它的每个要求和参数的个数。子程序被调用时必须为它的每个形参提供一个实参,按参数的位置顺序一一对应,每形参提供一个实参,按参数的位置顺序一一对应,每形参提供一个实参,按参数的位置顺序一一对应,每形参提供一个实参,按参数的位置顺序一一对应,每个实参必须满足对应形参的要求。个实参必须满足对应形参的要求。个实参必须满足对应形参的要求。个实参必须满足对应形参的要求。Turbo PascalTurbo Pascal在处理数据传送时有两种方法:一种是在处理数据传送时有两种方法:一种是在处理数据传送时有两种方法:

14、一种是在处理数据传送时有两种方法:一种是传值,称为值参数;另一种是传地址,称为变量参数传值,称为值参数;另一种是传地址,称为变量参数传值,称为值参数;另一种是传地址,称为变量参数传值,称为值参数;另一种是传地址,称为变量参数1 1值参数值参数值参数值参数 例例例例 计算计算计算计算|X|X|的函数的函数的函数的函数function function abs(x:real):realabs(x:real):real;varvar z:realz:real;beginbegin if x=0 then z:=x else z:=-x if x=0 then z:=x else z:=-x abs:

15、=z;abs:=z;end;end;2变量参数变量参数 在子程序执行过程中,对变量参数的操作,相当于在子程序执行过程中,对变量参数的操作,相当于在子程序执行过程中,对变量参数的操作,相当于在子程序执行过程中,对变量参数的操作,相当于对引用实参的操作。对引用实参的操作。对引用实参的操作。对引用实参的操作。例例例例 求出两个数中最大值的过程求出两个数中最大值的过程求出两个数中最大值的过程求出两个数中最大值的过程procedure procedure largest(a,b:integer;varlargest(a,b:integer;var c:integerc:integer););a,ba,b

16、为值参数为值参数为值参数为值参数;c;c为变量参数为变量参数为变量参数为变量参数 beginbegin if ab then c:=a if ab then c:=a else c:=b;else c:=b;end.end.3无参过程无参过程 例例例例 无参过程,例如模拟无参过程,例如模拟无参过程,例如模拟无参过程,例如模拟TABTABTABTAB键,在屏幕上跳键,在屏幕上跳键,在屏幕上跳键,在屏幕上跳8 8 8 8个空个空个空个空格位置的过程。格位置的过程。格位置的过程。格位置的过程。procedure tab;procedure tab;procedure tab;procedure ta

17、b;varvarvarvar I:integerI:integerI:integerI:integer;beginbeginbeginbegin For I:=1 to 8 do For I:=1 to 8 do For I:=1 to 8 do For I:=1 to 8 do write(write(write(write(););););End;End;End;End;全程变量与局部变量全程变量与局部变量n n全程变量全程变量:主程序中说明部分说明的变量主程序中说明部分说明的变量 它的作用域是整个程序它的作用域是整个程序.n n局部变量局部变量:在过程或函数的说明部分说明的在过程或函数的

18、说明部分说明的 变量变量,它的作用域是本过程或函数它的作用域是本过程或函数n n小提示小提示:n n1.pascal1.pascal语言的规则语言的规则:先说明后使用先说明后使用n n2.2.过程或函数中有形式参数也是局部变量过程或函数中有形式参数也是局部变量n nVarVar x,y:integerx,y:integer;n n procedure p(procedure p(varvar x:integerx:integer;y:integery:integer););n n Begin Beginn n y:=y:=x+yx+y;x:=y mod 4;x:=y mod 4;n n wri

19、te(x:6,y:6);write(x:6,y:6);n n end;end;n nBeginBeginn n x:=4;y:=5;x:=4;y:=5;n n p(y,xp(y,x);writeln(x:6,y:6););writeln(x:6,y:6);n n p(x,xp(x,x);writeln(x:6,y:6););writeln(x:6,y:6);n n p(y,xp(y,x);writeln(x:6,y:6););writeln(x:6,y:6);n n readlnreadln;n n end.end.练习:四会中学练习:四会中学126页练一练页练一练函数的结果是一个具体的值函数

20、的结果是一个具体的值,在函数体中必须将在函数体中必须将所得到的运算结果赋给函数名;主程序通过调用函所得到的运算结果赋给函数名;主程序通过调用函数得到函数的运算结果。调用函数的一般格式为数得到函数的运算结果。调用函数的一般格式为:函数名函数名 (实在参数表实在参数表)调用函数时调用函数时,函数名后面圆括号内的参数必须有函数名后面圆括号内的参数必须有确定的值确定的值,称为实在参数。调用时即把这些实际值称为实在参数。调用时即把这些实际值传送给函数形参表中的相应形参变量。函数不是单传送给函数形参表中的相应形参变量。函数不是单独的语句独的语句,只能作为运算赋值或出现在表达式中。只能作为运算赋值或出现在表

21、达式中。n n例:编程找出由键盘任意输入五个整数中的最大整数。例:编程找出由键盘任意输入五个整数中的最大整数。例:编程找出由键盘任意输入五个整数中的最大整数。例:编程找出由键盘任意输入五个整数中的最大整数。n n解解解解:设输入的五个整数为设输入的五个整数为设输入的五个整数为设输入的五个整数为n1n1n1n1、n2n2n2n2、n3n3n3n3、n4n4n4n4、n5n5n5n5,为了便为了便为了便为了便于处理,引入一个中间变量于处理,引入一个中间变量于处理,引入一个中间变量于处理,引入一个中间变量t1t1t1t1,按如下步骤处理:按如下步骤处理:按如下步骤处理:按如下步骤处理:n n令令令令

22、t1=n1;t1=n1;t1=n1;t1=n1;n n将将将将t1t1t1t1与与与与n2n2n2n2比较,将两者中较大的数放入比较,将两者中较大的数放入比较,将两者中较大的数放入比较,将两者中较大的数放入t1t1t1t1;n n将将将将t1t1t1t1与与与与n3n3n3n3比较,将两者中较大的数放入比较,将两者中较大的数放入比较,将两者中较大的数放入比较,将两者中较大的数放入t1t1t1t1;n n将将将将t1t1t1t1与与与与n4n4n4n4比较,将两者中较大的数放入比较,将两者中较大的数放入比较,将两者中较大的数放入比较,将两者中较大的数放入t1t1t1t1;n n将将将将t1t1t

23、1t1与与与与n5n5n5n5比较,将两者中较大的数放入比较,将两者中较大的数放入比较,将两者中较大的数放入比较,将两者中较大的数放入t1t1t1t1;n n经过以上经过以上经过以上经过以上5 5 5 5步处理后,步处理后,步处理后,步处理后,t1t1t1t1即为即为即为即为5 5 5 5个数中最大者。个数中最大者。个数中最大者。个数中最大者。n n从上面规划的步骤看来,从步骤从上面规划的步骤看来,从步骤从上面规划的步骤看来,从步骤从上面规划的步骤看来,从步骤到步骤到步骤到步骤到步骤需处理的目需处理的目需处理的目需处理的目标是相同的,因此我们可以设计一段子程序标是相同的,因此我们可以设计一段子

24、程序标是相同的,因此我们可以设计一段子程序标是相同的,因此我们可以设计一段子程序Max(x1,x2)Max(x1,x2)Max(x1,x2)Max(x1,x2),以找出以找出以找出以找出x1x1x1x1和和和和x2x2x2x2中最大的值并返回。中最大的值并返回。中最大的值并返回。中最大的值并返回。VarVar n1,n2,n3,n4,n5,t1:integer;n1,n2,n3,n4,n5,t1:integer;Function max(x1,x2:integer):integer;Function max(x1,x2:integer):integer;Begin If x1x2 then M

25、ax:=x1Begin If x1x2 then Max:=x1 Else Max:=x2;Else Max:=x2;End;End;BeginBeginReadln(n1,n2,n3,n4,n5);Readln(n1,n2,n3,n4,n5);T1:=n1;T1:=n1;T1:=Max(t1,n2);T1:=Max(t1,n2);T1:=Max(t1,n3);T1:=Max(t1,n3);T1:=Max(t1,n4);T1:=Max(t1,n4);T1:=Max(t1,n5);T1:=Max(t1,n5);Writeln(Writeln(MaxMax number:number:,t1);,

26、t1);End.End.例例4.24.2求任意输入的五个自然数的最大公约数。求任意输入的五个自然数的最大公约数。解解:自定义一个专门求两自然数的最大公约数的函自定义一个专门求两自然数的最大公约数的函数数GCD;GCD;调用自定义函数调用自定义函数,第一次求前两个数的最大公第一次求前两个数的最大公约数约数;从第二次开始从第二次开始,用每次求得的最大公约数与下一用每次求得的最大公约数与下一个数再求两个数最大公约数个数再求两个数最大公约数,直到最后。本题共四次直到最后。本题共四次“求两个数的最大公约数求两个数的最大公约数”,设输入的五个自然数分别设输入的五个自然数分别是是a1,a2,a3,a4,a5

27、,a1,a2,a3,a4,a5,采用如下步骤:采用如下步骤:求求a1,a2a1,a2两个数的最大公约数两个数的最大公约数 存入存入a1a1;求求a1,a3a1,a3两个数的最大公约数两个数的最大公约数 存入存入a1a1;求求a1,a4a1,a4两个数的最大公约数两个数的最大公约数 存入存入a1a1;求求a1,a5a1,a5两个数的最大公约数两个数的最大公约数 存入存入a1a1;输出输出 a1a1,此时的此时的a1a1已是五个数的最大公约数已是五个数的最大公约数VarVar a1,a2,a3,a4,a5:integer;a1,a2,a3,a4,a5:integer;function GCD(x,

28、y:integer):integer;function GCD(x,y:integer):integer;VarVar n:integer;n:integer;beginbegin While x mod y While x mod y 0 do0 do begin begin n:=x;x:=y;y:=n mod yn:=x;x:=y;y:=n mod y;end;end;GCD:=y GCD:=yend;end;BeginBegin readln(a1,a2,a3,a4,a5);readln(a1,a2,a3,a4,a5);Write(,a1,a2,a3,a4,a5,)=);Write(,

29、a1,a2,a3,a4,a5,)=);a1:a1:GCD(a1,a2);GCD(a1,a2);调用函数调用函数GCD GCD a1:a1:GCD(a1,a3);a1:GCD(a1,a3);a1:GCD(a1,a4);GCD(a1,a4);a1:a1:GCD(a1,a5);Writeln(a1);GCD(a1,a5);Writeln(a1);readlnreadln;End.End.思考与练习:思考与练习:1、编程求出一整数编程求出一整数N的所有质因数的所有质因数。分析:可以求出分析:可以求出分析:可以求出分析:可以求出NN的所有的因数,然后判断每一个的所有的因数,然后判断每一个的所有的因数,然

30、后判断每一个的所有的因数,然后判断每一个 因数是否为质因数。因数是否为质因数。因数是否为质因数。因数是否为质因数。VarVar i,ni,n:integer;:integer;function is_prime(m:integer):Boolean;function is_prime(m:integer):Boolean;varvar I:integerI:integer;Ok:BooleanOk:Boolean;begin begin ok:=true;ok:=true;for I:=2 to for I:=2 to trunc(sqrt(mtrunc(sqrt(m)do)do if m m

31、od I=0 then if m mod I=0 then begin ok:=false;break;end;begin ok:=false;break;end;is_primeis_prime:=ok:=ok end;end;beginbegin write(nwrite(n=);=);readln(nreadln(n););for i:=2 to n do for i:=2 to n do if n mod i=0 then if n mod i=0 then if if is_prime(iis_prime(i)then write(i:5);)then write(i:5);writelnwritelnend.end.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁