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

上传人:s****8 文档编号:67220124 上传时间:2022-12-24 格式:PPT 页数:40 大小:380.50KB
返回 下载 相关 举报
NOIP初赛资料——day3过程和函数.ppt_第1页
第1页 / 共40页
NOIP初赛资料——day3过程和函数.ppt_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《NOIP初赛资料——day3过程和函数.ppt》由会员分享,可在线阅读,更多相关《NOIP初赛资料——day3过程和函数.ppt(40页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal过程与函数过程与函数JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal过程和函数过程和函数程程程程 序序序序 的基本的基本的基本的基本结构结构结构结构顺序结构顺序结构顺序结构顺序结构选择结构选择结构选择结构选择结构循环结构循环结构循环结构循环结构过程和函数过程和函数过程和函

2、数过程和函数说明:说明:程序中可以只有主程序而没有子程序,但不程序中可以只有主程序而没有子程序,但不能没有主程序,也就是说不能单独执行子程序。能没有主程序,也就是说不能单独执行子程序。程程序序设设计计程程序序设设计计的的基基本本思思的的基基本本思思想想:想想:自顶自顶自顶自顶向下、逐步求精向下、逐步求精向下、逐步求精向下、逐步求精程序的模块化程序的模块化程序的模块化程序的模块化JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal标准函数有:标准函数有:标准函数

3、的调用标准函数的调用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)JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal例例1-11-1:编程求:编程求1 12 22 22 21001002 2 的和的和PROGRAMsum(input,output);VARi:integer;s:longint;BEGIN

4、s:=0;fori:=1to100dos:=s+sqr(i);writeln(s=,s);END.例例1_21_2:编程求:编程求1 1!2 2!3 3!1010!的和。!的和。fac(i)JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal一、函数的定义及调用一、函数的定义及调用一、函数的定义及调用一、函数的定义及调用Function Function 函数名函数名函数名函数名(形参表):函数类型;形参表):函数类型;形参表):函数类型;形参表):函数类型;

5、局部变量说明;局部变量说明;局部变量说明;局部变量说明;beginbegin 语句语句语句语句1 1;;函数名:函数名:函数名:函数名:=表达式;表达式;表达式;表达式;end;end;函数首部函数首部函数首部函数首部函数体函数体函数体函数体将函数值传递给函数名将函数值传递给函数名将函数值传递给函数名将函数值传递给函数名函数的类型函数的类型函数的类型函数的类型在表达式中调用:函数名(实参)在表达式中调用:函数名(实参)在表达式中调用:函数名(实参)在表达式中调用:函数名(实参)如:如:如:如:x=Abs(n)absx=Abs(n)abs为函数名,为函数名,为函数名,为函数名,n n为实参,函数

6、类型为为实参,函数类型为为实参,函数类型为为实参,函数类型为integer or integer or realreal注意:自定义函数先定义后使用。注意:自定义函数先定义后使用。函数值通过函数名函数值通过函数名函数值通过函数名函数值通过函数名传送回调用程序。传送回调用程序。传送回调用程序。传送回调用程序。JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal例例例例1-2 1-2 1-2 1-2 编写一个求编写一个求编写一个求编写一个求n!n!n!n!的函数的

7、函数的函数的函数facfacfacfac.function 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 函函函函数数数数说说说说明明明明函数首部函数首部函数首部函数首部局部变量说明局部变量说明局部变量说明局部变量说明形式参数形式参数形

8、式参数形式参数函数执行部分函数执行部分函数执行部分函数执行部分将将将将函数值传递到函数名中函数值传递到函数名中函数值传递到函数名中函数值传递到函数名中函数的结果类型函数的结果类型函数的结果类型函数的结果类型JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal注注 意意:1 1 1 1、使用函数前应先说明。、使用函数前应先说明。、使用函数前应先说明。、使用函数前应先说明。3 3 3 3、形参就是函数的自变量,其初值来源于主程序的调用,只有、形参就是函数的自变量,

