Часто в различных местах программы требуется выполнить очень похожие либо абсолютно одинаковые действия. Например, если требуется задать с клавиатуры два (или более) однотипных массива.
В это случае программе будет дважды встречаться следующий фрагмент кода:
1 2 3 4 5 6 |
. . . for i:=1 to N do { N – количество элементов массива A } readln(A[i]); . . . |
При этом различными будут лишь имена массивов. В данном примере повторяющийся фрагмент состоит всего из двух строчек, но представьте себе, что вам нужно отсортировать эти массивы или ввести с клавиатуры несколько матриц. В таком случае размер повторяющегося кода будет заметно больше. Но можно сократить и размер программы, и время, затрачиваемое на ее создание. Для этого и существуют процедуры.
Процедурой в Турбо-Паскале называется фрагмент программы, имеющий собственное имя. При упоминании имени процедуры в тексте программы происходит ее вызов, – начинают выполняться входящие в нее операторы. После выполнения последнего из операторов управление возвращается обратно в основную программу, и выполняются операторы, следующие непосредственно за вызовом процедуры.
Для обмена информацией между основной программой и процедурой используются параметры вызова, которые перечисляются в круглых скобках за именем процедуры. В случае, когда для выполнения процедуры не нужно никакой дополнительной информации, параметры вызова отсутствуют.
Процедура – это маленькая программа. Она также имеет раздел описаний и раздел операторов, заключенный в операторные скобки begin-end. Поскольку в одной программе может быть множество процедур, заголовок процедуры (в отличие от заголовка программы) является обязательным. Заголовок процедуры состоит из зарезервированного слова PROCEDURE, имени процедуры и следующими за ним в круглых скобках параметрами вызова. Например, процедура для ввода массива целых чисел может выглядеть следующим образом.
1 2 3 4 5 6 7 8 9 |
PROCEDURE InputIntArray(N:byte; var A:IntArray); var i : byte; BEGIN for i:=1 to N do readln A[i]; END; |
При этом в программе должен быть описан тип IntArray:
type IntArray=array [1..50] of integer;
Тогда можно вызвать процедуру для ввода двадцати значений массива D указанного типа:
InputIntArray(20, D);