Подпрограмма-функция обрабатывает данные, переданные ей из главной программы, и затем возвращает полученный результат (в отличие от процедуры). Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово Function, имя, список формальных параметров (заключенный в скобки) и тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре сходный с программой. Общий вид описания функции:
Function <имя> (<параметры>): <тип результата>;
Const …; ù
… ý блок описания
Var ….; û
begin
<операторы>
end;
В разделе операторов должен находиться, хотя бы один оператор, присваивающий имени функции значение. Обращение к функции осуществляется по имени с указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам и иметь тот же тип.
Пример 1.Найти значение следующего выражения: F(t) – F(c), где F(x)=Öx +2x2 +3x
Program m;
Uses crt;
Var t, c, r : real;
Function F(x: real) : real;
Begin
F:= sqrt(x)+ 2*sqr(x) + 3*x;
End;
Begin
Clrscr;
Write(‘Введите числа’);
Readln (t, c);
r:= F(t) – F(c);
write(‘результат =’, r:8:3); {8 символов на все число, 3 – на дробную часть, см п.1.4.2}
end.
Пример 2. Найти наибольшее из четырех чисел, используя подпрограмму нахождения наибольшего из двух чисел.
Program max;
Uses crt;
Var a, b, c, d, m, p, q:real;
Function Bid(x, y: real) : real;
Begin
If x>y then bid:=x
else bid:=y;
End;
Begin
Clrscr;
Write(‘Введите числа’);
Readln (a, b, c, d);
p:=bid(a, b);
q:= bid(c, d);
m:=bid(p, q);
write(‘наибольший элемент’, m:8:3);
end.