Структура процедуры аналогична структуре основной программы:
procedure имя [(список параметров)]; {заголовок} разделы описаний begin.
раздел операторов Найти разность средних арифметических значений двух вещественных массивов из 10 элементов.
Как очевидно из условия, для двух массивов требуется найти одну и ту же величину — среднее арифметическое. Следовательно, логичным будет оформить его нахождение в виде подпрограммы, которая сможет работать с разными массивами.
program dif_average; const? = 10;
type mas = array [1. n] of real; var a, b: mas; i: integer;
dif, av_a, av_b: real;
procedure average (x: mas; var av: real); {1}.
var i: integer; begin av:= 0;
for i:= 1 to n do av:= av + x [i]; av:= av / n;
end;
Пример
end;
begin.
for i:= 1 to n do read (a [i]); for i:= 1 to n do read (b [i]); average (a, av_a); average (b, av_b); dif: = av_a — av_b;
writeln ('Разность значений dif:6:2) end.
{2}.
{3}.
{4}.
Описание процедуры average расположено в строках с {1} по {2}.
В строках {3} и {4}, эта процедура вызывается сначала для обработки массива а, затем — массива Ь. Эти массивы передаются в качестве аргументов. Результат вычисления среднего арифметического возвращается в главную программу через второй параметр процедуры.
Функции
Описание функции отличается от описания процедуры незначительно:
function имя [(список параметров)]: тип; {заголовок} разделы описаний begin.
раздел операторов имя:= выражение; end;
Функция вычисляет одно значение, которое передается через ее имя. Следовательно, в заголовке должен быть описан тип этого значения, а в теле функции — оператор, присваивающий вычисленное значение ее имени.
Пример Найти разность средних арифметических значений двух вещественных массивов из 10 элементов.
program dif_averagel; const n = 3;
type mas = array [1. n] of real; var.
a, b: mas; i: integer;
dif: real;
function average (x: mas): real; {1}.
var i: integer; {2}.
av: real;
begin.
av:= 0;
for i:= 1 to n do av:= av + x [i];
average:= av / n; {3}.
end;
begin.
for i:= 1 to n do read (a [i]); for i:= 1 to n do read (b [i]);
dif:= average (a) — average (b); {4}.
writeln ('Разность значений dif:6:2) end.
Оператор, помеченный комментарием {1}, представляет собой заголовок функции. Тип функции определен как вещественный, потому что такой тип имеет среднее арифметическое элементов вещественного массива. Оператор {3} присваивает вычисленное значение имени функции. В операторе {4} функция вызывается дважды: сначала для одного массива, затем для другого.