Процедуры и функции

Операторы

В основном, синтаксис операторов такой же, как в стандартном Паскале.

В операторе Case добавлена возможность применения альтернативы Else, которая выполняется, если ни в одном из вариантов не найдено значение выражения-переключателя.

Оператор With можно применять не только к записям, но и к объектам.

На машинном уровне программа с модульной структурой занимает несколько сегментов. Вызов процедур и функций в пределах одного сегмента может быть ближним – с указанием 16-битного адреса смещения внутри сегмента. Обращение к процедурам и функциям, находящимся в другом сегменте, должно производиться дальним вызовом, с указанием 32-битного адреса (сегмент + смещение). Обычно Turbo Pascal автоматически определяет, должен ли вызов быть дальним или ближним. Однако предусмотрена возможность явного указания способа вызова. После описания заголовка процедуры или функции можно поместить декларацию Far для задания дальнего вызова или Near для задания ближнего вызова. Также можно установить опцию дальних вызовов в настройках компилятора, или воспользоваться директивами компилятора {$F+} – принудительное включение дальних вызовов, {$F–} – ближние и дальние вызовы используются по умолчанию.

Для описания процедур – обработчиков прерываний предусмотрена декларация Interrupt. Список формальных параметров таких процедур стандартизирован, и содержит перечисление регистров процессора, а после заголовка указывается декларация Interrupt. Далее программируются действия, которые должны выполняться при определенном прерывании. Также нужно предусмотреть, чтобы при запуске программы адрес такой процедуры записался в нужное место таблицы векторов прерываний, а перед окончанием работы программы должно быть восстановлено исходное состояние таблицы векторов прерываний.

Процедуру или функцию можно написать на другом языке, например, Фортране или C++, или на ассемблере и отдельно откомпилировать ее в виде объектного файла. Такой файл можно присоединить к программе на Turbo Pascal при компиляции, а чтобы функция была доступна, нужно описать ее заголовок с декларацией External.

С помощью декларации Inline можно описать процедуру, состоящую из последовательности машинных кодов процессора. Далее, при обращении к такой процедуре, вместо настоящего вызова будет вставляться последовательность машинных команд.

Аналогично действует декларация Assembler. С ее помощью можно в программу на Паскале включить фрагменты, написанные на языке ассемблера.

В списках формальных параметров можно объявлять нетипизированые параметры-переменные. При этом после слова Var записывается одно или несколько имен таких параметров без указания их типа.

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

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