При описании процедур и функций в исполнительной части допустимо записывать их сокращенные заголовки (без перечисления формальных параметров). Если же здесь записываются полные заголовки, они должны быть полностью идентичны заголовкам в интерфейсной части.
Секция инициализации.
В некоторых случаях перед обращением к модулю следует провести его инициализацию (например, установить связи с теми или иными файлами с помощью процедуры Assign, инициализировать какие-то переменные и т.д.). Необходимые действия можно выполнить в секции инициализации модуля. Эта секция начинается словом begin, после которого идут исполняемые операторы, а заканчивается словом end. (с точкой), например:
Begin
C:=5; P:=3.14
End.
Следует иметь в виду, что операторы секции инициализации выполняются единственный раз в момент запуска программы.
Если инициализация модуля не нужна, то в секции помещается лишь слово end. (с точкой).
Использование модуля в основной программе.
Чтобы использовать подпрограммы, константы, типы, переменные, описанные в интерфейсе модуля, в основной программе следует поместить раздел объявления используемых модулей. Раздел состоит из одного предложения и начинается зарезервированным словом USES, после которого через запятую указываются имена модулей. После этого в основной программе можно использовать идентификаторы, указанные в интерфейсах перечисленных модулей.
Пример: Программа, меняющая в массиве максимальное и минимальное числа.
program Primer1; {Заголовок программы}
uses Unit1,Unit2; {Используемые модули}
var i: integer;
begin
Change(Arr); {Процедура замены в Unit1, массив Arr - в Unit2}
for i:=1 to N do {N - в Unit2}
writeln(Arr[i])
end.
{Модули, расположенные в других файлах}
unit Unit1; {Модуль с основной подпрограммой}
interface {Интерфейс первого модуля}
uses Unit2; {Использование модуля с параметрами}
procedure Change(var Arr: Mass); {Заголовок процедуры}
implementation {Исполнительная часть}
uses Unit3; {Использование модуля со вспомогательной процедурой}
procedure Change; {Сокращенный заголовок}
var Max, Min, i: integer;
begin
Max:=1;
Min:=1;
for i:=1 to N do {N - в Unit2}
begin
if Arr[i]>Arr[Max] then Max:=i;
if Arr[i]<Arr[Min] then Min:=i
end;
Swap(Arr[Max], Arr[Min]) {Процедура обмена - вUnit3}
end;
end. {Конец модуля Unit1}
unit Unit2; {Модуль, содержащий параметры}
interface {Интерфейс второго модуля}
const N=5; {Число элементов массива}
type Mass=array[1..N] of real; {Тип массива}
const Arr: Mass=(0.5, -2.0, 1.0, 3.5, 7.0); {Типизированная константа}
implementation {Исполнительная часть - пустая}
end. {Конец модуля Unit2}
unit Unit3; {Модуль со вспомогательной подпрограммой}
interface {Интерфейс третьего модуля}
procedure Swap(var X,Y: real);
implementation {Исполнительная часть}
procedure Swap(var X,Y: real); {Процедура обмена двух чисел}
var Z: real;
begin
Z:=X; X:=Y; Y:=Z
end;
end. {Конец модуля Unit3}
Использование идентификаторов элементов модуля.
Как правило, идентификаторы объектов модуля используются в основной программе (или другом модуле) обычным образом. Однако может оказаться, что используемый идентификатор элемента модуля совпадает с идентификатором использующей его программы. Чтобы различить их, при обращении к элементу модуля используется его квалификатор, в качестве которого выступает имя модуля.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.