вп :с пр :угол спираль :с – 5 :угол
конец
Таким образом, бесконечный рекурсивный процесс можно завершить, применив разветвляющийся алгоритм.
Задание 7.87
Сравните подготовленную вами ранее процедуру лабиринт, которая строит лабиринт из квадратных цветных плиток указанных размера и цвета, с процедурой, приведенной ниже:
это лабиринт ст цв
пусть "хт х_коор пусть "ут у = коор пусть "цт цвет
сч повтори 4 [плитка :ст :цв нов_x х_коор + :ст]
повтори 3 [плитка :ст :цв нов_у y_коор + :ст]
нов_у у_коор – :ст нов_x х_коор – :ст
повтори 6 [плитка :ст :цв нов_x х_коор – :ст]
пп нов_х :хт нов_у :ут нц :цт нк 90 пч
конец
В приведенном алгоритме Черепашка после рисования лабиринта помещается в середину первой плитки, а ее голова смотрит на Восток.
Используя программу лабиринт, нарисуйте па рабочем поле лабиринт из голубых (цвет 85) плиток размером 30 шагов. Измерьте цвет под пером Черепашки, выведя его значение в командный центр.
Задание 7.88
Черепашка находится в лабиринте. Вводя несколько раз команды вп 30 покажи цп = 85, проведите ее до поворота. Черепашка окажется вне лабиринта. Какое слово появится в командном центре — «истина» или «ложь»? Что теперь должна делать Черепашка?
Как научить Черепашку самостоятельно проходить лабиринт, если она уже стоит в нем и смотрит вдоль правильного пути? В этой задаче взаимодействуют два объекта — Черепашка и лабиринт. Черепашка должна знать параметры второго объекта — длину стороны и цвет плитки.
В этом алгоритме возникает необходимость разработать вспомогательный алгоритм ищи_ход. Черепашке надо вернуться на предыдущую плитку и повернуться на прямой угол.
Сравните придуманный вами алгоритм с представленным в табл. 7.21.
Задание 7.89
Запишите программы путь_по_лаб и ищи_ход на листе программ. Проверьте, как Черепашка выбирается из лабиринта. Выйдет ли Черепашка из лабиринта? Нужно ли задать еще один параметр объекта «Лабиринт», чтобы Черепашка распознала правильный путь?
Таблица 7.21.
Программы прохождения по лабиринту
Словесное описание | Программа |
Путь по лабиринту | это путь_по_лаб т с цл |
Ищи ход | это ищи_ход c |
Черепашка странно ведет себя в лабиринте. На каком-то участке она в панике бегает по одним и тем же плиткам до тех пор, пока не кончится отведенное время. Очевидно, ей необходима «нить Ариадны», чтобы отмечать уже пройденные участки. Например, Черепашка может оставлять след на каждой пройденной плитке:
это путь_по_лаб1 с цл
пп вп :с
если_иначе цп = :цл [нд :с по штамп пп вп :с]
[еспи_иначе цвет = :цл [стоп]
[нд :с лв 90]]
путь_ло_лаб1 :с :цл
конец
Теперь Черепашка поворачивается и ищет путь, по которому она еще не проходила. Здесь уместно применить рекурсию.
Задание 7.90
Запишите процедуру путь_по_лаб1 на листе программ. Проверьте, как теперь Черепашка выбирается из лабиринта. Сколько времени ей потребуется? Нужно ли задать еще один параметр объекта «Лабиринт», чтобы Черепашка остановилась в конце лабиринта? Предложите свой вариант решения.
Моделирование системы
Для моделирования в среде программирования некоторой системы необходимо понять, для чего вам нужна эта модель, то есть поставить цель. Затем вы описываете объекты, которые будут составлять систему, и, конечно, их параметры. Вам надо будет задать правила взаимодействия этих объектов. Одним словом, для моделирования вам придется подготовить инструмент — процедуры и модули.
Моделирование можно сравнить с представлением в театре. Вы создаете свой маленький мир — микромир, готовите декорации, маски, костюмы, подбираете актеров, учите с ними роли. Затем запускаете процесс изменения параметров определенного объекта. То, что происходит потом, кажется загадочным, но постепенно вы разбираетесь в ходе событий, иногда обнаруживаете ошибки в описании объектов или их взаимодействия и в конце концов достигаете поставленной цели.
Представьте, что Черепашка обучена нескольким профессиям и отправилась путешествовать по рабочему полю. Судьба забрасывает Черепашку в разные части света. В зависимости от положения на координатной плоскости Черепашка выполняет ту или иную известную ей работу, например рисует определенный объект.
Цель нашего моделирования — освоить законы логики. Для этого вы познакомитесь с историями из жизни Черепашки в созданном микромире. Каждая история происходит в течение времени t, поэтому ее можно моделировать с помощью цикла.
На листе программ вам нужно подготовить инструменты для рисования объектов, создания процессов из жизни Черепашки в роли разных мастеров. Необходимые процедуры описаны в табл. 7.22 и 7.23.
История 1. Черепашка-лесник
Всякий раз, попадая на поле справа от вертикальной границы х = 60, Черепашка должна сажать дерево. Цвет дерева выбирается случайно в интервале от 51 до 58. Высота дерева должна быть не более 20 шагов Черепашки.
История 2. Черепашка-садовник
Всякий раз. попадая на поле слева от вертикальной границы х = 0. Черепашка должна сажать цветок. Цвет цветка выбирается случайно в интервале от 41 до 48. Количество лепестков цветка — не более 8.
Задание 7.91
Запишите процедуры, перечисленные в табл. 722 и 7.23. на листе программ и проверьте, как они работают.
Таблица 7.22.
Инструменты-процедуры для создания объектов (к заданию 7.91)
Объект | Параметры | Инструмент-процедура | |
Название | Значение | ||
Луга правая | Угол поворота | а | это дуга_пр а с |
Лепесток из двух дуг | Нет | нет | это пепесток дуга_пр 99 в.25 пр 99 дуга_пр 99 в.25 пр 99 конец |
Цветок | Количество лепестков | к | это цветок к ц по нц :ц нк 0 вп 30 повтори :к [лепесток пр 360 / :к пп конец |
Ветка | Высота | в | это ветка в вп :в нд :в пв 15 вп :в нд :в пр 30 вп :в нд :в лв 15 нд :в конец |
Дерево | Высота | в | это дерево в ц нц :ц нк 0 по лв 15 ветка :в / 2 пр 30 ветка :в / 2 лв 15 нд :в / 4 лв 15 ветка :в пр 30 ветка :в лв 15 нд :в / 4 пп конец |
Плитка | Сторона | с | плитка :с :ц (см. табл. 7.18) |
Таблица 7.23.
Инструменты для создании продета»
Процесс (действия за один проход цикла) | Инструмент (процедура) |
Судьба, забрасывающая исполнителя Черепашку и случайную точку | это фортуна |
Посадка дерева со случайными высотой и цветом | это лесник |
Посадка цветка со случайными числом лепестков и цветом | это садовник |
Задание 7.92
Напишите по словесному алгоритму программу история_1 для моделирования первой истории в течение времени t:
Алгоритм истории 1
Повторить с раз следующие действия:
Судьба забросила Черепашку в случайную точку.
Если х > 60 (справа от вертикальной границы), то выполнить роль лесника
Конец цикла
Конец истории 1
Задание 7.93
Напишите по словесному алгоритму программу история_2 для моделирования второй истории в течение времени t:
Алгоритм истории 2
Повторить t раз следующие действия:
Судьба забросила Черепашку в случайную точку.
Если х < 0 (слева от вертикальной границы), то выполнить роль садовника
Конец цикла
Конец истории 2
Задания для самостоятельной работы
Задание 7.94. Выведите в командный центр с помощью команды покажи результаты сравнения:
а) 2 2 = 4;
б) 21 / 7 > 3;
в) 7 3 = 21.
Задание 7.95. Что выведет Черепашка на рабочее поле после выполнения следующих команд:
а) пусть "а 12 нц 12 пиши :а = цвет
б) нов_х 200 пиши х_коор > 0
в) нов_у –150 пиши у_коор < –100
г) пусть "b у_коор < –100 пиши :b
Задание 7.96. Нарисуйте блок-схему алгоритма прохождения лабиринта.
Задание 7.97. Приведите примеры, когда выбор тех или иных действий зависит от некоторого условия.
Задание 7.98. Нарисуйте в тетради координатную плоскость. Покажите на ней, что будет изображено на рабочем поле после выполнения команд:
а) сотри история_1 5;
б) сотри история_2 6.
Сколько объектов-деревьев и объектов-цветков будет нарисовано на экране? Где они будут расположены?
Задание 7.99. Развитие задачи про лабиринт. Добавьте объекту «Лабиринт» еще один параметр, который показывал бы. что Черепашка вышла из лабиринта и может остановиться. Опишите словами и блок-схемой алгоритм прохода лабиринта с учетом анализа значения нового параметра.
Задание 7.100. Составьте процедуру рисования спирали, которая раскручивается, увеличивая после каждого поворота длину отрезка.
Задание 7.101. Что будет выведено в командный центр по команде:
а) покажи 113 < 50;
б) покажи (целое 25 / 5) = 0;
в) покажи цвет = цп.
Задание 7.102. Какую команду надо ввести, чтобы в командном окне было печатано да, если цвет под Черепашкой равен О, и нет, если цвет не равен О?
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 |


