Исполнительная часть модуля
Исполнительная часть включает подпрограммы модуля. Она также может включать локальные метки, константы, типы и переменные.
Исполнительная часть начинается, словом implementation. Затем после слова uses указываются имена модулей, которые используются подпрограммами данной исполнительной части (этот раздел необязателен). Если какой-то модуль уже указан в интерфейсе модуля, то в исполнительной части его повторять не следует. Далее могут быть: разделы объявления меток, объявления локальных констант, объявления локальных типов, объявления локальных переменных. Затем идут описания подпрограмм модуля.
Cекция инициализации
В некоторых случаях перед обращением к модулю следует провести его инициализацию (например, установить связь с теми или иными файлами с помощью процедуры Assign). Необходимые действия можно выполнить в секции инициализации модуля. Эта секция начинается, словом begin, после которого идут исполняемые операторы, а затем помещается слово end.
Операторы секции инициализации выполняются единственный раз в момент запуска программы.
Если инициализация модуля не нужна, то в секции помещается лишь слово end.
Пример
Модуль, содержащий средства работы с комплексными числами:
unit Cmp;
interface
туре
Complex=record{способ представления}
Re,Im:real {комплексных чисел}
end;
{Заголовки процедур, реализуют операции над комплексными числами}
procedure InitC (c:Complex;R,I:real);
procedure AddC (c1,c2:Complex;var R:Complex);
procedure MaltC (c1,c2:Complex;var R:Complex);
procedure DivC (c1,c2:Complex;var R:Complex);
procedure WriteC(c:Complex);
implementation
{полные описания процедур (с сокращенными заголовками)}
procedure InitC;
begin
with c do
begin
Re:=R;
Im:=I;
end;
end;
procedure AddC;
begin
with R do
begin
Re:=c1.Re+c2.Re;
Im:=c1.Im+c2.Im;
end;
end;
procedure MaltC;
begin
with R do
begin
Re:=c1.Re*c2.Re+c1.Im*c2.Im;
Im:=c1.Im*c2.Re+c1.Re*c2.Im;
end;
end;
procedure DivC;
var
Tmp:real;
begin
with c2 do Tmp:=Re*Re+Im*Im;
with R do
begin
Re:=(c1.Re*c2.Re+c1.Im*c2.Im)/Tmp;
Im:=(c2.Re*c1.Re+c1.Re*c2.Im)/Tmp;
end
end;
procedure WriteC;
begin
with c do
begin
write(Re);
if Im=0 then exit;
if Im<>0 then write('+');
write(Im);
write('i');
end;
end;
end.
Дата добавления: 2015-01-13; просмотров: 718;