Учебники

Паскаль — переменная область

Область действия в любом программировании — это область программы, в которой может существовать определенная переменная, и за пределами этой переменной нет доступа. Есть три места, где переменные могут быть объявлены на языке программирования Pascal —

  • Внутри подпрограммы или блока, который называется локальными переменными

  • За пределами всех подпрограмм, которые называются глобальными переменными

  • При определении параметров подпрограммы, которая называется формальными параметрами

Внутри подпрограммы или блока, который называется локальными переменными

За пределами всех подпрограмм, которые называются глобальными переменными

При определении параметров подпрограммы, которая называется формальными параметрами

Поясним, что такое локальные и глобальные переменные и формальные параметры.

Локальные переменные

Переменные, которые объявлены внутри подпрограммы или блока, называются локальными переменными. Они могут использоваться только операторами, которые находятся внутри этой подпрограммы или блока кода. Локальные переменные не известны подпрограммам вне их собственных. Ниже приведен пример использования локальных переменных. Здесь все переменные a , b и c являются локальными для программы с именем exLocal .

Live Demo

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 .

Live Demo

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

Глобальные переменные

Глобальные переменные определяются вне функции, обычно в верхней части программы. Глобальные переменные будут сохранять свое значение на протяжении всего жизненного цикла вашей программы, и к ним можно получить доступ в любой из функций, определенных для программы.

Глобальная переменная может быть доступна любой функции. То есть глобальная переменная доступна для использования во всей вашей программе после ее объявления. Ниже приведен пример использования глобальных и локальных переменных:

Live Demo

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, которые являются глобальными переменными по отношению к отображению, а также к своим собственным локальным переменным. Программа может иметь одинаковые имена для локальных и глобальных переменных, но предпочтение будет отдаваться значению локальной переменной внутри функции.

Давайте немного изменим предыдущий пример, теперь локальные переменные для отображения процедуры имеют те же имена, что и a , b , c

Live Demo

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.

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —