Ссылки на описания модуля


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

В том случае, если имена переменных и функций в интерфейсной части модуля и в программе, использующей этот модуль, совпадают, то действует следующее правила видимости имен:

- интерфейсные идентификаторы модулей, указанных в списке USES других модулей (т.е. используемых в других модулях), образуют самый внешний блок программы;

- интерфейсные элементы модулей, использующих с помощью USES другие модули, образуют блок, вложенный в первый блок, и т.д.

- самый внутренний блок – программа, использующая модули.

Например:

Program P; Uses A; … end. Unit A; Interface Uses B; … end. Unit B; Interface … end.

то вложенность блоков будет иметь вид:

  интерфейсные идентификаторы модуля B
секции инициализации будут выполняться в следующем порядке: вначале В, потом А

  интерфейсные идентификаторы модуля A
интерфейсные идентификаторы программы

 
     

Пример показывает:

- из программы видно то, что и в А, и в В;

- из А видно то, что в В, но не видно то, что в программе;.

- из В не видно того, что в А и не видно того, что в программе.

Таким образом, при совпадении имени (идентификатора) в программе и модулях A и B, обращение в программе будет происходить к переменной, описанной в программе (действует старое правило видимости переменных в Паскале – локальная переменная перекрывает видимость глобальной).

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

unit A; interface uses B; var K: Integer; implementation ................ end. unit B; interface var K: String; ................ end.  

В модуле А локальная (для него) переменная K будет перекрывать область видимости глобальной переменной К (из модуля B).

Пусть программа Р, использующая этот модуль, также содержит переменную К. Для того, чтобы в программе P иметь доступ к переменной K из модуля A, необходимо задать составное имя вида <имя модуля>.К:

Program P;

uses A;

var

K: Char;

begin

k :='a'; { обращение к переменной К из программы }

A.k:=25; { обращение к переменной К из модуля А}

B.k:=’25’; { обращение к переменной К из модуля B}

end.

Следует отметить, что имя модуля (в составном имени?) может предшествовать любому идентификатору: константе, типу данных, переменной или подпрограмме.

 



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


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

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

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

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