Рассмотрим, как выполнить один и тот же набор команд на различных множествах данных или в различных местах программы. Для этого нужно поместить эти операторы в подпрограмму, которую потом можно вызывать при необходимости.
В Паскале имеется два типа подпрограмм: процедуры и функции. Основное различие между ними состоит в том, что функция возвращает значение и может использоваться в выражениях, например:
X := Sin(A);
в то время как процедура вызывается для выполнения одной или более задач:
Writeln('Это проверка');
Однако прежде, чем знакомиться с процедурами и функциями, необходимо вспомнить структуру программы на Паскале.
program Имя-программы;
label <метки>;
соnst <описание констант>;
type <определения типов данных>;
var <описания переменных>;
procedures и functions;
begin
<основное тело программы>
end.
За описанием следуют процедуры и функции, и только затем основное тело программы, состоящее из некоторого числа операторов.
Для процедур используется следующий формат:
procedure имя_процедуры(параметры);
label <метки>;
соnst <описание констант>;
type <определения типов данных>;
var <описания переменных>;
procedures и functions;
begin
<основное тело процедуры>;
end;
Функции имеют такой же формат, что и процедуры, за исключением того, что они начинаются с заголовка function и заканчиваются типом данных для возвращаемого значения функции:
function имя_функции(параметры) : тип результата;
Имя функции выполняет две задачи: это имя вызываемой функции и имя переменной, которая передает в вызываемую программу результат работы функции.
Имеется только два отличия от структуры обычной программы: процедуры и функции начинаются с заголовка procedure или function, а не с заголовка program, и заканчиваются не точкой, а точкой с запятой. Процедуры и функции могут иметь свои собственные константы, типы данных, переменные и даже собственные процедуры и функции. Но все эти элементы могут использоваться только в тех процедурах и функциях, в которых они определены.
В описании процедуры или функции задается список формальных параметров.
Все формальные параметры являются локальными и могут быть использованы только в тех подпрограмм, где они объявлены.