Ближний и дальний вызовы подпрограмм.

Размещение подпрограммы в библиотеке (модуле).

Размещение подпрограммы в файле.

Расположение подпрограммы в тексте программы.

Местоположение подпрограмм в тексте и вне текста программы.

Подпрограммы

ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ (PASCAL)

Тема:

IV. Парадигмы программирования

4.7. Переменные, обрабатываемые при вызове подпрограмм:

1. фактические параметры, подставленные на место формальных параметров-переменных;

2. переменные, поименованные именами формальных параметров-значений, получившие значения фактических выражений; существуют только внутри подпрограмм;

3. локальные переменные, описанные внутри данной подпрограммы; используются как рабочие переменные и существуют только внутри подпрограммы; начальное значение этих переменных неопределенное;

4. глобальные переменные, несовпадающие по имени с именами локальных переменных и формальных параметров;

5. только в функциях формируется значение переменной-результата функции, совпадающей по имени с именем функции и использующейся как операнд в выражении.

Фактические параметры (переменные, константы, выражения) и глобальные переменные могут использоваться как входные данные подпрограмм.

Фактические параметры-переменные, глобальные переменные и переменная-результат функции могут использоваться как выходные данные подпрограмм.

Следует отметить, что использование глобальных данных в подпрограммах считается нежелательным стилем программирования, особенно при разработке больших программ.

Подпрограммы могут располагаться в виде отдельного раздела внутри описательной части текста программы.

Размещение подпрограммы возможно в отдельном текстовом файле, который может иметь расширение PAS или INC. В этом случае текст подпрограммы включается в текст программы директивой компилятора {$I имя файла}.

Подпрограмма может находиться в библиотеке (модуле) в виде машинных кодов. Существует возможность для пользователя создавать собственные библиотеки. Тексты библиотек представляют собой программные единицы, называемые модулями. Модули после трансляции располагаются в файлах с расширением TPU.

4.9.1. Ближний вызов подпрограмм – это вызов в пределах 64 К, т. е. в пределах одного сегмента кода, который выделяется основной программе и каждому исполняемому в ней модулю (экономит 1 байт памяти и несколько микросекунд).

Если подпрограмма располагается внутри текста программы или во включаемом файле, то она может быть оттранслирована с параметром транслятора ближний вызов, который либо устанавливается по умолчанию в опциях турбо-среды, либо задается как параметр компилятора {$F-} в начале текста подпрограммы.

4.9.2. Дальний вызов подпрограмм – это вызов из любого сегмента.

Если подпрограмма располагается в модуле или, независимо от расположения текста, используется в качестве фактического параметра при обращении к другой подпрограмме, то текст подпрограммы должен быть оттранслирован с параметром транслятора дальний вызов, который либо устанавливается в опциях турбо-среды, либо задается как параметр компилятора {$F+} в начале текста подпрограммы.