Модули в ТП

Структура модуля


Модуль можно разделить на несколько разделов: заголовок, интерфейсная часть, реализационная (исполняемая) часть, инициализационная часть.

Заголовок модуля

Unit <имя модуля>

Интерфейсная часть

Interface {начало раздела объявлений}
uses {используемые при объявлении модули}
label {подраздел объявления доступных глобальных меток}
const {подраздел объявления доступных глобальных констант}
type {подраздел объявления доступных глобальных типов}
var {подраздел объявления доступных глобальных переменных}
procedure {заголовки доступных процедур}
function {заголовки доступных функций}

Исполняемая часть

Implementation {начало раздела реализации}
uses {используемые при реализации модули}
label {подраздел объявления скрытых глобальных меток}
const {подраздел объявления скрытых глобальных констант}
type {подраздел объявления скрытых глобальных типов}
var {подраздел объявления скрытых глобальных переменных}
procedure {тела доступных и скрытых процедур}
function {тела доступных и скрытых функций}

Инициирующая часть

Begin {основной блок модуля}
End.

Заголовок модуля

Заголовок модуля состоит из зарезервированного слова Unit и имени модуля, которое должно совпадать с именем файла, куда помещается исходный текст модуля.

Например, имеется модуль с заголовком unit mymodul; Тогда исходный файл должен называться mymodul.pas.

Имя модуля служит для его связи с другими модулями и основной программой. Это связь устанавливается следующим образом:

Uses <список модулей>

Пример: Uses crt, graph, mymodul;

Интерфейсная часть

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

Пример 1.

unit snow;
interface
uses graph;
var gd,gm:integer;
procedure show_sneg(x,y,color,razmer:integer);

Если теперь в основной программе написать предложение

Uses snow;
то в программе станут доступными модуль graph и две переменные– gd и gm и процедура show_sneg из модуля snow.tpu.

Исполняемая часть

Здесь описываются процедуры и функции, объявленные в интерфейсной части. Описанию подпрограммы, объявленной в интерфейсной части модуля, должен предшествовать заголовок, в котором можно опускать список формальных переменных (и тип результата для функции), так как они уже описаны в интерфейсной части.

Пример 2.Если имеется описание интерфейсной части как в примере 1, то процедура в исполняемой части может быть описана следующим образом:

procedure show_sneg; { или полностью procedure show_sneg (x,y,color,razmer:integer);}
begin
setcolor(color);
line(x-razmer,y,x+razmer,y);
line(x,y-razmer,x,y+razmer);
line(x-round(razmer/2),y-round(razmer/2),x+round(razmer/2),y+round(razmer/2));
line(x+round(razmer/2),y-round(razmer/2),x-round(razmer/2),y+round(razmer/2));
end;

Так же, как и внутри обычной программы, здесь можно определить глобальные (для модуля) переменные, типы данных и константы.

Инициирующая часть

Здесь размещаются исполняемые операторы, содержащие некоторый фрагмент программы. Эти операторы исполняются до передачи управления основной программе и обычно используются для подготовки ее работы. Например, в них могут инициироваться переменные, открываться нужные файлы и т.п.

Пример 3.

А)
{Начало инициирующей части}
begin
assign(F, ‘output.txt’);
rewrite(F);
{Конец инициирующей части}
end.

В)
begin
gd:=detect; initgraph(gd,gm,' ');
{инициализация графического режим}
end.

Инициирующая часть может отсутствовать вместе с ее начинающим словом begin или быть пустой – тогда за begin сразу пишется end. (Не рекомендуется делать инициирующую часть пустой, лучше ее опустить)


Назад

Далее