Относительно самостоятельные фрагменты программы, оформленные определенным образом и снабженные заголовком, называются подпрограммами. С помощью подпрограмм любая программа может быть разбита на ряд формально независимых друг от друга частей.
Подпрограммы делятся на два вида: процедуры и функции. Результатом исполнения операторов, образующих тело функции, всегда является единственное значение, поэтому ее имя может быть использовано в выражениях наряду с переменными и константами.
Если в программе используются процедуры или функции, то их описание должно предшествовать основному блоку программы.
Описание состоит из заголовка и тела процедуры (функции), которое обычно следует за заголовком.
Заголовок процедуры с параметрами описывается строкой
Список формальных параметров записывается в скобках и содержит перечень параметров с указанием их типов. Перед выходными параметрами, которые возвращают результат в основную программу, указывается ключевое слово VAR, например:
PROCEDURE SUMMA(A1,A2:REAL; B1,B2:INTEGER; VAR S1,S2:REAL); Допускаются также процедуры без параметров:
PROCEDURE <имя >;
Они предполагают использование в подпрограмме только глобальных переменных, определенных в разделе описаний основной программы.
За заголовком процедуры следует раздел описаний подпрограммы (меток, констант, типов, переменных, а также описаний вложенных процедур и функций) и блок операторов.
Структура описания заголовка подпрограммы-функции имеет вид:
FUNCTION <имя> (<список формальных параметров> ): <тип>;
Формальные параметры записываются с указанием их типа, кроме того, указывается тип самой функции. За заголовком функции следует раздел описаний и блок выполняемых операторов.
Пример
FUNCTION STEP(x, y : REAL) : REAL;
VAR a, b : real;
BEGIN
... ...
END;
После описания блока процедуры или функции следует оператор END, за которым ставится точка с запятой.
Отличие функции от процедуры состоит в том, что функция может возвращать одно значение в основную программу через свое имя, а процедура возвращает несколько значений через список параметров. Поэтому в разделе операторов функции должен быть оператор, который имени функции присваивает значение вида
<имя функции> := <выражение>;
например: STEP := <выражение вещественного типа>.
Вызов подпрограмм производится указанием имени или имени со списком фактических параметров. Фактические параметры не указываются, если в подпрограмме используются только глобальные переменные и в заголовке программы отсутствует список формальных параметров. Если заголовок подпрограммы содержит формальные параметры, то при обращении к подпрограмме должен обязательно присутствовать список фактических параметров, которые записываются через запятую.
Количество, тип и порядок перечисления фактических параметров должен обязательно соответствовать количеству, типу и порядку перечисления формальных параметров в описании подпрограммы.