Функция
Перед употреблением функции она должна быть объявлена в разделе function. Для каждой функции свой раздел объявления, количество функций не ограничено. Формат раздела объявления функции:
function <имя> (список формальных параметров):<тип>;
{Директивы компилятора} // Не обязательны
{Разделы локальных определений} // Типы и др.
begin
{инструкции}
result:=<выражение>; // Выражение=>result
{инструкции}
end; // Конец функции
Внимание. Слово Result можно использовать в режимах Delphi и ObjPas. В других режимах выражение присваивается имени функции.
Имя функции – лучше имя существительное, так как результат – данные. Список формальных параметров такой же, как и у процедуры. После списка формальных параметров через вертикальное двоеточие указывается тип возвращаемого результата.
В исполняемой части должно присутствовать присвоение результата встроенной в функции переменной rezult.
Вызов функции при обычном синтаксисе осуществляется заданием в выражении имени функции со списком фактических параметров в круглых скобках. Количество, типы и порядок фактических и формальных параметров должны совпадать. Пример ниже, в нем соответствия: p1 – a1, p2 – a2.
program Function_Primer;
{$mode objfpc}{$H+}
uses SysUtils; // Ссылка на модули
var // Глобальные переменные
a1: integer;
a2,a3:real;
function MyFunc(p1:integer;p2:real):real; // Заголовок функции
var c:real; // Локальная переменная
begin // Начало тела функции
c:=p1*p2;
result:=sqrt(p1+2*c+p2); // Присвоение результата
end; // Конец функции
begin // Начало тела программы
a3:=3+MyFunc(a1,a2); // Вызов функции
writeln(a3); // Вывод результата
readln; // Пауза, смотрю результат
end. // Конец программы
Если директивами компилятора разрешен расширенный синтаксис, то допускается вызов функции, как процедуры. Возвращаемый функцией результат игнорируется.