
- •Передмова
- •Тема 1: Правила техніки безпеки при роботі з комп’ютером
- •Тема 2: Алфавіт. Ідентифікатори. Константи. Вирази
- •Тема 3: Загальна структура і розділи Pascal-програми
- •Тема 4: Введення і виведення у Pascal-і. Форматоване виведення
- •Тема 5: Прості (скалярні) типи данних
- •Тема 6: Завантаження середовища Турбо Паскаль. Функціональні клавіші
- •Тема 7: Меню опції
- •Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури
- •Тема 9: Умовний оператор. Вкладений умовний оператор
- •Тема 10: Оператор вибору
- •Тема 11: Оператори циклу. Оператор циклу з параметром
- •Тема 12: Оператор циклу з перед- і з постумовою
- •Тема 13: Складні типи. Масиви
- •Тема 14: Багатомірні масиви
- •Тема 15: Пошук і сортування елементів масиву. Класи алгоритмів сортування
- •Тема 16: Динамічна пам'ять. Адреси і покажчики
- •Тема 17: Оголошення покажчиків, виділення та звільнення динамічної пам’яті
- •Тема 18: Процедури та функції для роботи з динамічною пам’яттю
- •Тема 19: Символьний тип даних. Упаковані масиви
- •Тема 20: Процедури та функції для обробки рядків
- •Тема 21: Структурований тип даних - безліч
- •Тема 22: Структурований тип даних – записи
- •Тема 23: Опис файлових змінних. Обробка типізованих файлів
- •Тема 24: Послідовний та прямий доступ до файлів
- •Тема 25: Обробка не типізованих файлів
- •Тема 26: Робота з текстовими файлами
- •Тема 27: Типізовані константи
- •Тема 28: Поняття та робота з процедурами та функціями
- •Тема 29: Використання модуля crt. Програмування клавіатури
- •Тема 30: Використання модуля crt. Текстове виведення на екран. Програмування звукового генератора
- •Тема 31: Графічні можливості tp 7.0. Використання бібліотеки Graph
- •Тема 32: Бібліотечні модулі користувача
- •Тема 33: Основні принципи ооп. Створення об’єктів. Використання об’єктів
- •Список літератури
- •Додаток а (довідковий) Основні алгоритми обробки масивів
- •Додаток б (довідковий) Питання перевірки знань з теорії
- •Додаток в (довідковий) Поширені коди клавіш
- •Додаток д (довідковий) Коди сканування клавіатури
Тема 32: Бібліотечні модулі користувача
Крім убудованих стандартних модулів користувач може створювати власні бібліотечні модулі. Для цього, готові програми, оформлені у виді процедур і функцій, поєднують у модулі 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, переконаємося, що текст буде виведений на чистому екрані.
Питання для контролю:
-
Модуль Unit і його використання.
-
Створення модуля Unit і його загальна структура.
-
Ім'я бібліотечного модуля користувача.
-
Интерфейсная секція.
-
Секція реалізації.
-
Ініціалізаційна частина.
-
Підключення модуля користувача до основної програми.
-
Компіляція модуля користувача.