Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АП. Методичнi вказiвки.doc
Скачиваний:
4
Добавлен:
09.11.2019
Размер:
1.25 Mб
Скачать

Лабораторна робота № 8 модулі і динамічно зв'язувані бібліотеки.

Завдання: написати модуль і динамічну бібліотеку, для створення особистих бібліотек процедур і функцій. Розробити програму з використанням модуля і динамічної бібліотеки.

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

Структура модулів

Модуль складається з 4 частин:

Заголовка модуля;

Розділу оголошень або інтерфейсу;

Розділу реалізації;

Розділу ініціалізації.

UNIT M;

INTERFACE

IMPLEMENTATION

END.

Заголовок модуля починається із зарезервованого слова UNIT, за яким слідує ім'я модуля.

Інтерфейсний розділ позначається словом INTERFACE, після чого при необхідності можуть розташовуватися:

розділ підключення модулів

розділ опису констант

розділ опису типів змінних

розділ опису змінних

розділ заголовків процедур і функцій.

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

розділ підключення модулів

розділ опису міток

розділ опису констант

розділ опису типів змінних

розділ опису змінних

розділ описів процедур і функцій.

Розділ ініціалізації закінчується, словом END.

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

Використовуючи модулі важливо правильно указувати їх імена.

При підключенні стандартні модулі досить коректно записати їх ідентифікатори в пропозиції USES.

При розробці власних модулів необхідно пам'ятати деякі особливості:

♦ не допускається одночасне використання модулів з однаковими іменами;

♦ ідентифікатор модуля, вказаний в заголовку (UNIT), повинен співпадати з іменами файлів, що містять початковий (.раs) і об'єктний (.трu, .трр, .трw) код;

♦ якщо ідентифікатор модуля довший за вісім символів, то він повинен співпадати з іменами файлів по перших восьми символах.

Динамічно зв'язувані бібліотеки - Dynamically Linked Libraries (DLL) - надають собою прикладним програмам, які згодом можна використовувати разом із стандартними.

Цінність бібліотек DLL полягає в тому, що вони після завантаження в оперативну пам'ять можуть спільно використовуватися декількома прикладними програмами. Хоча DLL для DOS працюють в захищеному режимі DOS, проте вони повністю сумісні з DLL для Windows. Ця властивість дозволяє розробникам створювати програми що працюють як в DOS, так і в Windows.

DLL підтримують "багатоязикові" проекти в програмах, написаних на мові Borland Pascal допускається використання DLL, створених на інших мовах, а в програмах, написаних на інших мовах, допускається використання DLL, створених на Borland Pascal.

Синтаксис опису динамічно зв'язуваної бібліотеки має наступний вигляд:

Бібліотека заголовок бібліотеки;

пропозиція USES

блок

розділ експорту

розділ ініціалізації.

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

Особливості DLL полягають в наступних відмінностях: компоновка модулів з головною програмою виконується статично під час компіляції, а DLL - динамічно, під час виконання програми. Це дозволяє для декількох одночасно працюючих програм тримати в оперативній пам'яті тільки по одній копії процедур і функцій.

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

♦ Обмеженість DLL в порівнянні з модулями полягає в тому, що модулі можуть експортувати різні мовні одиниці (типи, константи, змінні і так далі), а DLL тільки процедури і функції. Хоча DLL може містити змінні, проте модулі не зможуть імпортувати їх для використання. Будь-який доступ до змінних DLL повинен здійснюватися через процедурний інтерфейс;

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

потрібно компілювати окремо.