|
Передача одиночных элементов массивов в подпрограмму не отличается от передачи переменных. При передаче всего массива необходимо предварительно определить его тип, поскольку он не является стандартным.
Пример: TYPE ATYPE=ARRAY[1..10] OF REAL;
PROCEDURE R(A: ATYPE);
Такое описание необходимо в связи с тем, что в списке формальных параметров могут использоваться только стандартные или ранее описанные типы.
Поэтому нельзя, например, объявить следующую процедуру:
PROCEDURE R(A: ARRAY[1..10] OF REAL);
Поскольку строка является фактически массивом символов, ее передача в подпрограмму осуществляется аналогичным образом.
Пример описания и передачи строковых переменных:
TYPE INTYPE = STRING[10];
ONTYPE = STRING[30];
FUNCTION R(A: INTYPE): ONTYPE;
Рекурсия
Рекурсия - это способ организации вычислительного процесса, при котором подпрограмма в ходе выполнения своих операторов обращается сама к себе.
Пример. Пусть задано целое положительное число, вывести на экран дисплея цифры в обратном порядке.
PROGRAM REKURS;
VAR
N: INTEGER;
PROCEDURE REVERS(M:INTEGER);
BEGIN
WRITE(M MOD 10);
IF (M DIV 10)<>0 THEN REVERS(M DIV 10);
END;
BEGIN
READ(N);
REVERS(N);
END.
В ходе выполнения программы процедура рекурсивно обращается сама к себе и выводит на экран при каждом обращении очередную цифру.
Рекурсия может быть прямой или косвенной. В первом случае модуль подпрограммы содержит оператор вызова этой же подпрограммы. Во втором случае один модуль (например: А) вызывается из другого модуля (например: В), а модуль В – из А. Поскольку по правилам языка каждый идентификатор перед объявлением должен быть описан, то необходимо выполнить опережающее описание подпрограммы В. Для этого объявляется заголовок процедуры В, за которым следует служебные слово FORWARD. Теперь из процедуры А можно обращаться к процедуре В. Например:
PROCEDURE B(I:BYTE); FORWARD;
PROCEDURE A(J:BYTE);
BEGIN
...
B(J);
END;
PROCEDURE B; {параметры опущены}
BEGIN
...
A(I);
END.
Формальные параметры при повторной записи заголовка опускаются.
Дата добавления: 2015-09-05; просмотров: 47 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
PROGRAM PROS; | | | Типы в Турбо Паскале |