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

上传人:wuy****n92 文档编号:70797982 上传时间:2023-01-28 格式:PPT 页数:40 大小:374KB
返回 下载 相关 举报
NOIP初赛资料-过程和函数.ppt_第1页
第1页 / 共40页
NOIP初赛资料-过程和函数.ppt_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《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、函数类型;形参表):函数类型;形参表):函数类型;局部变量说明;局部变量说明;局部变量说明;局部变量说明;begin begin 语句语句语句语句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.funct

6、ion fac(n:integer):longint;function fac(n:integer):longint;var var k:integer;k:integer;t:longint;t: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;fac:=t;fac:=t;end;endfac end;endfac 函函函函数数数数说说说说明明明明函数首部函数首部函数首部函数首部局部变量说明局部变量说明局部变量说明局部变量说明形式参数形式参数形式参数形式参数函数执行部分函数执行部分函数执

7、行部分函数执行部分将函数值传递到函数名中将函数值传递到函数名中将函数值传递到函数名中将函数值传递到函数名中函数的结果类型函数的结果类型函数的结果类型函数的结果类型程序设计程序设计程序设计程序设计P Pascalascalascalascal注注 意意:1 1 1 1、使用函数前应先说明。、使用函数前应先说明。、使用函数前应先说明。、使用函数前应先说明。3 3 3 3、形参就是函数的自变量,其初值来源于主程序的调用,只有、形参就是函数的自变量,其初值来源于主程序的调用,只有、形参就是函数的自变量,其初值来源于主程序的调用,只有、形参就是函数的自变量,其初值来源于主程序的调用,只有在程序的执行过程

8、中调用了函数,形参才能得到具体的值并参与在程序的执行过程中调用了函数,形参才能得到具体的值并参与在程序的执行过程中调用了函数,形参才能得到具体的值并参与在程序的执行过程中调用了函数,形参才能得到具体的值并参与运算,得到函数值。注意:形参表类似于变量说明,但只能使用运算,得到函数值。注意:形参表类似于变量说明,但只能使用运算,得到函数值。注意:形参表类似于变量说明,但只能使用运算,得到函数值。注意:形参表类似于变量说明,但只能使用类型标识符,且不能直接使用类型。形参可缺省。类型标识符,且不能直接使用类型。形参可缺省。类型标识符,且不能直接使用类型。形参可缺省。类型标识符,且不能直接使用类型。形参

9、可缺省。4 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(s=,s)Writeln(s=,s)End.End.例例例例7-1 7-1 编写一个求编写一个求编写一个求编写一个求n!n!的函数的函数的函数的函数fac.fac.function fac(n:integ

12、er):longint;function fac(n:integer):longint;var var k:integer;k:integer;t:longint;t: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;fac:=t;fac:=t;end;endfac end;endfac函函函函数数数数说说说说明明明明函数首部函数首部函数首部函数首部局部变量说明局部变量说明局部变量说明局部变量说明形式参数形式参数形式参数形式参数函数执行部分函数执行部分函数执行部分函数执行部分将函数值传递到

13、函数名中将函数值传递到函数名中将函数值传递到函数名中将函数值传递到函数名中Program ex1-2a(input,output);Program ex1-2a(input,output);var var s:longint;s: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;v

18、ar var p:real;p:real;begin begin p:=(a+b+c)/2;p:=(a+b+c)/2;area:=sqrt(p*(p-a)*(p-b)*(p-c);area:=sqrt(p*(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=(

19、a+b+c)/2Program ex1-2(input,output);Program ex1-2(input,output);var var 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

20、(s=,s:10:3);writeln(s=,s:10:3);End.End.函数首部函数首部函数首部函数首部三个形式参数三个形式参数三个形式参数三个形式参数函数函数函数函数areaarea结果类型为实型结果类型为实型结果类型为实型结果类型为实型给函数名给函数名给函数名给函数名areaarea赋值赋值赋值赋值调用函数调用函数调用函数调用函数分析:分析:分析:分析:b1b1b5b5b6b6b2b2b3b3b4b4b7b7程序设计程序设计程序设计程序设计P Pascalascalascalascal2 2、过程定义及调用、过程定义及调用标准过程有:标准过程有:标准过程有:标准过程有:标准过程调用:

21、标准过程调用:标准过程调用:标准过程调用:read/readln/write/writelnread/readln/write/writelnRead(a,b,c);Read(a,b,c);自定义过程的格式:自定义过程的格式:自定义过程的格式:自定义过程的格式:Procedure Procedure 过程名过程名过程名过程名(形参表);形参表);形参表);形参表);局部变量说明;局部变量说明;局部变量说明;局部变量说明;begin begin 语句语句语句语句1 1;语句语句语句语句2 2;end;end;过程首部过程首部过程首部过程首部过程体过程体过程体过程体程序设计程序设计程序设计程序设计

