Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Область видимости идентификаторов.






 

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

Область видимости (scope) идентификатора – множество операторов, в которых этот идентификатор может быть использован.

 

В Паскале идентификатор может быть использован в пределах < блока>, в котором он был объявлен. Максимальная область видимости идентификатора – это оператор BEGIN, размещенный внутри PROCEDURE или PROGRAM, содержащих объявление идентификатора. Например, для переменных объявленных в разделе объявлений программы это ее главный оператор BEGIN и операторы BEGIN всех процедур программы.

Однако область видимости может быть меньше, если существует вложенный блок, внутри которого объявлен идентификатор с тем же именем.

 

Многие сложности с областью видимости идентификаторов могут стать понятными, если мы рассмотрим пример.

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

 

идентификатор объявлен в A S A P B S B Q B R C P D Q D R P S Q P R S
PROGRAM S(INPUT, OUTPUT); VAR A, B: CHAR; PROCEDURE P(VAR C: CHAR); VAR A: CHAR; PROCEDURE Q(VAR D: CHAR); VAR B: CHAR; BEGIN {Q} ... END; {Q} BEGIN {P} ... END; {P} PROCEDURE R(VAR B: CHAR); VAR D: CHAR; BEGIN {R} ... END; {R} BEGIN {S} ... END. {S} | | |   | | | | | | | |     | | | | | | | |   | | | | |     | | |   | | |   | | | |     | | | | |     | | | | | | | | | |     | | | | |   | | | |     | | | | | | | | | | | | | | | | | |     | | | | |     | | | | | | | |

 

Отметим, что P может быть использован в P, Q, R и S, потому что он объявлен в S, все эти процедуры объявлены в S и ни одна из них не содержит нового объявления P. R не имеет такой же области видимости, как P только потому, что объявлен позднее. Идентификаторы в Паскале могут быть использованы только после того, как были объявлены. A и B, объявленные в S, скрываются в соответственно в P и Q. Идентификатор B, объявленный в S, виден за пределами объявлений в Q и R.

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

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

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.