- •Лабораторная работа № 2 Модули
- •Теоретическая часть
- •Что такое модуль?
- •Структура модуля
- •Интерфейсная секция
- •Секция реализации
- •Секция инициализации
- •Как используются модули?
- •Ссылки на описания модуля
- •Оператор uses секции реализации
- •Создание ваших собственных модулей
- •Компиляция модуля
- •Практическая часть
- •Задания
Секция реализации
Секция реализации - "приватная" часть - начинается зарезервированным словом implementation. Все, что описано в секции интерфейса, является видимым в секции реализации: константы, типы, переменные, процедуры и функции. Кроме того, в секции реализации могут быть свои дополнительные описания, которые не являются видимыми для программ, использующих этот модуль. Программа не знает об их существовании и не может ссылаться на них или обращаться к ним. Однако, эти скрытые элементы могут использоваться (и, как правило, используются) "видимыми" процедурами и функциями, то есть теми подпрограммами, чьи заголовки указаны в секции интерфейса.
Оператор uses может содержаться в секции реализации (implementation) и должен непосредственно следовать за ключевым словом implementation.
Обычные процедуры и функции, описанные в интерфейсной секции, то есть те из них, которые не являются подставляемыми (inline), должны повторно указываются в секции реализации. Заголовок procedure/function должен быть или идентичным тому, который указан в секции интерфейса, или иметь более краткую форму. В случае краткой формы наберите ключевое слово (procedure или function), а за ним укажите имя подпрограммы (идентификатор). Затем подпрограмма должна содержать все свои локальные описания (метки, константы, типы, переменные и вложенные процедуры и функции), за которыми должно находиться основное тело самой подпрограммы. Пусть в интерфейсной части указаны следующие описания:
procedure ISwap(var V1,V2 : integer);
function IMax(V1,V2 : integer) : integer;
Тогда Секция реализации будет иметь следующий вид:
procedure ISwap;
var Temp := integer;
begin
Temp := V1; V1 := V2; V2 := Temp
end; {конец процедуры Swap}
function IMax(V1,V2 : integer) : integer;
begin
if V1 > V2
then IMax := V1
else IMax := V2
end; { конец функции Max }
Подпрограммы, локальные для секции реализации (то есть не описанные в секции реализации), должны иметь полный (несокращенный) заголовок procedure/function.
Секция инициализации
Обычно вся секция реализации модуля заключена между зарезервированными словами implementation и end. Однако если перед end поместить зарезервированное слово begin, а между ними - операторы, то получившийся составной оператор, очень похожий на основное тело программы, становится секцией инициализации модуля (initialization).
Секция инициализации представляет собой место, где инициализируются структуры данных (переменных), которые использует программный модуль или которые он делает доступными программе, использующей данный модуль. Вы можете использовать эту секцию для открытия файлов, которые программа использует позднее.
При выполнении программы, использующей некоторый модуль, секция инициализации этого модуля вызывается перед запуском основного тела программы. Если программа использует более одного модуля, то секции инициализации всех модулей вызываются (в порядке, указанном в операторе uses в программе) перед тем, как выполнить основное тело программы.
