Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
L11 зовнішній модуль.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
133.12 Кб
Скачать

Тема: зовнішній модуль Тема: зовнішній модуль

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

Структура модуля:

UNIT <ідентифікатор модуля> {заголовок}

I nterface

[USES <список модулів>;] {інтерфейсна секція}

<відкриті описування>;

I mplementation

[USES <список модулів>;] {секція реалізації}

<закриті описування>;

[begin <операторна частина>] {секція ініціалізації}

end.

Підключення модулів до програми

Виконується за допомогою рядка USES безпосередньо після заголовку.

При цьому стають доступними інтерфейсні("зовнішні") описування констант, змінних, процедур чи функцій цих модулів.

Модуль SYSTEM.TPU підключається автоматично.

Модуль що приєднюється розшукується компілятором:

  1. серед резидентних модулів, завантажених у пам'ять під час запуску компілятора із бібліотеки TURBO.TPL

  2. у поточному каталозі

  3. у каталогах, наданих у списку каталогів файлів в меню

options/directories/unit directories

Тут надаються шляхи пошуку у форматі DOS:

\GRPH DIR;\MY DIR\OLD;\HELP;

При підключенні ряду модулів бажано виконувати правило:

якщо один модуль використовує інші, то в переліку їх у рядку uses цей модуль треба указувати після всіх модулів, які він використовує, навіть, коли вони не використовуються явно головною програмою.

Якщо один і той самий ідентифікатор зустрічається у різних модулях, то, оскільки вони компілюються у черзі слідування, виникає вкладена структура, така, що кожний внутрішній модуль відміняє призначення зовнішнього (як локальне описування по відношенню до інших)

Якщо треба отримати значення, пов'язані з конкретним модулем, треба використати кваліфікатор - ім'я модуля:

<кваліфікатор>.<ідентифікатор>

Непряме використання модулів

  1. Якщо головна програма використовує модуль, який, в свою чергу, звертається до інших модулів, їх треба указувати у рядку uses головної програми за визначеним приоритетом.

Приклад

program host; unit unit2 unit unit1

uses unit1,unit2; interface interface

const a=b; uses unit1; const c=1;

var b:ar; const b=c; type ar=array[1..100] of byte;

begin function f(a:ar):byte; implementation

: implementation end.

Writeln(f(b)); end.

end.

Використання рядка uses у секції реалізації модуля робить посилання на інший модуль невидимим, але це посилання повинно бути зроблене перед його використанням.

Приклад

program host; unit unit2; unit unit1;

uses unit1,unit2; interface interface

var i:integer; var b:integer; const c=1;

begin implementation implementation

: uses unit1; end.

i:=b; const d=c;

: :

end. begin

b:=d;

end.

Перехресні посилання на модулі

Можна робити перехресні посилання, як правило, на процедури чи функції

unit u1 unit u2

interface interface

implementation implementation

uses u2; uses u1;

: :

end. end.

Такі перехресні посилання можуть виконуватись тільки у секції реалізації, також треба слідкувати, щоб описування з'являлись до їх використання. У цьому випадку інтерфейсні секції можуть бути скомпоновані за загальним правилом (у прикладі - у будь-якому порядку, оскільки інтерфейсні секції не залежать одна від одної).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]