Объекты подпрограммы (то, над чем выполняются действия).


Объекты подпрограммы делятся на параметры (делятся на аргументы и результаты) и переменные (делятся на локальные и глобальные).

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

Переменные - это объекты, которые перечисляются в секции описания переменных:

- или в секции описания переменных в данной подпрограмме (локальные переменные);

- или в секции описания переменных во внешнем блоке по отношению к данному (глобальные).

Объекты алгоритма делятся на глобальные и локальные.

Локальные объекты - это объекты, которые описаны в данном блоке. Это параметры из заголовка данного блока и переменные, описанные в данном блоке.

Глобальные объекты - это объекты, которые описаны во внешнем блоке ( в охватывающем).

На рисунке из п. 18.2 (см. выше) для блока 3 параметров нет вообще. Все перемененные, описанные в нем самом (в блоке 3), являются локальными для данного блока. Глобальными для него являются переменные, которые описаны в охватывающих блоках, т.е. в блоках 1 и 2.

Для блока 2 локальные объекты – x,y,z, описанные в нем самом, а глобальные - те переменные, которые описаны в блоке 1 – это a,b,c,L (real).

Для объектов подпрограммы различают область видимости и время жизни.

Время жизни - это интервал времени выполнения программы, в течение которого объект подпрограммы существует, т.е. сохраняет свое значение (место в памяти), даже, если он временно невидим (и к нему нельзя обратиться по имени).

Объект "начинает свою жизнь" обычно с начала выполнения соответствующего блока, т.е. того блока, где он описан (где под него выделена память), и, как правило, завершает свое существование по окончании этого же блока. В зависимости от величины времени жизни различают 3 вида объектов - статические (существуют все время, пока выполняется программа), автоматические (существуют, пока выполняется блок), динамические (существуют, пока под них программистом динамически выделена память).

Есть еще т.н. статические локальные переменные, у которых время жизни глобальное, а область видимости - локальная. На Паскале статические локальные переменные - это локальные типизированные константы:

procedure p(...);

Const

a:integer = 5; //статическая локальная переменная

begin ... end;

Инициализация таких переменных происходит только один раз (при первом вызове подпрограммы), а дальше они сохраняют свои значения от вызова к вызову. Этим можно пользоваться, например, для подсчета количества вызовов подпрограммы.

Область видимости (действия) - это часть текста программы, в которой объект, как говорят, "виден", т.е. для него известно имя и тип (в пределах области видимости возможен корректный доступ к памяти с использованием имени объекта). Видимыми в данном блоке считаются те объекты, которые описаны в данном блоке или в блоках, его охватывающих. То, что описано ниже данного блока (по уровню вложенности), считается невидимым в данном блоке.

локальная

В рассмотренном примере в блоке 3 видны: i, j, k, L, x, y, z, a, b, c.

В блоке 2 видны: x, y, z (в нем описанные), a, b, c, L, (описанные в охватывающем блоке).

глобальная

В блоке 2 будут не видны те переменные, которые описаны в блоке 3.

Примечание: В блоке 3 переменная L будет видна как целая, а в блоке 2 - как вещественная.

Область видимости и время жизни не совпадают для глобальных переменных: переменная может «жить», но стать временно невидима.



Дата добавления: 2016-05-28; просмотров: 1849;


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

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.