Модульне програмування на Pascal: практичний приклад
08.03.2026Вступ: навіщо використовувати модулі в Pascal
Модулі (units) у Pascal дозволяють структурувати код, відокремлювати інтерфейс від реалізації та повторно використовувати компоненти в різних проєктах. Для розробників, які працюють зі складнішими програмами або з навчальними проєктами, модульний підхід знижує кількість помилок та полегшує тестування.
Коротко про переваги
- Чітке розділення функцій і даних між компонентами.
- Легше читати й підтримувати великий код.
- Можливість повторного використання модулів у нових проєктах.
- Прискорення компіляції при мінімальних змінах у великих кодових базах.
Структура модуля в Pascal
Типовий unit складається з секцій interface та implementation. У секції interface оголошуються типи, змінні, константи та сигнатури процедур і функцій, які будуть доступні зовні. У implementation розміщується код реалізації цих процедур і додаткові допоміжні елементи.
Приклад простого модуля
Нижче — приклад unit, який реалізує базові операції з масивом чисел: обчислення середнього, максима та підрахунок позитивних значень.
unit ArrayUtils;
interface
function Average(const A: array of Integer): Real;
function MaxValue(const A: array of Integer): Integer;
function CountPositive(const A: array of Integer): Integer;
implementation
function Average(const A: array of Integer): Real;
var
i, sum: Integer;
begin
sum := 0;
for i := Low(A) to High(A) do
sum := sum + A[i];
if Length(A) = 0 then
Result := 0
else
Result := sum / Length(A);
end;
function MaxValue(const A: array of Integer): Integer;
var
i: Integer;
begin
if Length(A) = 0 then
begin
Result := 0; // або інше значення за замовчуванням
Exit;
end;
Result := A[Low(A)];
for i := Low(A)+1 to High(A) do
if A[i] > Result then
Result := A[i];
end;
function CountPositive(const A: array of Integer): Integer;
var
i: Integer;
begin
Result := 0;
for i := Low(A) to High(A) do
if A[i] > 0 then
Inc(Result);
end;
end.
Головна програма, що використовує модуль
Після створення unit, у головній програмі потрібно підключити його через секцію uses. Ось простий приклад:
program TestArrayUtils;
uses
ArrayUtils;
var
data: array of Integer;
avg: Real;
begin
SetLength(data, 5);
data[0] := 3; data[1] := -1; data[2] := 7; data[3] := 0; data[4] := 4;
avg := Average(data);
Writeln('Average: ', avg:0:2);
Writeln('Max: ', MaxValue(data));
Writeln('Positive count: ', CountPositive(data));
end.
Компіляція та запуск
- Збережіть unit у файлі
ArrayUtils.pasі головну програму вTestArrayUtils.pas. - За допомогою Free Pascal (fpc) компілювання виглядає так:
fpc TestArrayUtils.pas. - Компілятор автоматично знайде і підключить unit, якщо він знаходиться в тій же директорії або в шляхах пошуку.
Поради для практичного використання модулів
- Чітко визначайте інтерфейс: оголошуйте лише те, що потрібно зовнішнім користувачам.
- Уникайте глобальних змінних у інтерфейсі — це ускладнює тестування та повторне використання.
- Документуйте функції та їх очікувані параметри, особливо поведінку при порожніх або некоректних даних.
- Розбивайте великі модулі на підмодулі за відповідальністю (наприклад: обробка файлів, алгоритми, інтерфейс користувача).
- Тестуйте модулі окремо, перш ніж інтегрувати в основну програму.
Висновок
Модульне програмування в Pascal — простий і ефективний спосіб зробити код структурованим і підтримуваним. Навіть прості утиліти, винесені в окремі units, значно полегшують подальше розширення програми. Почніть з малого: виділіть в окремі модулі функціональність, яка має логічний зв’язок, і поступово нарощуйте архітектуру додатку.