27. Модули

 Модуль (UNIT) в TURBO PASCAL - это особым образом оформленная биб-

лиотека подпрограмм. Модуль в отличие от программы не может быть за-

пущен на выполнение самостоятельно,  он может только участвовать в

построении программ и других модулей.

 Модули позволяют создавать личные библиотеки процедур и функций и

строить программы практически любого размера.

 Модуль в TURBO PASCAL представляет собой отдельно хранимую и неза-

висимо компилируемую программную единицу.

 В общем случае модуль - это совокупность  программных ресурсов,

предназначенных для использования другими программами. Под программ-

ными ресурсами понимаются любые элементы языка TURBO PASCAL: констан-

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

выполняемой программой, его элементы используются другими программны-

ми единицами.

 Все программные элементы модуля можно разбить на две части:

 - программные элементы, предназначенные для использования другими

программами или модулями, такие элементы называют видимыми вне моду-

ля;

 - программные элементы, необходимые только для работы самого моду-

ля, их называют невидимыми или скрытыми.

 В соответствии с этим модуль, кроме заголовка, содержит две основ-

ные части, называемые интерфейсом и реализацией.

 В общем случае модуль имеет следующую структуру:

 

 unit <имя модуля>; {заголовок модуля}

 

 interface

 { описание видимых программных элементов модуля }

 

 { описание скрытых программных элементов модуля }

 

 begin

 { операторы инициализации элементов модуля }

 end.

 

 В частном случае модуль может не содержать части реализации и час-

ти инициализации, тогда структура модуля будет такой:

 

 unit <имя модуля>; {заголовок модуля}

 

 interface

 { описание видимых программных элементов модуля }

 

 implementation

 

 end.

 

 Использование в модулях процедур и функций имеет свои особенности.

Заголовок подпрограммы содержит все сведения,  необходимые для ее вы-

зова: имя, перечень и тип параметров, тип результата для функций, эта

информация должна быть доступна для других программ и модулей. С дру-

гой стороны, текст подпрограммы, реализующий ее алгоритм, другими

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

процедур и функций помещают в интерфейсную часть модуля, а текст - в

часть реализации.

 Интерфейсная часть модуля содержит только видимые (доступные для

других программ и модулей)  заголовки процедур и функций (без служеб-

ного слова  forward). Полный текст процедуры или функции помещают в

часть реализации, причем заголовок может не содержать список формаль-

ных параметров.

 Исходный текст модуля должен быть откомпилирован с помощью дирек-

тивы Make  подменю Compile и записан на диск. Результатом компиляции

модуля является файл с расширением .TPU (Turbo Pascal Unit). Основное

имя модуля берется из заголовка модуля.

 Для подключения модуля к программе необходимо указать его имя в

разделе описания модулей, например:

 

 uses CRT, Graph;

 

 В том случае, если имена переменных в интерфейсной части модуля и

в программе,  использующей этот модуль, совпадают, обращение будет

происходить к переменной, описанной в программе. Для обращения к пе-

ременной, описанной  в модуле, необходимо применить составное имя,

состоящее из имени модуля и имени переменной, разделенных точкой.

 Например, пусть имеется модуль, в котором описана переменная К:

 

 unit M;

 interface

 var K: Integer;

 implementation

 .................

 end.

 

 Пусть программа, использующая этот модуль, также содержит перемен-

ную К:

 

 Program P;

  uses M;

 var K: Char;

 begin

 .............

 end.

 

 Для того, чтобы в программе P иметь доступ к переменной K из моду-

ля M, необходимо задать составное имя M.K.

 Использование составных имен применяется не только к именам пере-

менных, а ко всем именам, описанным в интерфейсной части модуля.

 Рекурсивное использование модулей запрещено.

 Если в модуле имеется раздел инициализации,  то операторы из этого

раздела будут выполнены перед началом выполнения программы, в которой

используется этот модуль.

Электротехника курсовые, лабораторные, практика Математика, физика