Определить матрицу, имеющую максимальное среднее значение элементов.
END.
BEGIN
End;
Begin
End;
Program primer_2;
Подпрограмма-функция предназначена для вычисления значения какого-либо параметра (результат - одно число).
Заголовок функции:
Function <имя> (список формальных параметров): <тип> ;
<тип> - тип возвращаемого функцией результата.
FUNCTION SUM1: real;
Function SUM2 (a, b, c: real): real;
Function MAX (mas: Atype; n: integer):real;
Стандартная функция Pi – без параметров.
Обращение к п/п функции осуществляется в основной программе по имени с указанием фактических параметров ( или без них, если список формальных параметров в заголовке п/п отсутствует) в правой части оператора присваивания или в операторе печати.
В TP локальные имена могут совпадать с глобальными. В этом случае локальные имена как бы «закрывают » глобальные, и тем самым делают их недоступными. ( Т.е. это разные переменные, хотя и с одинаковыми именами.) Необходимо отметить, что использование глобальных переменных в подпрограммах следует избегать:
- во-первых, подпрограмма, использующая глобальные переменные, становится менее универсальной, чем замкнутая п/п. При переносе в другую программу нужно тщательно проследить за обменом данными между программными единицами;
- во-вторых, при использовании глобальных переменных возрастает риск ошибок, связанных с непреднамеренным изменением значений каких-то глобальных переменных.
Примеры :
1). Вычислить Lg (x) и N!
Var x, y, a: real;
i, n, m: integer;
{--Функция вычисления lg(x)--}
FUNCTION Lg: real;
begin {x- глобальная перем.}
Lg:=Ln(x)/Ln(10);
{--Функция вычисления N!--} FUNCTION FACT:integer;
Var F: integer; {n- глобальная перем.}
F:=1;
for i:=1 to n do
F:=F*i;
FACT:=F;
{-----------main--------}
X:=100;
writeln('Lg (x)=',lg:3:2);
X:=sqrt(x);
writeln('LG(x)=',lg:3:2);
n:=5;
m:=FACT;
writeln('FACTORIAL 5!=',m);
n:=10;
writeln('FACTORIAL 10!=' FACT);
Пример. Заданы 3 матрицы
const n=3;
type matr=array[1..n,1..n] of real;
var sr:array[1..3] of real;
i,j:integer; x,y,z:matr; maxsr:real; f:text;
{-- подпрограмма вычисления среднего значения--}
function sred(a:matr;m,n:integer):real;
var s:real;
s:=0;
for i:=1 to m do
for j:=1 to n do
s:=s+a[i,j]; sred:=s/(m*n)
{--------main--------}
assign(f,’Matrica.pas’);
for i:=1 to 2 do
for j:=1 to 3 do
read(f,x[i,j]);
for i:=1 to 3 do
for j:=1 to 3 do
read(f,y[i,j]);
for i:=1 to 3 do
for j:=1 to 2 do
read(f,z[i,j]);
{--Обращение к подпрограмме-функции--}
sr[1]:=sred(x,2,3);
sr[2]:=sred(y,3,3);
sr[3]:=sred(z,3,2);
AppEnd(f); {--Печать результатов в файл--}
writeln(f,' Cредниe значения: ');
for i:=1 to 3 do write(f,' sr[',i,']=',sr[i]:5:2);
maxsr:=sr[1];
for i:=2 to 3 do if maxsr<sr[i] then maxsr:=sr[i];