Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОЦЕДУРЫ И ФУНКЦИИ.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
349 Кб
Скачать
☆

Область действия (сфера видимости) идентификаторов при использовании процедур и функций

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

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

Заметим, что понятия "глобальные" и "локальные" следует понимать относительно — по отношению к конкретной процедуре или функции.

Продемонстрируем это следующим примером.

В данном примере АО,ВО,СО будут глобальными для всех процедур и функций, используемых в программе.

А1,В1.С1 будут глобальными для всех процедур и функций, описанных внутри процедуры Р1 (в данном примере для процедуры Р2), и одновременно локальными для самой процедуры Р1.

Данные А2, В2, С2, объявленные в самой внутренней процедуре Р2, будут только локальными.

Сформулируем правила определения области действия для идентифика­торов процедур и функций:

  • действуют все идентификаторы, определенные внутри процедуры/функции;

  • действуют все идентификаторы окружающего контекста, если их имена отличаются от имен, объявленных внутри процедуры/функции;

  • локальные идентификаторы процедуры/функции во внешнем окружении действовать не будут никогда;

  • в случае совпадения имен глобального и локального идентификаторов действовать будет только внутренний локальный идентификатор.

Если первых три правила поясняются рассмотренным примером, то для пояснения четвертого приведем еще один пример.

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

Локальные данные создаются при вызове процедуры/функции и сущест­вуют только во время ее выполнения. Выделение памяти для локальных данных происходит автоматически в начале выполнения процеду­ры/функции, а освобождение этой памяти — как только выполнение процедуры/функции заканчивается.

Операторы, расположенные в теле процедуры/функции могут обращаться к ее локальным данным (константам и переменным) и изменять их значения. Однако следует помнить, что значения локальных данных существуют пока процедура/функция работает.

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