Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 основи програмування книга.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.77 Mб
Скачать

14.6. Реалізація модуля

Поряд зі стандартними модулями можна застосовувати і власні модулі. Модуль містить: заголовок модуля, інтерфейсну частину, реалізаційну частину і ініціалізаційну частину.

Заголовок модуля має вид:

Unit < Ім’я модуля >.

Ім’я модуля повинно співпадати з іменем файла, що містить цей модуль.

Інтерфейсна частина має вид:

Interface

<

  • Описання констант, міток, типів і змінних, що доступні для використання зовнішніми програмами;

  • Заголовки процедур і функцій, що доступні для використання зовнішніми програмами;

  • Uses-директиви з іменами модулів, що доступні для використання зовнішніми програмами.

>

Всі доступні ззовні засоби модуля повинні бути описані в інтерфейсі цього модуля.

Реалізаційна частина має вид:

Implementation

<

  • Описання всіх засобів модуля, які скриті від зовнішніх програм;

  • Uses-директиви з іменами модулів, що використовуються в цьому модулі і скриті від зовнішніх програм;

  • Повні описання всіх процедур і функцій модуля.

>

Ініціалізаційна частина – розділ операторів модуля. Він виконується перед виконанням зовнішньої програми, що використовує модуль. У зовнішню програму модуль включається директивою Uses.

В якості приклада приведемо оформлення модуля RAT.

{заголовок модуля}

Unit RAT; {<RAT.pas>}

Uses CRT;

{інтерфейсна частина}

Interface

Type

Rational = ^RatValue;

RatValue = Record

Num, {чисельник }

Den: LongInt {знаменник}

End;

Procedure RatInp(var X: Rational);

Procedure RatPrint(X: Rational);

Function AddRat(X, Y: Rational): Rational;

Function SubRat(X, Y: Rational): Rational;

Function MultRat(X, Y: Rational): Rational;

Function DivRat(X, Y: Rational): Rational;

Function MinusRat(X: Rational): Rational;

Function EquRat(X, Y: Rational): Boolean;

Function GrtRat(X, Y: Rational): Boolean;

Function RatReal(X:Rational): Real;

Function IntRat(X: LongInt): Rational;

{реалізаційна частина}

Implementation

Var Z: Rational;

{повні описання всіх процедур і функцій модуля}

{Ініціалізаційна частина}

Begin

ClrScr;

Writeln(' Модуль Rat v.0.0 ')

End.

14.7. Висновки (модульне програмування)

Підведемо деякі висновки проектування програми LinearSystem. У процесі проектування "зверху-вниз" ми отримали чітко відокремлені за змістом чотири рівня програми: рівень системи, рівень рівняння, рівень члена рівняння, рівень коефіцієнтів. З точки зору управління обчисленнями це означає побудову ієрархії процедур:

{Процедури SysOut, EquOut, MemOut використовувались для відладки і в тексті не описані.}

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

Система -> Рівняння -> Член рівняння-> Коефіцієнт

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

Проектування модуля RAT представляє собою окрему задачу – задачу з іншої предметної області. Замінивши модуль RAT, наприклад, модулем COMPLEX, у якому реалізовані дії з комплексними числами, ми отримаємо програму розв’язання системи лінійних рівнянь з комплексними коефіцієнтами. З іншого боку, наявність модуля RAT дозволяє легко програмувати і інші задачі, які потребують дій з раціональними числами.