Здесь приведены возможные варианты решений заданий пункта 5. Они, безусловно, не являются единственно правильными.
Предложенные решения однотипны и основываются на методе, подробно рассмотренном в основном тексте. Дерзайте, быть может, вы найдете более интересные решения.
При разработке программ использовалась доменная система имен , при которой имя процедуры состоит из двух и более частей, разделенных точками. Первая часть имени является общей для всех процедур, входящих в одну программу и это имя определяет, что именно является результатом ее работы. Например, имя hexagon говорит о том, что результат программы - графические изображения - имеет в своей основе шестиугольники. Имя pentagon характеризует пятиугольники, square - четырехугольники, а triangle - треугольники. Вторая часть имени характеризует конкретную процедуру и может повторяться в разных программах. Например, имя main говорит о том, что эта процедура является главной в программе. Такая форма именования процедур особенно удобна в MSWLogo потому, что в окне редактора процедуры из рабочей области располагаются по алфавиту и при таком способе именования процедуры одной программы будут соседями.
to hexagon.main ; Программа для рисования шестиугольных "сот" cs ht hexagon.do 30 3 end to hexagon.do :size :level if :level<1 [stop] repeat 6 [hexagon.shape :size :level rt 180 rt 60] end to hexagon.shape :size :level fd :size rt 180 hexagon.do :size :level-1 end
to triangle.main ; Программа для рисования треугольных "сот" cs ht triangle.do 30 3 end to triangle.do :size :level if :level<1 [stop] repeat 5 [triangle.shape :size :level rt 180 rt 120] end to triangle.shape :size :level fd :size rt 180 pentagon.do :size :level-1 end
to pentagon.main ; Программа для рисования пятиугольных "сот" cs ht pentagon.do 30 3 end to pentagon.do :size :level if :level<1 [stop] repeat 5 [pentagon.shape :size :level rt 180 rt 72] end to pentagon.shape :size :level fd :size rt 180 pentagon.do :size :level-1 end
to pentagon1.main ; Программа, воспроизводящая рисунок 5 cs ht pentagon1.do 90 4 end to pentagon1.do :size :level if :level<1 [stop] repeat 5 [pentagon1.shape :size :level rt 180 fd :size/3 rt 72] end to pentagon1.shape :size :level fd 2*:size/3 rt 180 pentagon1.do :size/3 :level-1 end
to hexagon1.main ; Программа, воспроизводящая рисунок 8 cs ht hexagon1.do 90 3 end to hexagon1.do :size :level if :level<1 [stop] repeat 6 [hexagon1.shape :size :level rt 180 fd :size/3 rt 60] end to hexagon1.shape :size :level fd 2*:size/3 rt 180 hexagon1.do :size/3 :level-1 end