Функции отличаются от процедур тем, что в них результат вычислений присваивается непосредственно имени функции.
Описание функции должно начинаться со служебного слова function и заканчиваться указанием типа функции:
function f(x:matr; var y:real):real;
Среди операндов функции обязательно должно быть присваивание имени функции некоторого значения: f:=<значение>;
Формальные параметры функций вводятся по тем же правилам, что и формальные параметры процедур.
Пример выполнения задания лабораторной работы
Пример 29. Вычислить значения выражения
.
Элементы массивов a(10) и b(5) определяются по формулам:
ai=3,1i2+4,9i-5, bi=10ln(i+5)+cos2(pi).
Вычисление произведения модулей элементов оформим в виде процедуры, а вычисление суммы квадратов элементов - в виде функции. Программа имеет вид:
program pr29;
uses crt;
const m=10; n=5;
type raz=1..m; mac=array[raz] of real;
var a,b:mac; pa,pb,sa,sb,z:real;i:integer; w:char;
procedure pro(x:mac;k:integer; var p:real);
var i:integer;
begin p:=1;
for i:=1 to k do p:=p*abs(x[i])
end;
function sum(x:mac;k:integer):real;
var i:integer; s:real;
begin s:=0;
for i:=1 to k do s:=s+sqr(x[i]); sum:=s
END;
BEGIN CLRSCR;
WRITELN(' ':10,'МАССИВ А ');
for i:=1 to m do begin
a[i]:=3.1*sqr(i)+4.9*i-5;
Write(a[i]:8:2,' ':4);
IF I MOD 5 = 0 THEN WRITELN; END;
WRITELN; WRITELN(' ':10,'МАССИВ B ');
for i:=1 to n do begin
b[i]:=10*ln(i+5)*sqr(cos(pi*i));
write(b[i]:8:2,' ':4); end; writeln;
pro(a,m,pa); pro(b,n,pb);
sa:=sum(a,n); sb:=sum(b,n);
z:=(pa+pb)/(sa+sb); writeln;
WRITELN(' PA = ',PA:8:2,' PB = ',PB:8:2);
WRITELN(' SA = ',SA:8:2,' SB = ',SB:8:2);
WRITELN(' Z = ',Z:8:2);
w:=readkey
end.