9、其初值来源于主程序的调用,只有、形参就是函数的自变量,其初值来源于主程序的调用,只有、形参就是函数的自变量,其初值来源于主程序的调用,只有在程序的执行过程中调用了函数,形参才能得到具体的值并参与在程序的执行过程中调用了函数,形参才能得到具体的值并参与在程序的执行过程中调用了函数,形参才能得到具体的值并参与在程序的执行过程中调用了函数,形参才能得到具体的值并参与运算,得到函数值。注意:形参表类似于变量说明,但只能使用运算,得到函数值。注意:形参表类似于变量说明,但只能使用运算,得到函数值。注意:形参表类似于变量说明,但只能使用运算,得到函数值。注意:形参表类似于变量说明,但只能使用类型标识符,且

10、不能直接使用类型。形参可缺省。类型标识符,且不能直接使用类型。形参可缺省。类型标识符,且不能直接使用类型。形参可缺省。类型标识符,且不能直接使用类型。形参可缺省。4 4 4 4、函数的类型也就是函数值的类型,函数值将通过函数名传送、函数的类型也就是函数值的类型,函数值将通过函数名传送、函数的类型也就是函数值的类型,函数值将通过函数名传送、函数的类型也就是函数值的类型,函数值将通过函数名传送回调用程序。回调用程序。回调用程序。回调用程序。5 5 5 5、函数体内所用的类型、常量、变量等只在本函数内有效,退出、函数体内所用的类型、常量、变量等只在本函数内有效,退出、函数体内所用的类型、常量、变量等

11、只在本函数内有效,退出、函数体内所用的类型、常量、变量等只在本函数内有效,退出函数体后,分配的存储单元被释放。这些量与函数体外的同名变函数体后,分配的存储单元被释放。这些量与函数体外的同名变函数体后,分配的存储单元被释放。这些量与函数体外的同名变函数体后,分配的存储单元被释放。这些量与函数体外的同名变量无关。量无关。量无关。量无关。6 6 6 6、在函数体中至少有一条将函数值传给函数名的赋值语句。、在函数体中至少有一条将函数值传给函数名的赋值语句。、在函数体中至少有一条将函数值传给函数名的赋值语句。、在函数体中至少有一条将函数值传给函数名的赋值语句。2 2 2 2、函数首部以保留字、函数首部以

12、保留字、函数首部以保留字、函数首部以保留字functionfunctionfunctionfunction开头,函数名由用户自定义的开头,函数名由用户自定义的开头,函数名由用户自定义的开头,函数名由用户自定义的一个标识符,用来存放最终函数值。一个标识符,用来存放最终函数值。一个标识符,用来存放最终函数值。一个标识符,用来存放最终函数值。JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascalbeginbegin S:=fac(3)+fac(5)+fac(7);S:

13、=fac(3)+fac(5)+fac(7);Writeln(sWriteln(s=,s)=,s)End.End.例例例例7-1 7-1 编写一个求编写一个求编写一个求编写一个求n!n!的函数的函数的函数的函数facfac.function 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;

14、:=t;end;end;endfacendfac 函函函函数数数数说说说说明明明明函数首部函数首部函数首部函数首部局部变量说明局部变量说明局部变量说明局部变量说明形式参数形式参数形式参数形式参数函数执行部分函数执行部分函数执行部分函数执行部分将将将将函数值传递到函数名中函数值传递到函数名中函数值传递到函数名中函数值传递到函数名中Program ex1-2a(input,output);Program ex1-2a(input,output);varvar s:longints:longint;主主主主程程程程序序序序函数调用出现在表达式中函数调用出现在表达式中函数调用出现在表达式中函数调用出现

15、在表达式中若求若求若求若求3 3!+5+5!+7+7!的值,如何修改程序?!的值,如何修改程序?!的值,如何修改程序?!的值,如何修改程序?JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal调调 用用 函函 数数 时时 注注 意意:调调 用用 函函 数数 时时 注注 意意:1 1 1 1、自定义函数中的形参,不是实际存在的变量,故又称为虚拟、自定义函数中的形参,不是实际存在的变量,故又称为虚拟、自定义函数中的形参,不是实际存在的变量,故又称为虚拟、自定义函数

