
- •Модули
- •Общие положения
- •Модуль — это подключаемая к программе
- •Модули можно разделить на:
- •Состав модуля
- •Структура модуля
- •Название модуля
- •Секция внешних связей
- •Секция реализации
- •Секция инициализации
- •Секция инициализации
- •Пример модуля
- •Использование модуля
- •Использование модуля
- •Пример структуры модульной программы
- •Таблица доступности переменных
- •Последовательность подключения модулей соответствует обратному обходу орграфа связей
- •Сохранение скомпилированного модуля
- •Компиляция модулей
- •Стандартные модули Паскаля
- •Стандартные модули Паскаля
- •Модуль System
- •Модуль Crt
- •Модули Dos и WinDos
- •Модуль Graph
- •Модули Printer и Winprn
- •Модуль Strings

Модули
1

Общие положения
Подпрограмма — это фрагмент кода, к которому можно обратиться по имени
Логические законченные части программы оформляются в виде подпрограмм
Подпрограмма записывается один раз, а вызываться может столько раз, сколько необходимо
Одна и та же подпрограмма может обрабатывать различные данные, переданные ей в качестве параметров.
Модуль - это часть программы, компилируемый
отдельно от остальных ее частей. Именно |
|
возможность раздельной компиляции и является |
|
основным преимуществом модулей. |
2 |
|

Модуль — это подключаемая к программе
библиотека ресурсов. Он может содержать описания типов, констант, переменных и подпрограмм. В модуль обычно объединяют связанные между собой ресурсы: например, в составе оболочки есть модуль Graph для работы с экраном в графическом режиме.
Модули применяются как библиотеки, которые могут использоваться различными программами, а также для разбиения сложной программы на составные части (по функциональному назначению).
Модуль - это программа, которая имеет специальную структуру, содержит свои внутренние описания и исполнительную часть, но сама организация работы модуля может быть скрытой, поскольку модуль распределяется на отдельные части, не все из которых являются доступными для пользователя.
3

Модули можно разделить на:
-стандартные, которые входят в состав
системы программирования (System,
Crt,Dos и WinDos,Graph,Strings,Printer и Winprn);
- пользовательские, то есть создаваемые программистом.
Чтобы подключить модуль к программе, его требуется предварительно скомпилировать. Результат компиляции каждого модуля хранится на диске в отдельном файле с расширением .tpu.
4

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

Структура модуля
unit имя; |
{ заголовок модуля } |
interface
{интерфейсная секция модуля или секция внешних связей}
{описание глобальных элементов модуля (видимых извне) }
implementation
{секция реализации модуля }
{описание локальных (внутренних) элементов модуля }
begin
{ секция инициализации } { может отсутствовать }
end.
6

Название модуля
Заголовок модуля (unit <имя_модуля>;) обязан присутствовать всегда.
Имя модулям и имя файлам, содержащего исходный текст модуля имеют одинаковые имена.
Например:
модуль с именем modul_1 хранится в файле с именем modul_1.pas, и т.п.
7

Секция внешних связей
Эта секция содержит объявления тех типов данных, констант, переменных, подпрограмм и т.п., которые должны быть видны вне модуля.
interface
[uses список_вспомогательных_модулей>;] [const <список_внешних_констант>;]
[type <список_внешних_типов_данных>;] [var <список_внешних_переменных>;] [procedure <объявление_внешней_процедуры>;] [function <объявление_внешней_функции>;]
Всекциях связей не допускается рекурсивное использование модулями друг друга.
8

Секция реализации
implementation
[uses <список_вспомогательных_модулей>;] [const <список_внутренних_констант>;] [type <список_внутренних_типов_данных>;] [var <список_внутренних_переменных>;] [procedure <описание_внешней_процедуры>;]
[function
<описание_внешней_функции>;] [procedure
<объявление_и_описание_внутренней_процедуры>;]
[function
<объявление_и_описание_внутренней_функции>;]
В секциях реализации допускается рекурсивное использование модулями друг друга.
9

Секция инициализации
|
Секция инициализации предназначена |
|
для присваивания начальных значений |
|
переменным, используемым в модуле или в |
|
программе, к которой он подключен. |
|
Операторы, расположенные в секции |
|
инициализации модуля, выполняются перед |
|
операторами основной программы. Если к |
|
программе подключено более одного |
|
модуля, их секции инициализации |
|
вызываются на выполнение в порядке, |
|
указанном в операторе uses. |
10