Мы уже знаем, как заставить черепаху начертить круговую орбиту:
ЭТО ОРБИТА
ПОВТОРИ 360 [ВПЕРЕД 1 ВПРАВО 1]
КОНЕЦ
Но как заставить ее кружить по этой орбите подобно спутнику? Команда ПОВТОРИ здесь не годится, ибо при ней следует указать число витков. Но в таком случае... нельзя ли так отредактировать процедуру ОРБИТА, чтобы она выполнялась бесконечно? Можно. Для этого после того, как черепаха начертит окружность, она снова должна выполнить процедуру ОРБИТА:
ЭТО ОРБИТА
ПОВТОРИ 360 [ВПЕРЕД 1 ВПРАВО 1]
ОРБИТА
КОНЕЦ
ПОНЯТНО, ЧТО ТАКОЕ ОРБИТА.
Выведем теперь черепаху на орбиту:
ОРБИТА
До каких пор она будет кружиться? Нельзя же ждать до бесконечности! Нажмем на клавишу МК - Г.
Если разобраться хорошо в процедуре ОРБИТА, можно заметить, что черепаха должна выполнять бесконечное число раз только два действия: ВПЕРЕД 1 и ВПРАВО 1. Но в таком случае команда ПОВТОРИ не нужна. Процедуру ОРБИТА можно сократить:
ЭТО ОРБИТА
ВПЕРЕД 1
ВПРАВО 1
ОРБИТА
КОНЕЦ
При выполнении процедуры черепаха сделает шар вперед, повернется вправо на один градус и снова выполнит процедуру ОРБИТА, т. е. опять сделает шаг вперед, повернется вправо на один градус и так - до бесконечности.
Проверим:
ОРБИТА
Как мы и ожидали, поведение черепахи не изменилось.
А теперь дадим волю фантазии и представим себе, как будет двигаться черепаха по треугольной, квадратной и пятиугольной орбите:
ЭТО ОРБИТА1
ВПЕРЕД 50
ВПРАВО 120
ОРБИТА 1
КОНЕЦ
ЭТО ОРБИТА2
ВПЕРЕД 50
ВПРАВО 90
ОРБИТА2
КОНЕЦ
ЭТО ОРБИТА3
ВПЕРЕД 50
ВПРАВО 72
ОРБИТА3
КОНЕЦ
Естественно, что на каждой орбите движение осуществляется по сокращенной процедуре. (Не забывайте, что сигналом аварийного останова служит МК - Г.)
Процедуры ОРБИТА, ОРБИТА 1, ОРБИТА2 и ОРБИТА3 используют сами себя. Такие процедуры называются рекурсивными.
Заметим, что последние три процедуры отличаются только величиной угла, на который поворачивается черепаха. Конечно, можно экспериментировать и с другими углами:
ЭТО ОРБИТА4
ВПЕРЕД 50
ВПРАВО 160
ОРБИТА4
КОНЕЦ
ПОНЯТНО, ЧТО ТАКОЕ ОРБИТА4.
ЭТО ОРБИТА5
ВПЕРЕД
ВПРАВО 144
ОРБИТ А5
КОНЕЦ
ПОНЯТНО, ЧТО ТАКОЕ ОРБИТА5.
Проверим:
ОРБИТ А4
ГРАФИКА
ОРБИТА5
Ясно, что черепаха может двигаться и по звездообразной орбите.
Сделаем еще один эксперимент:
ЭТО ОРБИТА6
ВПЕРЕД 60
ВПРАВО 3
ОРБИТА6
КОНЕЦ
ПОНЯТНО, ЧТО ТАКОЕ ОРБИТА6.
ОРБИТА6
Экран оказался тесным для черепахи, и она совсем запуталась. Возможно, для многих из вас рекурсивные процедуры также сначала покажутся запутанными. Но стоит лишь один раз в них разобраться, как сих помощью вы сможете совершать чудеса.
Упражнения
Которая из следующих процедур позволяет получить фигуру с наибольшей площадью?
ЭТО ФИГУРА1
ВПЕРЕД 20
ВПРАВО 120
ФИГУРА1
КОНЕЦ
ЭТО ФИГУРА2
ВПЕРЕД 20
ВПРАВО 30
ФИГУР А2
КОНЕЦ
ЭТО ФИГУРА3
ВПЕРЕД 20
ВПРАВО 60
ФИГУРА3
КОНЕЦ
В одной из процедур упр. 1 сделайте следующие изменения:
а) замените команду ВПЕРЕД командой НАЗАД;
б) замените команду ВПРАВО командой ВЛЕВО;
в) сделайте одновременно замены а) и б);
г) поменяйте местами команды, используя все возможные комбинации.
Что получается в результате действия измененной процедуры?
Сократите процедуру:
ЭТО ФИГУРА4
ВПЕРЕД 20
ВПРАВО 25
ВЛЕВО 145
ВПРАВО 480
ВПЕРЕД 10
ВПРАВО 20
НАЗАД 0
ВПРАВО 70
ВПЕРЕД 15
КОНЕЦ
Напишите рекурсивную процедуру, при выполнении которой черепаха будет двигаться по восьмиконечной звезде.
Заставьте черепаху двигаться по шестиугольной, восьмиугольной и девяти угольной орбитам.
Напишите рекурсивную процедуру, при выполнении которой черепаха будет двигаться подобно секундной стрелке часов.
Напишите рекурсивную процедуру, при выполнении которой черепаха двигается равномерно прямолинейно со скоростью 10 шагов в секунду.
Напишите рекурсивную процедуру, при выполнении которой компьютер будет выводить на экран натуральный ряд чисел.
Напишите рекурсивную процедуру, при выполнении которой черепаха будет многократно писать на экране слово МИР.
Напишите рекурсивную процедуру, при выполнении которой компьютер будет играть многократно мелодию:
Какая фигура получится при выполнении процедуры ФИГУР А5:
ЭТО ФИГУРА5
СДЕЛАЙ "СТОРОНА 0
СДЕЛАЙ "УГОЛ 60
ФИГУРА6
КОНЕЦ
ЭТО ФИГУРА6
ВПЕРЕД :СТОРОНА
ВПРАВО :УГОЛ
СДЕЛАЙ ''СТОРОНА :СТОРОНА+3
ФИГУРА6
КОНЕЦ
Измените процедуру ФИГУРА5 (см. упр. 11) таким образом, чтобы получилась другая фигура.
Какую фигуру начертит черепаха при выполнении процедуры ФИГУРА7:
ЭТО ФИГУРА7
КВАДРАТ
ВПРАВО 10
ФИГУРА7
КОНЕЦ
ЭТО КВАДРАТ
ПОВТОРИ 4 [ВПЕРЕД 40 ВПРАВО 90]
КОНЕЦ
Замените в процедуре ФИГУРА7 (см. упр. 13) процедуру КВАДРАТ процедурой вычерчивания другой фигуры.
О каких природных явлениях можно сказать, что они "запрограммированы" при помощи рекурсивной процедуры?
Напишите программу для исполнения грузинской
народной песни Сулико: