Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Подключение других модулей к данному (модулю)



Программный модуль может использовать другие модули, для этого они определяются в операторе uses. Оператор в описании модуля uses (если он имеет место) может содержаться в двух местах (в вызывающем модуле).

Во-первых, он может следовать сразу после ключевого слова interface. В этом случае любые константы и типы данных, описанные в интерфейсной секции этих модулей, могут использоваться в любом месте (в любой из трёх секций) данного модуля и, следовательно, во всей основной программе так же.

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

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

Как только модуль включается в программу (через 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.

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

 

Пример создания модуля

Unit MyUnit; Interface Function f_ADD(x, y: real): real; Function f_MULT(x, y: real): real; Implementation Function f_ADD; Begin F_ADD: =x+y; End; Function f_ MULT; Begin F_ MULT: =x*y; End; End. Program p_unit; Uses MyUnit; Var a, b: real; begin a: =f_ADD(1.2, 3.4); b: =f_MULT(5.6, 7.8); … Writeln(‘a=’, a: 8: 2, ’b=’, b: 8: 2); end.

 

этот модуль надо записать в файл MyUnit.pas

 

Вопрос: что изменится (видимость чего и как изменится), если использовать функции (в модуле) без параметров, а переменные x и y объявить глобальными а) в программе или б) в модуле

 


Поделиться:



Популярное:

  1. A.16.15.5. Экран состояния модулей удаленного ввода-вывода (RIOM)
  2. VII. ЛЕКСИКА ДРУГИХ АКТУАЛЬНЫХ ТЕМАТИЧЕСКИХ ГРУПП
  3. Благовония других центров Тибета
  4. В Аллаха не иначе, как присоединяя к Нему других богов»
  5. В этом мире нет жертв и нет злодеев. И ты не являешься жертвой выбора других. На каком-то уровне вы все создали то, что сейчас ненавидите, а создав это — вы выбрали это.
  6. Взаимодействие популяций человека с популяциями других видов организмов
  7. Вместо того чтобы стараться ублажать других, наслаждайтесь жизнью
  8. Возможен повтор произведения с других фестивалей при условии, что состав группы изменился.
  9. ВОПРОС 2. ПРАВИЛА ПОВЕДЕНИЯ ВОЕННОСЛУЖАЩИХ В КАЗАРМЕ, В СТОЛОВОЙ, В КЛУБЕ И ДРУГИХ ОБЩЕСТВЕННЫХ МЕСТАХ В ВОЕННОМ ГОРОДКЕ. ПРАВИЛА ПОВЕДЕНИЯ СОЛДАТА ПРИ НАХОЖДЕНИИ ВНЕ РАСПОЛОЖЕНИЯ ЧАСТИ.
  10. Выводы для разведок мира и церковнослужителям других конфессий.
  11. Глава 8. Несколько слов о других искусствах
  12. Да не будет у тебя других богов пред лицом Моим (Исход 20:3).


Последнее изменение этой страницы: 2016-07-12; Просмотров: 456; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.017 с.)
Главная | Случайная страница | Обратная связь