Паскаль - переменная область видимости
Область видимости в любом программировании - это область программы, в которой может существовать определенная переменная, и за пределами этой переменной нет доступа. Есть три места, где переменные могут быть объявлены на языке программирования Паскаль:
Внутри подпрограммы или блока, который называется локальными переменными
Вне всех подпрограмм, которые называются глобальными переменными
При определении параметров подпрограммы, которые называются формальными параметрами
Поясним, что такое local и global переменные и формальные параметры.
Локальные переменные
Переменные, объявленные внутри подпрограммы или блока, называются локальными переменными. Они могут использоваться только операторами, которые находятся внутри этой подпрограммы или блока кода. Локальные переменные неизвестны подпрограммам за пределами их собственных. Ниже приведен пример использования локальных переменных. Здесь все переменные 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
Глобальные переменные
Глобальные переменные определяются вне функции, обычно поверх программы. Глобальные переменные будут сохранять свое значение на протяжении всего жизненного цикла вашей программы, и к ним можно будет получить доступ внутри любой из функций, определенных для программы.
А globalДоступ к переменной может получить любая функция. То есть глобальная переменная доступна для использования во всей программе после ее объявления. Ниже приведен пример использованияglobal и local переменные -
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
Обратите внимание, что отображение процедуры имеет доступ к переменным 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 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