Рекурсия.

Это такой способ организации алгоритма, когда подпрограмма в ходе ее выполнения обращается сама к себе.

Достоинство - компактный алгоритм.

Недостаток - работает медленнее и может вызвать переполнение стека; необходимо принимать меры, чтобы процесс сам остановился.

Пример. Вычисление N ! Можно так 4! = 4 * 3 * 2 * 1 . То есть вычислять сверху путем последовательного умножения пока не дойдем до нуля. Это свойство использовать для останова.

 

4.10.3. Опережающее описание.

В ТР любой объект должен быть объявлен до его использования. Это означает, что если подпрограмма РА использует подпрограмму РВ, то текст подпрограммы РВ должен располагаться до подпрограммы РА. Конечно их можно переставить, но как быть, если РА использует РВ, а РВ в свою очередь использует РА.

Если порядок расположения подпрограмм не соответствует указанному выше правилу, то используется опережающее описание.

Опережающее описание - это указание в нужном месте (до подпрограммы РА) только заголовка подпрограммы с ключевым словом FORWARD. Текст данной подпрограммы может располагаться далее в любом месте, при этом список формальных параметров в заголовке не указывается.

 


 

4.10.4. Глобальные и локальные переменные.

Обычно программа на ТР имеет блочную структуру и состоит из главной программы и набора подпрограмм, каждая из которых в свою очередь может содержать процедуры и функции.

Все переменные, используемые в программе и подпрограммах можно разделить на три класса.

Формальные параметры. Эти переменные существуют только во время выполнения подпрограммы. После выхода из подпрограммы они прекращают свое существование.

Локальные переменные - это переменные, которые используются только в той программной единице, в которой они объявлены.

Глобальные переменные - это переменные, которые используются как в программной единице в которой они объявлены, так и в подпрограммах более низкого уровня. Уровень подпрограммы понижается по мере роста степени вложенности.