Тема Бібліотечні модулі користувача
Крім убудованих стандартних модулів користувач може створювати власні бібліотечні модулі. Для цього, готові програми, оформлені у виді процедур і функцій, поєднують у модулі 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!