开发手册 欢迎您!
软件开发者资料库

Pascal - 可变范围

Pascal变量范围 - 从简单和简单的步骤学习Pascal,从基本到高级概念,包括pascal语法,数据类型,全局变量和局部变量,单位,函数,循环,常量,结构,数组,枚举,集合,记录,文件,变体记录,指针,链接列表和文本处理。

任何编程中的范围都是程序的一个区域,在该区域中,已定义的变量可以存在,并且无法访问该变量.有三个地方,在那里变量可以在Pascal编程语言声明:

  • 在子程序或称为局部变量的块中

  • 在所有子程序之外,称为全局变量

  • 在子程序参数的定义中称为形式参数

让我们解释一下什么是局部变量和全局变量以及形式参数。

Local Variables

在子程序或块中声明的变量称为局部变量。 它们只能由该子程序或代码块中的语句使用。 局部变量在子程序之外是未知的。 以下是使用局部变量的示例。 在这里,所有变量a,b和c对于名为exLocal的程序都是本地的。

program exLocal; var   a, b, c: integer;begin   (* actual initialization *)   a := 10;   b := 20;   c := a + b;      writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);end.

编译并执行上述代码后,将产生以下结果:

value of a = 10 b = 20 c = 30

现在,让我们进一步扩展程序,让我们创建一个名为display的过程,该过程将拥有自己的变量a,b和c集,并直接从程序exLocal显示它们的值。

program exLocal;var   a, b, c: integer;procedure display;var   a, b, c: integer;begin   (* local variables *)   a := 10;   b := 20;   c := a + b;      writeln('Winthin the procedure display');   writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);end;begin   a:= 100;   b:= 200;   c:= a + b;      writeln('Winthin the program exlocal');   writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);   display();end.

编译并执行上述代码后,将产生以下结果:

Within the program exlocalvalue of a = 100 b = 200 c = 300Within the procedure displayvalue of a = 10 b = 20 c = 30

Global Variables

全局变量是在函数外部定义的,通常在程序顶部。 全局变量将在程序的整个生命周期中保持其值,并且可以在为该程序定义的任何函数中访问它们。

全局变量可以由任何函数访问。 也就是说,在声明之后,全局变量可在整个程序中使用。 以下是使用全局和局部变量的示例:

program exGlobal;var   a, b, c: integer;procedure display;var   x, y, z: integer;begin   (* local variables *)   x := 10;   y := 20;   z := x + y;      (*global variables *)   a := 30;   b:= 40;   c:= a + b;      writeln('Winthin the procedure display');   writeln(' Displaying the global variables a, b, and c');      writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);   writeln('Displaying the local variables x, y, and z');      writeln('value of x = ', x , ' y =  ',  y, ' and z = ', z);end;begin   a:= 100;   b:= 200;   c:= 300;      writeln('Winthin the program exlocal');   writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);      display();end.

编译并执行上述代码后,将产生以下结果:

Within the program exlocalvalue of a = 100 b = 200 c = 300Within the procedure displayDisplaying the global variables a, b, and cvalue of a = 30 b = 40 c = 70Displaying the local variables x, y, and zvalue of x = 10 y = 20 z = 30

请注意,过程显示可以访问变量a,b和c,它们是关于显示的全局变量以及它自己的局部变量。 程序的局部变量和全局变量可以具有相同的名称,但是函数内局部变量的值将优先。

让我们稍微修改一下前面的示例,现在过程显示的局部变量与a,b,c具有相同的名称:

program exGlobal;var   a, b, c: integer;procedure display;var   a, b, c: integer;begin   (* local variables *)   a := 10;   b := 20;   c := a + b;      writeln('Winthin the procedure display');   writeln(' Displaying the global variables a, b, and c');      writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);   writeln('Displaying the local variables a, b, and c');      writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);end;begin   a:= 100;   b:= 200;   c:= 300;      writeln('Winthin the program exlocal');   writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);         display();end.

编译并执行上述代码后,将产生以下结果:

Within the program exlocalvalue of a = 100 b = 200 c = 300Within the procedure displayDisplaying the global variables a, b, and cvalue of a = 10 b = 20 c = 30Displaying the local variables a, b, and cvalue of a = 10 b = 20 c = 30