16、中的形参,不是实际存在的变量,故又称为虚拟变量,它们并不占用内存单元,只是在调用函数时,才临时开变量,它们并不占用内存单元,只是在调用函数时,才临时开变量,它们并不占用内存单元,只是在调用函数时,才临时开变量,它们并不占用内存单元,只是在调用函数时,才临时开辟相应的内存单元,存放实在参数的值,如辟相应的内存单元,存放实在参数的值,如辟相应的内存单元,存放实在参数的值,如辟相应的内存单元,存放实在参数的值,如fac(3)fac(3)fac(3)fac(3)中的中的中的中的3 3 3 3。它是。它是。它是。它是在调用函数时的所用的自变量。形参实质上是实参的一个在调用函数时的所用的自变量。形参实质上

17、是实参的一个在调用函数时的所用的自变量。形参实质上是实参的一个在调用函数时的所用的自变量。形参实质上是实参的一个“替替替替身身身身”。在调用函数时,实参将值赋给形参,因此实参的个数、。在调用函数时,实参将值赋给形参,因此实参的个数、。在调用函数时,实参将值赋给形参,因此实参的个数、。在调用函数时,实参将值赋给形参,因此实参的个数、类型应与形参一一对应,并且要有确定的值。类型应与形参一一对应,并且要有确定的值。类型应与形参一一对应,并且要有确定的值。类型应与形参一一对应,并且要有确定的值。2 2 2 2、函数调用步骤是:首先在调用程序中计算实参的值,传送、函数调用步骤是:首先在调用程序中计算实参

18、的值,传送、函数调用步骤是:首先在调用程序中计算实参的值,传送、函数调用步骤是:首先在调用程序中计算实参的值,传送给对应的形参,接着执行函数体,最后将函数值返回给调用程给对应的形参,接着执行函数体,最后将函数值返回给调用程给对应的形参,接着执行函数体,最后将函数值返回给调用程给对应的形参,接着执行函数体,最后将函数值返回给调用程序。序。序。序。3 3 3 3、函数的定义是静态的,若定义后未被调用,则该函数永远、函数的定义是静态的,若定义后未被调用,则该函数永远、函数的定义是静态的,若定义后未被调用,则该函数永远、函数的定义是静态的,若定义后未被调用,则该函数永远不会被执行。不会被执行。不会被执

19、行。不会被执行。JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计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:real;p:real;begin begin p:=(a+b+c)/2;p:=(a+b+c)/2;area:=

20、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)/2Program ex1-2(input,output);Program ex1-2(input,output);v

21、arvar 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=,s:10:3);=,s:10:3);End.End.函数首部函数首部函数首部函数首部三个三个三个三个形式参

22、数形式参数形式参数形式参数函数函数函数函数areaarea结果类型为实型结果类型为实型结果类型为实型结果类型为实型给给给给函数名函数名函数名函数名areaarea赋值赋值赋值赋值调用函数调用函数调用函数调用函数分析:分析:分析:分析:b1b1b5b5b6b6b2b2b3b3b4b4b7b7JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal2 2、过程定义及调用、过程定义及调用标准过程有:标准过程有:标准过程有:标准过程有:标准过程调用:标准过程调用:标准过程

23、调用:标准过程调用:read/read/readln/write/writelnreadln/write/writelnRead(a,b,c);Read(a,b,c);自定义过程的格式:自定义过程的格式:自定义过程的格式:自定义过程的格式:Procedure Procedure 过程名过程名过程名过程名(形参表);形参表);形参表);形参表);局部变量说明;局部变量说明;局部变量说明;局部变量说明;beginbegin 语句语句语句语句1 1;语句语句语句语句2 2;end;end;过程首部过程首部过程首部过程首部过程体过程体过程体过程体JSOI2009JSOI2009年大丰冬令营(年大丰冬令

24、营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计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!的结果是如何回传给主程序的?的结果是如何回传给主程序的?的

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

26、何数据。、不能给过程名赋值,过程名不能代表任何数据。思考:思考:n!的结果存放在哪里?的结果存放在哪里?JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计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:re

27、al;Procedure area(a,b,c:real;Procedure area(a,b,c:real;varvarvarvar m:real);m:real);m:real);m:real);varvarvarvar 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

