Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово function, идентификатор (имя) функции, заключенный в круглые скобки, необязательный список формальных параметров и тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре аналогичный программе:
function <имя> (Формальные параметры) : тип результата;
const ...;
type ...;
var ...;
begin
<операторы функции>
end;
В разделе операторов должен присутствовать, по крайней мере, один оператор, присваивающий имени функции значение. В точку вызова возвращается результат последнего такого присваивания.
Обращение к функции осуществляется по имени с необязательным указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам, указанным в заголовке, и иметь тот же тип.
Когда процедура или функция вызываются, то в скобках вместо формальных параметров, указав фактические параметры (аргументы). Это могут быть либо конкретные значения, либо переменные из основной программы.
Тело подпрограммы, как и любого составного оператора на языке Паскаль, ограничивается скобками begin и end.
Пример:
var num: integer;
function digits (n:integer): integer;
var i: integer;
Begin
i := 0;
while n > 0 do begin
n := n div 10;
i := i + 1
end;
digits := i
end;
Begin
write ('Введите положительное число: ');
readln (num);
num := digits (num);
writeln ('Количество разрядов = ', num);
readln
end.