关于全局变量和局部变量_第1页
关于全局变量和局部变量_第2页
关于全局变量和局部变量_第3页
关于全局变量和局部变量_第4页
关于全局变量和局部变量_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、关于全局变量和局部变量     在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序;局部变量作用域是定义该变量的子程序。当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。 例:全局变量和局部变量。 program local_global;var i,k:integer;procedure sub1;var i,j:integer; begin  i:=17;  writeln('i in sub=',i);  wri

2、teln('k in sub=',k); end;begin i:=2;k:=9; writeln('i in main=',i); writeln('k in sub=',k); sub1; writeln('i in main=',i); writeln('j in main=',j); end. 上述程序运行时将出现Unknown Identfier;因为变量j在主程序中没定义。 当删除本语句时。运行结果如下: i in main

3、2 k in main9 i in sub17 k in sub9 i in main2自定义函数Pascal允许用户在程序中自己说明定义新的函数并在程序中调用这些函数。函数说明的一般形式Function <函数名>(<参数表>):<函数类型><说明部分>Begin<函数体>End;注:1、保留字function必不可省,函数名由合法的标识符指出。参数表由形式参数名表,和说明形式参数的类型标识符组成。函数类型即结果类型。 2、在说明部分可以包括函数所需要的常量说明、类型说明和变量说明,也可以包括其它函数或过程说明。也可以没有说明。 3

4、、函数体描述了函数执行的数据处理。其中至少包括一个给函数名赋值的语句 <函数名>:=表达式 4、函数调用格式:<函数名>(<实在参数表>)例5.1:利用自定义函数求x3+x6Program ex51; Var x,y:real; 函数SC的说明Function sc(t:real):real; Begin Sc:=t*t*t; End;主程序Begin Read(x); y:=sc(x)+sqr(sc(x);write(y)end.例5.2编程找出由键盘任意输入五个整数中的最大整数。解:设输入的五个整数为n1、n2、n3、n4、n5,为了便于处理,引入一个中

5、间变量t1,按如下步骤处理:令t1=n1;将t1与n2比较,将两者中较大数放入t1;将t1与n3比较,将两者中较大数放入t1; 将t1与n4比较将两者中较大数放入t1;  将t1与n5比较将两者中较大放入t1; 经过以上5步处理后,t1即为5个数中最大者。从上面规划的步骤看来,从步骤到步骤 需处理的目标是相同的,因此我们可以设计一段子程序Max(x1,x2),以找出x1和x2中最大的值并返回。Pascal程序:Program Exam41_a;Var n1,n2,n3,n4,n5,t1 : integer;Function max(x1,x2 : integer)

6、 : integer;Begin  If x1>x2 then Max := x1            Else Max := x2;End; Begin Readln(n1,n2,n3,n4,n5);T1 := n1;T1 := Max(t1,n2);T1 := Max(t1,n3);T1 := Max(t1,n4);T1 := Max(t1,n5);Writeln(Max number : ,t1);End. 例5.2求任意输入的五个自然数的最

7、大公约数。解:自定义一个专门求两自然数的最大公约数的函数GCD;   调用自定义函数,第一次求前两个数的最大公约数;从第二次开始,用每次求得的最大公约数与下一个数再求两个数最大公约数,直到最后。本题共四次“求两个数的最大公约数”, 设输入的五个自然数分别是a1,a2,a3,a4,a5,采用如下步骤:求a1, a2两个数的最大公约数存入a1;求a1, a3两个数的最大公约数存入a1;求a1, a4两个数的最大公约数存入a1;求a1, a5两个数的最大公约数存入a1; 输出 a1,此时的a1已是五个数的最大公约数。Pascal程序:Program Exam42;Var a1,a

8、2,a3,a4,a5: integder;function GCD(x1,x2: integer): integer;         自定义函数 Var temp:integer;begin  While  x20  do  begin    temp:=x1 mod x2; x1:=x2;x2:=tempend;  GCD:=x1end; Begin      

9、  主程序   readln(a1,a2,a3,a4,a5);          a1:GCD(a1,a2);                               调用函数GCD &

10、#160; a1:GCD(a1,a3);  a1:GCD(a1,a4);  a1:GCD(a1,a5);  Writeln(a1);End.练习1:求一个整数从右边开始数第K个数字的值。program ex52; var n,k,x:integer; function dig(n,k:integer):integer; begin repeat dig:=n mod 10; n:=n div 10; k:=k-1; until k=0; end; begin read(n,k); x:=dig(n,k); write(x); end.练习2:判断某个数字是否在某个

11、整数中出现。Program ex; Var n,d:integer;che:boolean;function check(n,d:integer):Boolean; var m:integer;begin repeat m:=n mod 10;n:=n div 10until (m=d) or (n=0);check:=m=dend;beginread(n,d);che:=check(n,d);write(che)end.例5.3 定义产生随数的函数,并借助它生成两位整数乘法的算式,让学生回答,计算机给出正确与否的判断。当学生回答-1是结束。program game; var x,y,z,an

12、swer:integer; seed:real; function rand(var seed:real):real; const a=93.0; m=8192.0; c=1.0; begin seed:=a*seed+c; seed:=round(seed/m-trunc(seed/m)*m); rand:=seed/m end; begin seed:=0.7823; repeat x:=trunc(rand(seed)*100); y:=trunc(rand(seed)*100); write(x:2,'*',y:2,'='); read(answer); if answer=x*y then writeln('right') else writeln('wrong'); until answer=-1; end.例

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论