28、-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 c c c为值参,参数为值参,参数为值参,参数为值参,参数m m m m前面有前面有前面有前面有varvarvarvar,是变参。该过程被调用后,由是变参。该过程被调用后,由是变参。该过程被调用后,由是变参。该过程被调用后,由变参变参变参变参m m m m将结果传回将结果传回将结果传回将结果传回调用程序调用程序调用程序调用程序。JSOI2009JSOI2009年大丰冬令营(年

29、大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal过程调用:过程名:实在参数表;b1b1b5b5b6b6b2b2b3b3b4b4b7b7例:用过程编写程序求如图所示的五边形面积。例:用过程编写程序求如图所示的五边形面积。Program lx1-1(input,output);var b1,b2,b3,b4,b5,b6,b7,s,sum,real;三角形的面积通过变三角形的面积通过变三角形的面积通过变三角形的面积通过变参参参参s s传回主程序。传回主程序。传回主程序。传回主程序。begin Procedur

30、e 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,b5,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);JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序

31、设计程序设计程序设计P Pascalascalascalascal函数调用出现在表达式中函数调用出现在表达式中函数调用出现在表达式中函数调用出现在表达式中函数值是通过函数名传回函数值是通过函数名传回函数值是通过函数名传回函数值是通过函数名传回调用程序调用程序调用程序调用程序操操作作操操作作完成一系列的数据处理,完成一系列的数据处理,完成一系列的数据处理,完成一系列的数据处理,或与计算无关的各种操作或与计算无关的各种操作或与计算无关的各种操作或与计算无关的各种操作往往求一个函数值往往求一个函数值往往求一个函数值往往求一个函数值结果类型结果类型结果类型结果类型无无无无函数有类型,最终要将函函数有类

32、型,最终要将函函数有类型,最终要将函函数有类型,最终要将函数值传送给函数名。数值传送给函数名。数值传送给函数名。数值传送给函数名。调用方式调用方式调用方式调用方式由独立的过程调用语由独立的过程调用语由独立的过程调用语由独立的过程调用语句来完成句来完成句来完成句来完成返返 回回 值值返返 回回 值值的的 方方 法法的的 方方 法法通过变参将运算的结果通过变参将运算的结果通过变参将运算的结果通过变参将运算的结果传给调用程序传给调用程序传给调用程序传给调用程序过过程程过过程程函函数数函函数数过程和函数的主要区别:过程和函数的主要区别:JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰

33、冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal例例例例1-4 1-4 设计一个过程将数组中的元素从小到大排列。设计一个过程将数组中的元素从小到大排列。设计一个过程将数组中的元素从小到大排列。设计一个过程将数组中的元素从小到大排列。将将将将数组作为参数。数组作为参数。数组作为参数。数组作为参数。typetype atypeatype=array1.10 of integer;=array1.10 of integer;varvar a:atypea:atype;I:integer;I:integer;procedure

34、procedure sort(varsort(var p:atypep:atype););varvar 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 end end;end;begin begin for I:=1 to 10 do read(aI);for

35、 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.JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal例例例例1-4 1-4 设计一个过程将数组中的元素从小到大排列。设计一个过程将数组中的元素从小到大排列。设计一个过程将数组中的元素从小到大排列。设计一个过程将数组中的元素从小到大排列。将将将将数组作为参数

36、。数组作为参数。数组作为参数。数组作为参数。typetype atypeatype=array1.10 of integer;=array1.10 of integer;varvar a:atypea:atype;I:integer;I:integer;procedure procedure sort(varsort(var p:atypep:atype););varvar 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

37、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.注意:注意:当函数或当函数或当函数或当函数或过程的形式参数为过程的形式参数为过程的形式参数为过程的形式参数为数组类型时

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

39、p:array1.10 of integer);JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal3 3、变量及其作用域、变量及其作用域Program ex1-5(input,output);Program ex1-5(input,output);varvar m:integer;m:integer;procedure test1;procedure test1;begin begin m:=100;m:=100;end;end;begin begin m:

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

41、部变量的作用不包含同名局部变量的作用域。域。mm为全程变量。为全程变量。为全程变量。为全程变量。JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal例例例例1-5b 1-5b 读程序写结果。读程序写结果。读程序写结果。读程序写结果。Program ex1-5b(input,output);Program ex1-5b(input,output);varvar m:integer;m:integer;procedure test2;procedure test2

