Функции

Функция – это подпрограмма, определяющая единственное значение. Отличия подпрограммы заключается в следующем:

  1. Заголовок функции начинается со служебного слова 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;
  1. Раздел операторов функции должен содержать хотя бы один оператор присваивания имени функции;
sum:=x+y;  //Для функции sum

add:=true;  //Для функции add
  1. Обращение к функции – не оператор, а выражение вида:
имя функции (список фактических параметров);

Функции могут использовать свое имя в собственном описании, т.е. могут быть рекурсивными.

Пример

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.

Результат работы программы