Процедур-Пример №16

Давайте сегодня попробуем написать программу с использованием процедур. Эта программа осуществляет ввод с клавиатуры трех массивов целых чисел A, B и C, и вывод на экран того из них, сумма элементов которого минимальна, это будет пример 16.

Пример 16

pascal
const
N=10;
type
IntArray=array [1..N] of integer;
var
A,B,C: IntArray;         { Заданные массивы }
SA,SB,SC: integer;       { Суммы элементов массивов }
{ Процедура ввода с клавиатуры массива целых чисел }
PROCEDURE InputArray(var Arr: IntArray);
var
i: integer;
begin
for i:=1 to N do
readln(Arr[i]);
end;
{ Процедура подсчета суммы элементов массива целых чисел }
PROCEDURE SumArray(Arr: IntArray; var Sum: integer);
var
i: integer;
begin
Sum:=0;
for i:=1 to N do
Sum:=Sum+Arr[i];
end;

{ Процедура вывода на экран массива целых чисел }
PROCEDURE OutputArray(Arr: IntArray);
var
i: integer;
begin
for i:=1 to N do
writeln(Arr[i]:6);
end;

BEGIN
InputArray(A);
InputArray(B);
InputArray(C);
SumArray(A,SA);
SumArray(B,SB);
SumArray(C,SC);
if SA<=SB and SA<=SC then
OutputArray(A)
else
if SB<=SA and SB<=SC then
OutputArray(B)
else
OutputArray(C);
END.

Обратите внимание на различное описание параметров вызова в используемых процедурах: перед некоторыми из них ставится зарезервированное слово var – такие параметры называются параметрами-переменными, а остальные – параметрами-значениями. Параметры-значения не могут изменяться внутри процедуры, параметры-переменные – наоборот, используются специально для того, чтобы вернуть программе измененное процедурой значение. Например, в процедуре InputArray изменяются значения элементов массива. Для того, чтобы можно было использовать измененный массив далее в программе, нужно описать его как параметр-переменную. В процедуре OutputArray значения элементов массива не изменяются, поэтому он описывается как параметр-значение.

Параметры, указанные в описании заголовка процедуры, называются формальными. Например, при описании процедуры OutputArray указан формальный параметр Arr.

Параметры, которые указываются при вызове процедуры из основной программы, называются фактическими. Например, оператор

OutputArray(C);

вызывает процедуру вывода на экран для массива C. C – фактический параметр. При обращении к процедуре формальные параметры заменяются на соответствующие значения фактических параметров. В данном случае формальный параметр Arr процедуры OutputArray заменяется фактическим параметром C.

Как уже отмечалось, в каждой процедуре могут быть описаны собственные «внутренние» переменные. Эти переменные создаются при вызове процедуры и уничтожаются по окончании ее работы. Главной программе они недоступны. Такие переменные называются локальными.

В процедуре могут также использоваться и переменные, описанные в главной программе – глобальные.