42、;varvar m:integer;m:integer;begin begin m:=100;m:=100;end;end;begin begin m:=5;m:=5;writeln(mwriteln(m=,m);=,m);test2;test2;writeln(mwriteln(m=,m);=,m);end.end.结果为:结果为:m=5m=5MM是局部量,结果被屏蔽,它不影响到是局部量,结果被屏蔽,它不影响到是局部量,结果被屏蔽,它不影响到是局部量,结果被屏蔽,它不影响到全程量全程量全程量全程量mm的值。的值。的值。的值。JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬

43、令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal全局变量:在主程序中被说明全局变量:在主程序中被说明全局变量:在主程序中被说明全局变量:在主程序中被说明 作用域:整个程序;作用域:整个程序;作用域:整个程序;作用域:整个程序;局部变量:在子程序中被说明局部变量:在子程序中被说明局部变量:在子程序中被说明局部变量:在子程序中被说明 作用域:主程序及其下级的程序。作用域:主程序及其下级的程序。作用域:主程序及其下级的程序。作用域:主程序及其下级的程序。全程量的作用域分两种情况:全程量的作用域分两种情况:全程量的作用域分两种情况

44、:全程量的作用域分两种情况:当全程量和局部量不同名时,其作用域是整个程序。当全程量和局部量不同名时,其作用域是整个程序。当全程量和局部量不同名时,其作用域是整个程序。当全程量和局部量不同名时,其作用域是整个程序。当当当当全全全全程程程程量量量量和和和和局局局局部部部部量量量量同同同同名名名名时时时时,全全全全程程程程量量量量的的的的作作作作用用用用域域域域不不不不包包包包含含含含局局局局部量的作用域。部量的作用域。部量的作用域。部量的作用域。当局部变量所在子程序被调用时,局部变量才被分配有当局部变量所在子程序被调用时,局部变量才被分配有当局部变量所在子程序被调用时,局部变量才被分配有当局部变量

45、所在子程序被调用时,局部变量才被分配有效的存储单元;当返回调用程序时,局部变量所占的存储单效的存储单元;当返回调用程序时,局部变量所占的存储单效的存储单元;当返回调用程序时,局部变量所占的存储单效的存储单元;当返回调用程序时,局部变量所占的存储单元就被释放。元就被释放。元就被释放。元就被释放。JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal练一练:练一练:练一练:练一练:Program ex1-2(input,output);Program ex1-2(i

46、nput,output);varvar x,y:integer;x,y:integer;procedure change;procedure change;varvar x:integer;x:integer;begin begin x:=2;x:=2;y:=2;y:=2;writeln(x,ywriteln(x,y););end;end;begin begin x:=1;x:=1;y:=1;y:=1;writeln(x,ywriteln(x,y););change;change;writeln(x,ywriteln(x,y););end.end.结果为:结果为:11221 2JSOI2009

47、JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal4 4、参数的传递、参数的传递参数参数形参形参实参实参值形参值形参变形参变形参Function fac(x,y:integer):real;procdure fac(var x,y:integer);a:=fac(5,6);值参值参值参值参类似于局部变量,仅为过程和函数的执行提供初值而不类似于局部变量,仅为过程和函数的执行提供初值而不类似于局部变量,仅为过程和函数的执行提供初值而不类似于局部变量,仅为过程和函数的执行提供初值

48、而不影响调用时实际参数的值。影响调用时实际参数的值。影响调用时实际参数的值。影响调用时实际参数的值。对变对变对变对变参参参参操作实际上就是对实参本身的操作。操作实际上就是对实参本身的操作。操作实际上就是对实参本身的操作。操作实际上就是对实参本身的操作。JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P PascalascalascalascalProgram ex1-6-1(input,output);var a:integer;procedure sum(b:integer);begin b:=b+

49、10;writeln(b=,b);end;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值参值参值参值参变参变参变参变参JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(

50、B B层)层)层)层)程序设计程序设计程序设计程序设计P PascalascalascalascalProgram lx1-2-1(input,output);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练一练练一练JSOI2009JS

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档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