Решения заданий пункта 3

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

1. Раскручивающаяся спираль

Здесь необходимо учесть два момента. Во-первых, в отличие от закручивающейся спирали, в этой процедуре Черепашка с каждым витком спирали увеличивает его длину. Во-вторых, так как с каждым повторным вызовом процедуры параметр ее (длина звена) увеличивается, то следует соответственно изменить и условие остановки.


3. Пятиугольная и шестиугольная спирали

Вспомните, как определяется угол поворота Черепашки при рисовании 5- и 6-угольников.


4. Спираль с изменяющимися звеном и углом поворота

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

to spiral :size :angle
   if :size<2 [stop]
   fd :size rt :angle
   spiral :size-2 :angle-0.1
end

Вызовите процедуру с параметрами 150 120 или 100 90.


5. Самостирающаяся спираль

Проследите внимательно, в каком положении Черепашка завершает рисование закручивающейся спирали. Как следует ее развернуть, чтобы направить вдоль последнего звена спирали? В каком направлении должна поворачиваться Черепашка, чтобы пройти весь путь по спирали обратно?
По-видимому, наша программа будет состоять из трех процедур.
Одна процедура расскажет Черепашке как рисовать уже знакомую нам закручивающуюся спираль.
Другая процедура объяснит ей, как со стирательной резинкой в "руке" пройти этот путь в обратном направлении.
Третья же процедура - главная - сначала вызовет первую процедуру, затем развернет Черепашку в нужном напрвлении, даст ей в "руку" стирательную резинку и вызовет вторую процедуру.
Наша программа будет интересней, если процесс стирания/рисования мы повторим несколько раз. Тогда прогрмма может выглядеть, например, следующим образом.

to spiral.right :size
;Закручивающаяся "правая" спираль
   if :size<2 [stop]
   fd :size rt 90
   spiral.right :size-2
end

to spiral.left :size
;Раскручивающаяся "левая" спираль
   if :size>150 [stop]
   fd :size lt 90
   spiral.left :size+2
end

to spirals.main
;Главная процедура
;Использует команду ppt - перо рисуй
   cs
   repeat 10[spiral.right 150
             pe rt 90
             spiral.left 2 
             ppt lt 90]
end


6. Самостирающиеся треугольные, пяти- и шестиугольные спирали

Отличие этой задачи от предыдущей только в углах поворота. Вспомните, как определяется угол поворота Черепашки при рисовании треугольников, 5- и 6-угольников.


Вернемся назад?