Тема 9. Модулі. Структура модулів. Тема модуля і зв'язок модулів один з одним. Інтерфейсна частина. Частина, що. Ініціює частина. Компіляція модулів. Доступ до оголошених в модулі об'єктів. Приклади використання модулів.
Модулі - це автономно компилируемая програмна одиниця, що включає в себе різні компоненти розділу описів (типи, константи, змінні, процедури і функції) а, можливо, деякі виконувані оператори яка ініціює частини.
Модуль має наступну структуру:
Тут UNIT- зарезервоване слово (одиниця); починає заголовок модуля; <имя> - ім'я модуля;
INTERFACE - зарезервоване слово (інтерфейс); починає інтерфейсну частину модуля;
IMPLEMENTATION - зарезервоване слово (виконання); починає виконувану частину;
BEGIN - зарезервоване слово; починає инициирующую частина модуля; конструкція BEGIN <инициирующая часть> необов'язкова;
END - зарезервоване слово - ознака кінця модуля.
Таким чином, модуль складається з заголовка і трьох складових частин, кожна з яких зможе бути порожньою;
У інтерфейсної частини сконцентровані описи глобальних типів, констант і змінних, а також наводяться заголовки глобальних процедур і функцій. Поява об'єктів в інтерфейсній частини робить їх доступними для інших модулів і основної програми. Тіла процедур і функцій розташовуються в виконуваної частини модуля, яка може бути прихована від користувача.
Модулі являють собою прекрасний інструмент для розробки бібліотек прикладних програм і потужний засіб модульного програмування. Важлива особливість модулів полягає в тому, що компілятор Турбо Паскаля розміщує їх програмний код в окремому сегменті пам'яті. Максимальна довжина сегмента не може перевищувати 64 байта, проте кількість одночасно використовуваних модулів обмежується лише доступною пам'яттю, що дає можливість створити досить великі програми.
Тема модуля і зв'язок модулів один з одним
Тема модуля складається з зарезервованого слова UNIT і наступного за ним імені модуля:
UNIT <имя модуля>;
Ім'я модуля повинно співпадати з ім'ям дискового файлу, в якому розміщується вихідний текст модуля. наприклад:
UNIT METOD; Оригінальний текст відповідного модуля повинен розміщуватися в дисковому файлі METOD.PAS. Ім'я модуля служить для його зв'язки з іншими модулями і основний програмою. Цей зв'язок встановлюється спеціальною пропозицією:
USES <сп. модулей>
Тут USES - зарезервоване слово (використовується);
<сп. модулей> - список модулів, якими встановлюється зв'язок; елементами списку є імена модулів, відокремлюються один від одного комами, наприклад:
Uses CRT, GRAPH, METOD;
Procedure AddC (x, y. Complex; VAR Z. complex);
Procedure MulC (x, y. Complex; VAR Z. complex);
Якщо тепер в основній програмі написати пропозицію
то в програмі стануть доступними тип Complex і дві процедури AddC і MulC з модуля Cmplx.
Слід врахувати, що всі константи і змінні, оголошені в інтерфейсній частині модуля, так само як і глобальні константи і змінні основної програми, поміщаються компілятором в загальний сегмент даних.
частина, що
Частина, що починається словом IMPLEMENTATION і містить опису підпрограм, оголошених в інтерфейсній частини. У ній можуть оголошуватися локальні для модуля об'єкти - допоміжні типи, константи, змінні і блоки, а також мітки, якщо вони використовуються в ініціації частини.
Type complex = record re, im. real end;
Procedure AddC (x, y. Complex; VAR Z. complex);
z. re: = x. re + y. re;
z. im: = x. im + y. im
Локальні змінні і константи, а також всі програмні коди, породжені при компіляції модуля, поміщаються в загальний сегмент пам'яті.
ініціює частина
В ініціації частини розміщуються виконувані оператори, які містять певну частину програми. Ці оператори виконуються до передачі управління основній програмі і звичайно використовуються для підготовки її роботи. Наприклад, в них можуть ініціюватися змінні, відкриватися потрібні файли, встановлюватися зв'язки з іншими ПК по комунікаційних каналах і т.п .:
PROCEDNRE PRINT (s. String);
name = 'output. txt ';