Ниже рассмотрены примеры описания и применения функций.
Пример 15. Даны четыре произвольных числа a,b,c,d. Найти максимальное, используя функцию fmax2 выбора большего из двух чисел.
Program max_4;
Var a,b,c,d:real;
y1,y2,z:real;
Function fmax2(x1,x2:real):real;
Var fm:real;
begin if x1>x2 then fmax2:=x1 else fmax:=x2
end;
begin write(‘Введите 4 числа’);read(a,b,c,d);
y1:=fmax2(a,b); y2:=fmax2(c,d); z:=fmax2(y1,y2);
writeln(‘Максимальное число: ’,z:8:2); readln
end.
Примечание. Для более короткой (компактной ) формы вычисления здесь возможно применение рекурсии: в качестве параметра функции может использоваться имя той же функции. (О рекурсиях более подробно см. в следующем учебном пособии). Тогда формула вычисления максимального из четырех чисел будет выглядеть так:
Z:=fmax2(fmax2(a,b),fmax2(c,d));
Или еще короче – выражение, вычисляющее результат, записывается в качестве параметра процедуры вывода:
Пример 16. Функция F_middle вычисляет среднее значение элементов одномерного массива целых чисел {Тип массива А должен быть объявлен в вызывающей программе
Type TA=array[1..30] of integer;}:
Function f_middle (n:integer; A:TA):real;
Var i:integer; s:real;
Begin s:=0;
For i:=1 to n do s:=s+A[i]; s:=s/n;
F_middle:=s
End;
Пример 17. В программе формируется двумерный массив (матрица) целых чисел, получаемых с помощью стандартной функции генерирования случайных чисел в диапазоне (0..50). Применяя функцию, описанную в предыдущем примере, в данной программе вычисляются и выдаются на экран ПК средние значения строк и средние значения столбцов матрицы.
program m_s;
type T1= array[1..10] of integer;
var i,j,n,m:integer;
mas:array[1..10,1..15]; {матрица исходных чисел}
mas1:array[1..15] of real; mas2:array[1..10] of real;{массивы для хранения текущей строки и текущего столбца матрицы}