Функция – это подпрограмма, определяющая единственное значение. Отличия подпрограммы заключается в следующем:
- Заголовок функции начинается со служебного слова function и заканчивается указанием типа значения функции:
Function имя(описание формальных параметров): тип;
//Например
//Суммирование целых чисел
function sum(x,y:integer):integer; //Переменные x,y - тип integer
begin
sum:=x+y;
end;
//Описание цифр
function add(x:real;str:string):boolean; //Переменные x тип real, str тип string
begin
if (x=0) and (str='Ноль') then add:=true else
if (x=1) and (str='Один') then add:=true else add:=false;
end;
- Раздел операторов функции должен содержать хотя бы один оператор присваивания имени функции;
sum:=x+y; //Для функции sum
add:=true; //Для функции add
- Обращение к функции – не оператор, а выражение вида:
имя функции (список фактических параметров);
Функции могут использовать свое имя в собственном описании, т.е. могут быть рекурсивными.
Пример
Cоставим программу, которая для заданных четырех натуральных чисел a, b, c, d напечатает наибольшие общие делители первой и второй пар чисел и сравнит их по величине.
program four;
var
a, b, c, d, m, n: integer;
function nod(x, y: integer): integer;
var
h: integer;
begin
if y = 0 then
h := x
else if x < y then
h := nod(x, y mod x)
else
h := nod(x mod y, y);
nod := h
end;
begin
writeln('введите 4 натуральных числа ');
read(a, b, c, d);
writeln();
m := nod(a, b);
n := nod(c, d);
writeln('НОД(', a, ', ', b, ') = ', m);
writeln('НОД(', c, ', ', d, ') = ', n);
if m > n then
writeln('первый > второго ')
else if m < n then
writeln('первый < второго ')
else
writeln('НОД пар равны ')
end.