Модуль — це оформлена за деякими правилами сукупність визначень типів, констант,
змінних та підпрограм. Спочатку складається текст модуля, потім він
компілюється і записується на диск у вигляді tpu-файла. Такий
файл неможливо виконати, як самостійну програму. Його використовують, як
допоміжний файл у процесі розробки головної програми.
Виділяють два напрямки вживання модулів. Перший – зв’язаний з формуванням
бібліотек підпрограм повністю готових до роботи. Це зручно в рамках будь-якої
технології програмування. Достатньо підключити модуль до програми і можна
використовувати його елементи в цій програмі.
Другий напрямок - конструювання програм великого розміру. В зв'язку з
сегментною організацією пам'яті персональних ЕОМ існують обмеження на розмір
програми (не більше як 64К). Очевидно, що цього замало для розв'язання реальних
виробничих задач.
Для виконання програми на Pascal в оперативній
пам'яті комп’ютера виділяється місце після пам'яті зайнятої системними
програмами MS-DOS. Вся доступна
пам'ять розподіляється на сегменти, в кожному з яких розміщується певна інформація.
В кодовому сегменті розміщена головна програма зі своїми підпрограмами. Всі
дані, описані в головній програмі, займають окремий сегмент даних. Кожен з
модулів, що підключається, також займає один сегмент (незалежно від того, чи є цe модуль
системної бібліотеки Turbo.tpl чи особистої
бібліотеки).
На етапі проектування великої програми треба розподілити всі підпрограми
між головною програмою та модулями. Частіше в модуль об’єднують логічно
зв'язані підпрограми, наприклад, всі додаткові процедури та функції для роботи
з рядками.
Структура модуля:
Unit ім'я; {заголовок модуля}
Interface
Інтерфейсна частина
Implementation
Тексти підпрограм
Begin
Блок ініціалізації модуля
End.
Ім'я модуля вибирається довільно, але воно повинно бути унікальним. Зразу
після заголовка розміщують слово Interface. В інтерфейсній
частині модуля розміщують оператор Uses, оператори
описування глобальних типів, констант, змінних, які будуть передані в програму
при підключенні модуля. Також, записують заголовки всіх підпрограм, які входять
до модулю.
У розділі Implementation приводяться
тексти всіх підпрограм у тій послідовності, в якій вони були описані в розділі Interface. В
заголовках підпрограм можна не вказувати списки параметрів. Перед підпрограмами
можуть бути описані локальні типи та змінні для свого блоку ініціалізації.
В блок ініціалізації звичайно включають оператори визначення початкових
значень, відкриття файлів, перевірки їх наявності тощо. Цей блок може бути
пустим, у такому разі не пишуть слово Begin.
Оператори з блоків ініціалізації всіх модулів виконуються на початку
роботи головної програми.
Приклад. Використання функції для обчислення ступеня.
Модуль:
Unit Math;
Interface
Function Step(a:real; b:real):real;
Implementation
Function Step:real;
Begin
If a<=0 then
Begin
Writeln( 'перевірте дані');
Halt(0);
End;
If b=0 then Step:=1 else
Step:=exp(b*ln(a));
End;
Begin
End.
Програма:
Uses
Math;
Var x,y,z : Real ;
Begin
Readln(x:y);
Z:=Step(x,y)+Step(y,x);
Writeln(x,y,z);
End.