Главная

Режимы работы

Графический экран

Текстовый экран

Команды управления движением
Вложенные циклы

Построение процедур (подпрограмм)

Переменные величины

Оператор присваивания

Команды и процедуры с параметрами
Процедуры с мн.  параметрами

Команда выбора (ветвление)

Рекурсия

Команды выполнения

Из опыта преподавания Logo
 

Рекурсия:

        В предыдущих программах мы использовали подпрограммы-процедуры, которые вызывались по мере необходимости.Теперь же поговорим о процедуре, которая называется рекурсией.Суть рекурсии заключается в том, что в ходе ее выполнения процедура сама вызывает себя.
        Заметим, что такая возможность имеется далеко не во всех языках програмирования. К примеру Бейсик рекурсии не имеет. А в Logo - это наиболее употребляемый прием.
        Проследим движение "ч" по квадратной орбите. Для этого будем использовать рекурсивную процедуру с параметром (размера стороны). Необходимо проследить, чтобы "ч" не вышла за пределы экрана.
       

Запишем процедуру "ОРБИТА":

ТО ОРБИТА :S
FORWARD :S
RIGHT 90
IF :S = 150 [STOP]
  [:S = :S + 2
ОРБИТА :S]
END

ОРБИТА 10


Мы можем легко менять размер орбиты, меняя параметр :S. Если же ввести параметр угла :U, то можно легко менять также и ее вид.

ТО ОРБИТА :S :U
FORWARD :S
RIGHT :U
ОРБИТА :S :U
END

ОРБИТА 10 200          ОРБИТА 40 150 ( 12-угольная )
ОРБИТА 40 199         ОРБИТА 20 40 ( 9-угольная )
ОРБИТА 50 200         ОРБИТА 40 144 ( 7-угольная )

Эксперементируйте, задавая нестандартные значения переменных.

Проведем эксперимент, заменив команду FORWARD процедурой вычерчивания какой-нибудь фигуры. Например, квадрата (перед этим определим процедуру "КВАДРАТ").

ТО КВАДРАТ :S
    REPEAT 4
        [FORWARD :S
        RIGHT 90]
END

TO ЭКСП1 :S :U
    KВАДРАТ :S
    FORWARD :U
    ЭКСП1 :S :U
END

ЭКСП1 5 5

        Продолжим эксперимент. Изменим описание процедуры ЭКСП1 так, чтобы значение параметра :S менялось при каждом ее выполнении:

ТО ЭКСП2 :S :U

TO ЭКСП4 :S :U :I

FORWARD :S

  FORWARD :S

RIGHT :U

  RIGHT :U

ЭКСП2 :S + 3 :U

ЭКСП4 (:S + :I) :U :I

END

END

 

ЭКСП2 1 90             ЭКСП2 1 190

ЭКСП4 1 120 10

ЭКСП2 1 120            ЭКСП2 1 230

ЭКСП4 1 40 2

ЭКСП2 1 93              ЭКСП2 1 260

 

ЭКСП2 1 123            ЭКСП2 1 150

 


А теперь будем менять угол.

ТО ЭКСП3 :S :U
    FORWARD :S
    RIGHT :U
    ЭКСП3 :S :U + 5
END

ЭКСП3 3 2
ЭКСП3 5 4
ЭКСП3 10 5