2. Створення і використання модулів

Якщо в деякій програмі використовуються власні процедури досить великого розміру, то ці процедури найкраще оформити у виді окремого модуля. Існує кілька причин для створення такого модуля.

По-перше, модуль може зберігатися як у вихідному виді в pas-файлі, так і у відкомпільованому файлі з розширенням tpu (Turbo Pascal Unit - модуль Турбо Паскаля). Тобто, усі процедури модуля не компілюються щораз при перекомпіляції основної програми, а просто їхній код, що міститься  в tpu-файлі, компонується з кодом основної програми. Це значно заощаджує час загальної компіляції задачі.

По-друге, винесення множини процедур в окремий модуль розвантажує текст основної програми від зайвої захаращеності, робить його більш компактного і зручним для розуміння.

По-третє, модулі з процедурами, що часто зустрічаються в різних програмах, заощаджують час при написанні нових програм. Для цього досить помістити потрібний tpu-файл у каталог з новим проектом, в основній програмі підключити цей модуль у рядку uses і далі просто використовувати процедури з цього модуля в тексті основної програми.

Структура  модуля схожа зі структурою звичайної  програми. Модуль містить заголовок, блок опису та блок реалізації (команд). Однак кожна складова за змістом відрізняється від відповідної складової програми.

Заголовок починається службовим словом Unit, після якого вказується ім’я модуля. Необхідно, щоб це ім’я співпадало з іменем дискового файлу, до якого буде записаний модуль.

Блок оголошень розпочинається службовим словом Interface , після якого оголошуються всі об’єкти, що будуть міститись в модулі: константи, типи даних, змінні, процедури і функції. При оголошення процедур та функцій задається лише їх заголовок. Тіло цих алгоритмів задається в іншому  місці модуля.

Блок реалізації розпочинається службовим словом Implementation , після якого задається тіло кожної оголошеної процедури. Запис процедури розпочинається із заголовка процедури, який  містить лише назву процедури. Список параметрів не задається. Порядок запису процедур в цьому блоці довільний. Завершується модуль службовим словом End.  . Наявність крапки в кінці службового слова обов’язкова.

Приклад. Загальний вид модуля.

Unit ім'я_модуля; {бажане ім'я=ім'я_файлу}

Interface {розділ оголошень}

Const  глобальні_константи;

Var глобальні_перемінні;

Procedure Ім'я1 (параметри);

Procedure Ім'я2 (параметри);

...

Procedure Имя (параметри);

Function Ім'я11 (параметри): тип;

...

Function Ім'я1N (параметри): тип;

Implementation {розділ реалізації};

Const  локальні_константи;

Var локальні_перемінні;

Procedure Ім'я1;

...

Begin

...

End;

Procedure Ім'я2;

...

Begin

...

End;

...

Function Ім'я11;

...

Begin

...

End;

...

End.

Приклад . Структура модуля, що включає дві процедури: додавання та множення цілих чисел.

Unit numbers;

Interface

Procedure sum(x,y:integer; var z:integer);

Procedure prod(x,y:integer; var z:integer);

Implementation

Procedure sum;

Begin

z:=x+y

End;

Procedure prod;

Begin

Z:=x*y

End;

End.

Модуль не виконується як звичайна програма, а компілюється в tpu-файл. Інтерфейсна частина модуля, що фактично відбиває його зміст, компілюється особливим чином, що дозволяє компіляторові надалі дуже швидко переглядати tpu-файли і знаходити потрібні процедури.

Приклад. Програма, що використовує створений модуль numbers.tpu.

Program example;

uses  numbers;{підключення модуля користувача}

var a,b,c,d:integer;

begin

readln(a,b);;

{використання процедур модуля}

sum(a,b,c);

prod(a,b,d);

writeln('c=',c:2,'  d=',d:2);

end.

При створенні власного модуля процедур та функцій потрібно врахувати те, самі процедури можуть містити помилки, і їх потрібно налагодити.  Оскільки використання модуля в програмі здійснюється у відкомпільованому вигляді, то редагування текстової частини модуля використовується pas-файл модуля, після чого здійснюється його повторна компіляція.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
25 26 27 28  Наверх ↑