Тема Бібліотечні модулі користувача



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

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

Використання модулів дозволяє зняти обмеження в 64 kb на обсяг програми і даних, а також дозволяє автономно налагоджувати окремі фрагменти програмного проекту, підключаючи їх потім до основної програми.

Створення модуля вимагає визначеної організації з застосуванням слів Unit, Interface, Implementation, Begin, End.

Загальна структура модуля.

unit ім'я бібліотечного модуля;

{$N+} - директиви компілятора;

interface {интерфейсная секція}

uses - використовувані при оголошенні модулі;

label - оголошення глобальних міток;

const - оголошення глобальних констант;

type -оголошення глобальних типів;

var - оголошення глобальних змінних;

procedure - заголовки процедур із вказівкою параметрів;

function - заголовки функцій із вказівкою параметрів;

implementation {секція реалізації}

uses - використовувані при реалізації модулі;

label - оголошення локальних міток;

const - оголошення локальних констант;

type - оголошення локальних типів;

var - оголошення локальних змінних;

procedure - заголовки і тіло процедур;

function - заголовки і тіло функцій;

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

оператори;

End.

Ім'я бібліотечного модуля повинне збігатися з ім'ям дискового файлу, де знаходиться вихідний текст модуля. Наприклад, якщо файл має ім'я My_Lib.pas, то модуль повинен бути

unit My_Lib;

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

У секції реалізації можуть підключатися модулі, а також міститися описи міток, констант, типів, змінних, процедур і функцій, що є локальними, тобто вони доступні тільки для даного модуля і недоступні основній програмі. Тут описуються тіла процедур і функцій, заголовки яких містилися в інтерфейсній секції, причому їхній порядок повинний збігатися. Заголовки процедур і функцій можна вказати повністю, у цьому випадку вони повинні точно збігатися з тими заголовками, що були в інтерфейсній секції, а можна вказувати коротко, тобто після слова procedure чи function указати тільки ім'я.

Наприклад:

 

...

Interface

function fact(n: integer): word;

procedure a(var x: real);

Implementation

uses crt;

function fact(n:integer):word;

Begin

...

end;

procedure a;

Begin

...

end;

...

 

Реалізаційна секція також може бути порожньою.

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

Для підключення модуля до основної програми відразу після імені програми вказують

 

uses ім'я модуля;

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

Компіляція модуля.

Після підготовки вихідного тексту його можна відкомпілювати. Для цього варто встановити в режимі меню Compile опцію Destination у стан Disk. У результаті компіляції (Alt+F9) створюється файл із тим же ім'ям, що і вихідний текст, але з розширенням.tpu.

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

У режимі Make компілюються ті модулі, для яких не мається tpu-файлу, чи якщо tpu-файл “старіше”, ніж відповідний йому pas-файл.

У режимі Build компілюються і підключаються всі модулі, імена яких містяться в реченнях Uses.

У меню Options пункт Directories дозволяє контролювати каталоги в які посилаються відкомпільовані файли:

в опції EXE & TPU directory варто вказати

с:\tp\exe&tpu - куди посилаються ехе і tpu-файли;

в опції Unit directories варто вказати

c:\tp\units; c:\tp\exe&tpu - звідкіля брати tpu-файли (таких каталогів може бути декілька).

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

Створимо модуль Unit demo_tpu з одним оператором ClrScr, що очищає екран:

unit demo_tpu;

Interface

{ця частина порожня}

Implementation

uses crt;

Begin

clrscr;

End.

 

і запишемо його під ім'ям demo_tpu.pas. Відкомпілювавши його, одержимо модуль demo_tpu.tpu.

Створимо програму, у якій використовуємо цей модуль

 

{демонстрація використання модуля demo_tpu.tpu}

uses demo_tpu;

Begin

writeln(‘Першим виконався оператор основного’);

writeln(‘блоку модуля demounit.tpu, у результаті’);

writeln(‘чого очистився екран; потім виконалися’);

writeln(‘оператори блоку головної програми, що’);

writeln(‘і надрукували даний текст.’)

End.

 

Виконавши її, натиснувши Ctrl+F9, переконаємося, що текст буде виведений на чистому екрані.

 

Питання для контролю

1. Модуль Unit і його використання.

2. Створення модуля Unit і його загальна структура.

3. Ім'я бібліотечного модуля користувача.

4. Интерфейснаясекція.

5. Секція реалізації.

6. Ініціалізаційначастина.

7. Підключення модуля користувача до основної програми.

8. Компіляція модуля користувача.

 

 


Дата добавления: 2015-12-16; просмотров: 14; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!