- •Введення
- •Список лабораторних робіт
- •Оформлення звіту по лабораторній роботі
- •Правила написання програм
- •Правила виконання схем алгоритмів
- •Лабораторна робота № 1 лінійний обчислювальний процес
- •Лабораторна робота № 2 обчислювальний процес, що розгалужується
- •Лабораторна робота № 3 циклічний процес
- •Лабораторна робота № 4 типи даних, визначувані програмістом
- •Лабораторна робота № 5 робота з одновимірними і двовимірними масивами
- •Лабораторна робота № 6 сортування одно і двовимірних масивів.
- •Лабораторна робота № 7 функції і процедур, визначувані програмістом
- •Лабораторна робота № 8 модулі і динамічно зв'язувані бібліотеки.
- •Лабораторна робота № 9 множини і операції над ними
- •Лабораторна робота № 10 комбіновані типи (записи )
- •Лабораторна робота № 11 файли і робота з ними
- •Лабораторна робота № 12 статистичнi I динамiчнi структури даних
- •Лабораторна робота № 13 лабіринт
- •Лабораторна робота № 14 евристики.
- •Лабораторна робота № 15 класи
Лабораторна робота № 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
потрібно компілювати окремо.