Модуль (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.
Использование составных имен применяется не только к именам пере-
менных, а ко всем именам, описанным в интерфейсной части модуля.
Рекурсивное использование модулей запрещено.
Если в модуле имеется раздел инициализации, то операторы из этого
раздела будут выполнены перед началом выполнения программы, в которой
используется этот модуль.