Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Delphi_Ч1.doc
Скачиваний:
7
Добавлен:
02.11.2018
Размер:
2.38 Mб
Скачать

Размещение подпрограмм в других модулях

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

Мы уже видели, что часто используемые алгебраические и тригонометрические функции описаны в модуле System, другие математические процедуры описаны в модуле Math.

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

Размещение подпрограмм внутри других подпрограмм

Как уже упоминалось выше, в разделе описаний подпрограммы могут быть описаны другие подпрограммы. Такие подпрограммы называются внутренними по отношению к подпрограмме, в которой они описаны. Сама процедура, по отношению к внутренним подпрограммам называется внешней.

      1. Область действия имен

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

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

Если имя объявлено в разделе implementation модуля, то оно доступно только процедурам и функциям данного модуля.

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

Рисунок 3.22 – Вложенные процедуры

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

На рисунке 3.2 схематично показаны три процедуры. Процедура «с» описана в процедуре «b», которая, в свою очередь, описана в процедуре «а». Переменная «i», объявленная в процедуре «b», доступна и в процедуре «c», но недоступна (невидима) в процедуре «a».

Реализация проекта «Процедуры и функции»

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

Откройте новый проект. Удалите появившуюся форму и загрузите в проект модуль формы из проекта для предыдущей работы. Переименуйте модуль, дав ему имя, например UnitSubroutine. Слово Subroutine переводится с английского языка как подпрограмма. Теперь можно работать с этим модулем как с новым.

Форму переименуйте и назовите frmSubroutine. В заголовке напишите текст «Процедуры и функции».

Форма должна иметь вид подобный форме, изображенной на рисунке 3.3, но соответствовать варианту задания, выполненного в предыдущей работе.

Рисунок 3.23 – Интерфейс проекта «Процедуры и функции»