Введение в программирование - Учебное пособие (Корочкин А. В.)

14.1 зона и область действия описания

Правила видимости ( visibility rules ) основываются в языке на понятиях зоны описания и области действия описания.

Зона описания ( region declarative) - часть текста программы, внутри которой имеется :

•   любое описание, отличное от описания перечисления;

•   оператор блока;

•   оператор цикла;

•   оператор принятия (accept);

•   обработчик исключений.

Зона описания  может включать также дополнительно следую-щее:

•   если в зоне описания имеется след тела, то - соответствующее тело;

•   если в зоне описания имеется описание типа записи, то - соот­ветствующий контекст представления записи;

•   если в зоне описания имеется описание библиотечного модуля, то -описания всех его дочерних модулей ;

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

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

Е

170

Ада 95. Введение в программирование

Описание находится непосредственно в описательной части, если его зона описания есть внутренняя зона описания, то есть является вложенной.

Локальное описание находится непосредственно внутри зоны опи­сания. Глобальное описание находится внутри другого описания, яв­ляющимся внешним по отношению к рассматриваемому. Например, зона описания библиотечного пакета Standard содержит гло­бальные описания, так как этот пакет является внешним для всех би­блиотечных модулей.

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

Область действия описания ( scope of declarations ) - часть текста программы, где и только где имеют силу описания : обьявленные описания идентификатора, символьного литерала, знака операции.

Область действия описания, находящегося непосредственно в зоне описания, распространяется от начала описания до конца зоны. Этот раздел называется непосредственной областью действия описания. Для перечисленных ниже описаний область действия распространяет-ся за пределы непосредственной области действия:

•   описание в видимом разделе описания пакета;

•   описание входа ;

•   описание компоненты ;

•   спецификация дискриминанта;

•   спецификация параметра;

•   описание параметра настройки.

Если отсутствует описание подпрограммы, то спецификация под­программы, заданная в теле подпрограммы или следе тела, действует как описание и распространяется как спецификация параметра в указанном выше списке описаний.

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

Область действия всегда содержит непосредственную область дей­ствия. В дополнение для данного описания, которое имеет место непо-

 

171

Глава 14.   Правила видимости

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

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