{У розділі реалізації (Implementation) модуля перебувають тіла процедур і функцій,
оголошених в интерфейсной частини.
Розділ реалізації є часткам. Усі оголошення, зроблені тут можуть бути
видимі тільки усередині даного розділу модуля.
Усі константи, типи, змінні, процедури й функції, оголошені в
интерфейсной частини видимі в розділі реалізації.
У розділі реалізації можуть перебувати її власні додаткові оголошення,
невидимі будь-яким програмам, що використовують модуль.
Розділ Uses може перебувати в частині реалізації відразу після
зарезервованого слова Implementation.
Заголовок процедури/функції в розділі реалізації повинен бути ідентичний
оголошенню в розділі інтерфейсу}
begin
{звичайно "головна програма" модуля порожня. Тут можна давати початкові
значення даним модуля, відкривати використовувані їм файли, якщо такі є,
і т.п.}
end.
Для роботи з координатами крапок на площині створимо найпростіший модуль і викличемо його підпрограми його при написанні нової програми:
unit Points;
interface
type point = array [1..2] of real;
procedure put (var p:point;x,y:real);
function distance (p1,p2:point):real;
function corner (p1:point):integer;
implementation
procedure put (var p:point;x,y:real);
begin
p[1]:=x; p[2]:=y;
end;
function distance (p1,p2:point):real;
begin
distance:=sqrt(sqr(p1[1]-p2[1])+sqr(p1[2]-p2[2]));
end;
function corner (p1:point):integer;
begin
if p1[1]>0 then begin
if p1[2]>0 then corner:=1
else if p1[2]<0 then corner:=4
else corner:=0;
end
else if p1[1]<0 then begin
if p1[2]>0 then corner:=2
else if p1[2]<0 then corner:=3
else corner:=0;
end
else corner:=0;
end;
begin
end.
Наш модуль визначає тип даних Point (крапка) як масив з 2 дійсних чисел. Процедура put дозволяє задати для крапки значення x- і y-координати, функція distance повертає відстань між двома крапками, а функція corner – номер координатної чверті, у якій перебуває крапка, або 0, якщо крапка лежить на одній з осей координат. Зрозуміло, реальні модулі можуть включати сотні функцій, якщо предметна область, яку вони моделюють, досить складна. Тепер напишемо маленьку тестову програму, що використовує наш модуль:
uses Points;
var a,b:Point;
begin
put (a,1,1);
put(b,0,0);
writeln ('Відстань від A до B=',distance(a,b):8:3);
writeln ('Номер координатної чверті для A=',corner(a));
end.
Оператор uses, що підключає модуль, зазначений у першому рядку програми. Під час компіляції цієї програми в поточному каталозі повинен бути присутнім файл points.tpu, що містить створений раніше модуль Points.
При складанні складної програми Паскаль шукає модулі тільки в тих папках, які перераховані в поле введення Unit directories вікна Directories верхнього меню Options, тому всі готові модулі випливає або поміщати в одну із цих папок, або дописати в поле введення потрібні шляхи до папок. У Додатку 4 приводиться повний лістинг модуля для роботи з "мишею" із програми на Паскалі й тести для нього.