- 帕斯卡教程
- 帕斯卡 - 主页
- 帕斯卡 - 概述
- Pascal - 环境设置
- 帕斯卡 - 程序结构
- Pascal - 基本语法
- Pascal - 数据类型
- Pascal - 变量类型
- 帕斯卡 - 常数
- 帕斯卡 - 运算符
- 帕斯卡 - 决策
- 帕斯卡 - 循环
- 帕斯卡 - 函数
- 帕斯卡 - 程序
- Pascal - 变量作用域
- 帕斯卡 - 弦乐
- 帕斯卡 - 布尔
- 帕斯卡 - 数组
- 帕斯卡 - 指针
- 帕斯卡 - 记录
- 帕斯卡 - 变体
- 帕斯卡 - 集合
- 帕斯卡 - 文件处理
- 帕斯卡 - 记忆
- 帕斯卡 - 单位
- 帕斯卡 - 日期和时间
- 帕斯卡 - 对象
- 帕斯卡 - 类
- 帕斯卡有用资源
- 帕斯卡 - 快速指南
- 帕斯卡 - 有用的资源
- 帕斯卡 - 讨论
Pascal - 变量作用域
任何编程中的作用域都是程序的一个区域,其中已定义的变量可以存在,超出该区域则无法访问该变量。在 Pascal 编程语言中可以在三个地方声明变量 -
在子程序或块中称为局部变量
在所有子程序之外称为全局变量
子程序中参数的定义称为形式参数
让我们解释一下什么是局部变量、全局变量以及形式参数。
局部变量
在子程序或块内声明的变量称为局部变量。它们只能由该子程序或代码块内的语句使用。局部变量对其自身之外的子程序来说是未知的。以下是使用局部变量的示例。这里,所有变量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 exlocal value of a = 100 b = 200 c = 300 Within the procedure display value of a = 10 b = 20 c = 30
全局变量
全局变量在函数外部定义,通常在程序顶部。全局变量将在程序的整个生命周期中保持其值,并且可以在为程序定义的任何函数内访问它们。
全局变量可以被任何函数访问。也就是说,全局变量在声明后即可在整个程序中使用。以下是使用全局变量和局部变量的示例-
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 exlocal value of a = 100 b = 200 c = 300 Within the procedure display Displaying the global variables a, b, and c value of a = 30 b = 40 c = 70 Displaying the local variables x, y, and z value of x = 10 y = 20 z = 30
请注意,程序 display 可以访问变量 a、b 和 c,它们是与 display 相关的全局变量以及它自己的局部变量。程序中的局部变量和全局变量可以具有相同的名称,但函数内的局部变量的值将优先。
让我们稍微改变一下前面的例子,现在过程显示的局部变量与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 exlocal value of a = 100 b = 200 c = 300 Within the procedure display Displaying the global variables a, b, and c value of a = 10 b = 20 c = 30 Displaying the local variables a, b, and c value of a = 10 b = 20 c = 30