22、P Pascalascalascalascal将例将例将例将例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

23、 t带回主程序的。带回主程序的。带回主程序的。带回主程序的。注意:注意:注意:注意:、过程体内所用的类型、常量、变量只在本过程内有效,、过程体内所用的类型、常量、变量只在本过程内有效,、过程体内所用的类型、常量、变量只在本过程内有效,、过程体内所用的类型、常量、变量只在本过程内有效,退出过程体后,该单元被释放。退出过程体后,该单元被释放。退出过程体后,该单元被释放。退出过程体后,该单元被释放。、不能给过程名赋值,过程名不能代表任何数据。、不能给过程名赋值,过程名不能代表任何数据。、不能给过程名赋值,过程名不能代表任何数据。、不能给过程名赋值,过程名不能代表任何数据。思考:思考:n!的结果存放在

24、哪里?的结果存放在哪里?程序设计程序设计程序设计程序设计P Pascalascalascalascal练习:练习:练习:练习:1-3-b 1-3-b 1-3-b 1-3-b 定义一个求三角形面积的过程定义一个求三角形面积的过程定义一个求三角形面积的过程定义一个求三角形面积的过程areaareaareaarea。Procedure area(a,b,c:real;var m:real);Procedure area(a,b,c:real;var m:real);Procedure area(a,b,c:real;var m:real);Procedure area(a,b,c:real;var

25、m:real);var var var var 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:=sqrt(p*(p-a)*(p-b)*(p-c);m:=sqrt(p*(p-a)*(p-b)*(p-c);m:=sqrt(p*(p-a)*(p-b)*(p-c);m:=sqrt(p*(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四个参数四个参数四个参数四

26、个参数,a,a,a,a、b b b b、c c c c为值参,参数为值参,参数为值参,参数为值参,参数m m m m前面有前面有前面有前面有varvarvarvar,是变参。该过程被调用后,由,是变参。该过程被调用后,由,是变参。该过程被调用后,由,是变参。该过程被调用后,由变参变参变参变参m m m m将结果传回将结果传回将结果传回将结果传回调用程序调用程序调用程序调用程序。程序设计程序设计程序设计程序设计P Pascalascalascalascal过程调用:过程名:实在参数表;b1b1b5b5b6b6b2b2b3b3b4b4b7b7例:用过程编写程序求如图所示的五边形面积。例:用过程编写

27、程序求如图所示的五边形面积。Program lx1-1(input,output);var b1,b2,b3,b4,b5,b6,b7,s,sum,real;三角形的面积通过变三角形的面积通过变三角形的面积通过变三角形的面积通过变参参参参s s传回主程序。传回主程序。传回主程序。传回主程序。begin Procedure area(a,b,c:real;var s:real);var p:real;begin p:=(a+b+c)/2;s:=sqrt(p*(p-a)*(p-b)*(p-c);end;readln(b1,b2,b3,b4,b5,b6,b7);end.sum:=0;area(b1,b

28、5,b6,s);sum:=sum+s;area(b2,b6,b7,s);sum:=sum+s;area(b3,b4,b7,s);sum:=sum+s;writeln(sum=,sum:10:3);程序设计程序设计程序设计程序设计P Pascalascalascalascal函数调用出现在表达式中函数调用出现在表达式中函数调用出现在表达式中函数调用出现在表达式中函数值是通过函数名传回函数值是通过函数名传回函数值是通过函数名传回函数值是通过函数名传回调用程序调用程序调用程序调用程序操操作作操操作作完成一系列的数据处理,完成一系列的数据处理,完成一系列的数据处理,完成一系列的数据处理,或与计算无关的

29、各种操作或与计算无关的各种操作或与计算无关的各种操作或与计算无关的各种操作往往求一个函数值往往求一个函数值往往求一个函数值往往求一个函数值结果类型结果类型结果类型结果类型无无无无函数有类型,最终要将函函数有类型,最终要将函函数有类型,最终要将函函数有类型,最终要将函数值传送给函数名。数值传送给函数名。数值传送给函数名。数值传送给函数名。调用方式调用方式调用方式调用方式由独立的过程调用语由独立的过程调用语由独立的过程调用语由独立的过程调用语句来完成句来完成句来完成句来完成返返 回回 值值返返 回回 值值的的 方方 法法的的 方方 法法通过变参将运算的结果通过变参将运算的结果通过变参将运算的结果通

30、过变参将运算的结果传给调用程序传给调用程序传给调用程序传给调用程序过过程程过过程程函函数数函函数数过程和函数的主要区别:过程和函数的主要区别:程序设计程序设计程序设计程序设计P Pascalascalascalascal例例例例1-4 1-4 设计一个过程将数组中的元素从小到大排列。设计一个过程将数组中的元素从小到大排列。设计一个过程将数组中的元素从小到大排列。设计一个过程将数组中的元素从小到大排列。将数组作为参数。将数组作为参数。将数组作为参数。将数组作为参数。typetype atype=array1.10 of integer;atype=array1.10 of integer;var

31、 var a:atype;a:atype;I:integer;I:integer;procedure sort(var procedure sort(var p:atypep:atype););var var I,j,k:integer;I,j,k:integer;begin begin for I:=1 to 9 do for I:=1 to 9 do for j:=I+1 to 10 do for j:=I+1 to 10 do if pIpj then begin if pIpj then begin k:=pI;pI:=pj;pj:=k;k:=pI;pI:=pj;pj:=k;end e

32、nd end;end;begin begin for I:=1 to 10 do read(aI);for I:=1 to 10 do read(aI);sort(a);sort(a);for I:=1 to 10 do write(aI,)for I:=1 to 10 do write(aI,)end.end.程序设计程序设计程序设计程序设计P Pascalascalascalascal例例例例1-4 1-4 设计一个过程将数组中的元素从小到大排列。设计一个过程将数组中的元素从小到大排列。设计一个过程将数组中的元素从小到大排列。设计一个过程将数组中的元素从小到大排列。将数组作为参数。将数组作

33、为参数。将数组作为参数。将数组作为参数。typetype atype=array1.10 of integer;atype=array1.10 of integer;var var a:atype;a:atype;I:integer;I:integer;procedure sort(var procedure sort(var p:atypep:atype););var var I,j,k:integer;I,j,k:integer;begin begin for I:=1 to 9 do for I:=1 to 9 do for j:=I+1 to 10 do for j:=I+1 to 1

34、0 do if pIpj then begin if pIpj then begin k:=pI;pI:=pj;pj:=k;k:=pI;pI:=pj;pj:=k;end end end;end;begin begin for I:=1 to 10 do read(aI);for I:=1 to 10 do read(aI);sort(a);sort(a);for I:=1 to 10 do write(aI,)for I:=1 to 10 do write(aI,)end.end.注意:注意:当函数或当函数或当函数或当函数或过程的形式参数为过程的形式参数为过程的形式参数为过程的形式参数为数组类

35、型时,相应数组类型时,相应数组类型时,相应数组类型时,相应的实在参数必须是的实在参数必须是的实在参数必须是的实在参数必须是一致的数组类型。一致的数组类型。一致的数组类型。一致的数组类型。当形参为数组类型当形参为数组类型当形参为数组类型当形参为数组类型时,在时,在时,在时,在TPTP中必须用中必须用中必须用中必须用类型名进行定义,类型名进行定义,类型名进行定义,类型名进行定义,而在而在而在而在FPFP中是可以这中是可以这中是可以这中是可以这样定义的:样定义的:样定义的:样定义的:Procedure sort(var p:array1.10 of integer);Procedure sort(v

36、ar p:array1.10 of integer);程序设计程序设计程序设计程序设计P Pascalascalascalascal3 3、变量及其作用域、变量及其作用域Program ex1-5(input,output);Program ex1-5(input,output);var var m:integer;m:integer;procedure test1;procedure test1;begin begin m:=100;m:=100;end;end;begin begin m:=5;m:=5;writeln(m=,m);writeln(m=,m);test1;test1;wri

37、teln(m=,m);writeln(m=,m);end.end.例例例例1-5 a1-5 a读程序写结果。读程序写结果。读程序写结果。读程序写结果。结果为:结果为:m=5m=100全程量的作用域有两种情况:全程量的作用域有两种情况:全程量的作用域有两种情况:全程量的作用域有两种情况:1、在全程变量和局部变量、在全程变量和局部变量不同名时,其作用域是整不同名时,其作用域是整个程序。个程序。2、在全程变量和局部变量、在全程变量和局部变量同名时,全程变量的作用域同名时,全程变量的作用域不包含同名局部变量的作用不包含同名局部变量的作用域。域。mm为全程变量。为全程变量。为全程变量。为全程变量。程序设

38、计程序设计程序设计程序设计P Pascalascalascalascal例例例例1-5b 1-5b 读程序写结果。读程序写结果。读程序写结果。读程序写结果。Program ex1-5b(input,output);Program ex1-5b(input,output);var var m:integer;m:integer;procedure test2;procedure test2;var var m:integer;m:integer;begin begin m:=100;m:=100;end;end;begin begin m:=5;m:=5;writeln(m=,m);writel

39、n(m=,m);test2;test2;writeln(m=,m);writeln(m=,m);end.end.结果为:结果为:m=5m=5MM是局部量,结果被屏蔽,它不影响到是局部量,结果被屏蔽,它不影响到是局部量,结果被屏蔽,它不影响到是局部量,结果被屏蔽,它不影响到全程量全程量全程量全程量mm的值。的值。的值。的值。程序设计程序设计程序设计程序设计P Pascalascalascalascal全局变量:在主程序中被说明全局变量:在主程序中被说明全局变量:在主程序中被说明全局变量:在主程序中被说明 作用域:整个程序;作用域:整个程序;作用域:整个程序;作用域:整个程序;局部变量:在子程序中

40、被说明局部变量:在子程序中被说明局部变量:在子程序中被说明局部变量:在子程序中被说明 作用域:主程序及其下级的程序。作用域:主程序及其下级的程序。作用域:主程序及其下级的程序。作用域:主程序及其下级的程序。全程量的作用域分两种情况:全程量的作用域分两种情况:全程量的作用域分两种情况:全程量的作用域分两种情况:当全程量和局部量不同名时,其作用域是整个程序。当全程量和局部量不同名时,其作用域是整个程序。当全程量和局部量不同名时,其作用域是整个程序。当全程量和局部量不同名时,其作用域是整个程序。当当当当全全全全程程程程量量量量和和和和局局局局部部部部量量量量同同同同名名名名时时时时,全全全全程程程程

41、量量量量的的的的作作作作用用用用域域域域不不不不包包包包含含含含局局局局部量的作用域。部量的作用域。部量的作用域。部量的作用域。当局部变量所在子程序被调用时,局部变量才被分配有当局部变量所在子程序被调用时,局部变量才被分配有当局部变量所在子程序被调用时,局部变量才被分配有当局部变量所在子程序被调用时,局部变量才被分配有效的存储单元;当返回调用程序时,局部变量所占的存储单效的存储单元;当返回调用程序时,局部变量所占的存储单效的存储单元;当返回调用程序时,局部变量所占的存储单效的存储单元;当返回调用程序时,局部变量所占的存储单元就被释放。元就被释放。元就被释放。元就被释放。程序设计程序设计程序设计

42、程序设计P Pascalascalascalascal练一练:练一练:练一练:练一练:Program ex1-2(input,output);Program ex1-2(input,output);var var x,y:integer;x,y:integer;procedure change;procedure change;var var x:integer;x:integer;begin begin x:=2;x:=2;y:=2;y:=2;writeln(x,y);writeln(x,y);end;end;begin begin x:=1;x:=1;y:=1;y:=1;writeln(x

43、,y);writeln(x,y);change;change;writeln(x,y);writeln(x,y);end.end.结果为:结果为:112231 2程序设计程序设计程序设计程序设计P Pascalascalascalascal4 4、参数的传递、参数的传递参数参数形参形参实参实参值形参值形参变形参变形参Function fac(x,y:integer):real;procdure fac(var x,y:integer);a:=fac(5,6);值参类似于局部变量,仅为过程和函数的执行提供初值而不值参类似于局部变量,仅为过程和函数的执行提供初值而不值参类似于局部变量,仅为过程和函

44、数的执行提供初值而不值参类似于局部变量,仅为过程和函数的执行提供初值而不影响调用时实际参数的值。影响调用时实际参数的值。影响调用时实际参数的值。影响调用时实际参数的值。对变参操作实际上就是对实参本身的操作。对变参操作实际上就是对实参本身的操作。对变参操作实际上就是对实参本身的操作。对变参操作实际上就是对实参本身的操作。程序设计程序设计程序设计程序设计P PascalascalascalascalProgram ex1-6-1(input,output);var a:integer;procedure sum(b:integer);begin b:=b+10;writeln(b=,b);end;

45、begin a:=10;sum(a);writeln(a=,a);end.运行结果为:运行结果为:b=20a=10Program ex1-6-2(input,output);var a:integer;procedure sum(var b:integer);begin b:=b+10;writeln(b=,b);end;begin a:=10;sum(a);writeln(a=,a);end.运行结果为:运行结果为:b=20a=20值参值参值参值参变参变参变参变参程序设计程序设计程序设计程序设计P PascalascalascalascalProgram lx1-2-1(input,outp

46、ut);var x,n:integer;procedure chan(x:integer;var y:integer);begin x:=x+5;y:=y+5;writeln(x=,x,y=,y);end;begin x:=10;n:=10;writeln(x=,x,n=,n);chan(x,n);writeln(x=,x,n=,n);end.结果为:结果为:X=10 n=10X=15 y=15X=10 n=15练一练练一练程序设计程序设计程序设计程序设计P Pascalascalascalascal读下列程序体会子程序的功能:读下列程序体会子程序的功能:读下列程序体会子程序的功能:读下列程序

47、体会子程序的功能:Program lx_1_2a(input,output);var x,y:integer;procedure swap1;var t:integer;begin t:=x;x:=y;y:=t;end;begin x:=10;y:=20;writeln(x=,x,y=:6,y);swap1;writeln(x=,x,y=:6:y)End.Program lx_1_2b(input,output);var x,y:integer;procedure swap1(var x,y:integer);var t:integer;begin t:=x;x:=y;y:=t;end;beg

48、in x:=10;y:=20;writeln(x=,x,y=:6,y);swap1(x,y);writeln(x=,x,y=:6:y)End.程序设计程序设计程序设计程序设计P Pascalascalascalascal值参与变参的区别:值参与变参的区别:值参与变参的区别:值参与变参的区别:1 1、传值:为值参分配存储单元,过程体内对值参的操作不、传值:为值参分配存储单元,过程体内对值参的操作不、传值:为值参分配存储单元,过程体内对值参的操作不、传值:为值参分配存储单元,过程体内对值参的操作不影响实参的值。一旦过程体执行结束后,系统将收回值参影响实参的值。一旦过程体执行结束后,系统将收回值参影

49、响实参的值。一旦过程体执行结束后,系统将收回值参影响实参的值。一旦过程体执行结束后,系统将收回值参所占用的存储单元,值参的值也就不再存在。所占用的存储单元,值参的值也就不再存在。所占用的存储单元,值参的值也就不再存在。所占用的存储单元,值参的值也就不再存在。2 2、变参是传地址:变参所占用的存储单元中存放的是实参、变参是传地址:变参所占用的存储单元中存放的是实参、变参是传地址:变参所占用的存储单元中存放的是实参、变参是传地址:变参所占用的存储单元中存放的是实参的地址,因此对变参的操作就是对实参的操作。一旦过程体的地址,因此对变参的操作就是对实参的操作。一旦过程体的地址,因此对变参的操作就是对实

50、参的操作。一旦过程体的地址,因此对变参的操作就是对实参的操作。一旦过程体执行完毕,系统将收回变参所占用的存储单元,但运算结果执行完毕,系统将收回变参所占用的存储单元,但运算结果执行完毕,系统将收回变参所占用的存储单元,但运算结果执行完毕,系统将收回变参所占用的存储单元,但运算结果已保留在对应的实参中。已保留在对应的实参中。已保留在对应的实参中。已保留在对应的实参中。形参种类不同决定了实参的单、双向传递。形参种类不同决定了实参的单、双向传递。形参种类不同决定了实参的单、双向传递。形参种类不同决定了实参的单、双向传递。值参实现单向传递,仅将过程外部的值传递值参实现单向传递,仅将过程外部的值传递值参

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

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

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com