Давайте сегодня попробуем написать программу с использованием процедур. Эта программа осуществляет ввод с клавиатуры трех массивов целых чисел A, B и C, и вывод на экран того из них, сумма элементов которого минимальна, это будет пример 16.
Пример 16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
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.
Как уже отмечалось, в каждой процедуре могут быть описаны собственные «внутренние» переменные. Эти переменные создаются при вызове процедуры и уничтожаются по окончании ее работы. Главной программе они недоступны. Такие переменные называются локальными.
В процедуре могут также использоваться и переменные, описанные в главной программе – глобальные.