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

 

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

Все объекты, описанные в вызывающей программе, называются глобальными. Память под глобальные переменные выделяется при компиляции программы. Эта часть памяти называется сегментом данных. Глобальные переменные находятся в сегменте данных от начала и до конца выполнения программы, поэтому ими можно пользоваться и в программе, и во всех процедурах, к которым обращается программа.

Следует знать:

­ Обмен данными между программой и вызываемой ею процедурой может производиться и через глобальные переменные;

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

Например, рассмотрим программу:

 

var a, b, c, d: integer;

procedure p(x: integer; var y: integer);

var

c: integer;

begin

c:= 1; d:= 1; x:= 1; y:= 1;

writeln(x:3, y:3, c:3, d:3);

end;

begin

a:= 0; b:= 0; c:= 0; d:= 0;

p(a,b);

writeln(a:3, b:3, c:3, d:3);

end.

 

При выполнении программа напечатает:

1 1 1 1

0 1 0 1

х – формальный параметр-значение, которому соответствует фактический параметр а = 0. В процедуре его значение изменится на 1, после чего результат будет напечатан. На переменной а это никак не отразится, и после выполнения процедуры а по-прежнему будет равно 0. у – параметр-переменная, поэтому при выполнении процедуры вместо у действия будут проводиться с переменной b, которая получит значение 1. это значение сохранится и после выхода из процедуры. с – локальная для данной процедуры переменная, которая маскирует глобальную переменную с основной программы. d – глобальная переменная, имеющая одинаковый смысл, как в основной программе, так и в процедуре.

В ТР допускается любой уровень вложенности процедур и функций. Процедура, описанная в основной программе, может иметь описания внутренних процедур и функций.

 








Дата добавления: 2017-11-04; просмотров: 424;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.