Випереджаючі описи та підключення підпрограм. Директива

У програмі може міститися кілька підпрограм, т. Е. Структура програми може бути ускладнена. Однак ці підпрограми можуть розташовуватися на одному рівні вкладеності, тому спочатку має йти опис підпрограми, а потім звернення до неї, якщо тільки не використовується спеціальне випереджаючий опис.

Опис процедури, що містить замість блоку операторів директиву forward, називається випереджаючим описом. В якомусь місці після цього опису за допомогою визначального опису процедура повинна визначатися. Визначальне опис – це опис, в якому використовується той же ідентифікатор процедури, але опущений список формальних параметрів, і в яке включений блок операторів. Опис forward і визначальне опис повинні бути присутніми в одній і тій же частині опису процедури і функції. Між ними можуть описуватися інші процедури і функції, які можуть звертатися до процедури з випереджаючим описом. Таким чином, можлива взаємна рекурсія.

Випереджаючий опис і визначальне опис являють собою повний опис процедури. Процедура вважається описаної за допомогою випереджаючого опису.

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

Директива – це спеціальний коментар, який може бути розміщений в будь-якому місці програми, там, де може знаходитися і звичайний коментар. Однак вони різняться тим, що у директиви є спеціальна форма запису: відразу після закриває дужки без пробілу записується знак $, а потім, знову ж без пробілу, вказується директива.

приклад:

1) {$ E +} – емулювати математичний співпроцесор;

2) {$ F +} – формувати далекий тип виклику процедур і функцій;

3) {$ N +} – використовувати математичний співпроцесор;

4) {$ R +} – перевіряти вихід за межі діапазонів.

Деякі ключі компіляції можуть містити параметр, наприклад:

{$ I ім’я файлу} – включити в текст модульна програми названий файл

Посилання на основну публікацію