Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи програмування Паскаль.docx
Скачиваний:
51
Добавлен:
12.05.2015
Размер:
511.7 Кб
Скачать

23. Модулі. Створення модулів

Застосування готових і розроблених програмістом модулів дозволяє ефективно вирішувати завдання повторного використання одного разу написаного коду.

23.1. Призначення й структура модулів

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

Для того, щоб створити модуль, потрібно написати файл із розширенням *.pas, що дотримує описану далі структуру модуля, потім у меню Compileоболонки Паскаля встановити перемикачDestinationу значенняDisk( як ми пам'ятаємо, це ж потрібно зробити, якщо Ви збираєтеся одержати зі своєї програми на Паскалі додаток *.exe), потімзібратимодуль, вибравши в менюCompileпунктBuild. Після усунення помилок компіляції готовий модуль (файл із розширенням *.tpu) буде перебувати в папці Паскаля.

Структура модуля така (нові ключові слова виділені жирним):

unit Ім'я; {Це заголовок модуля, що йменує його. По цьому імені модуль може бути підключений із програми оператором uses}

interface {Интерфейсная частина - тут ми повідомляємо

константи, типи даних, змінні, процедури й функції.

Тіла загальних процедур і функцій перебувають у розділі реалізації.

Розділ інтерфейсу є загальним. У ньому можна визначити те, що буде

видиме й доступно для будь-якої іншої програми (або модуля),

що використовує даний модуль. В интерфейсной частини може перебувати розділ

Uses, якщо модуль підключає інші модулі. У такому випадку, слово Uses повинне

випливати відразу за словом Interface}

Implementation

{У розділі реалізації (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 приводиться повний лістинг модуля для роботи з "мишею" із програми на Паскалі й тести для нього.