Исполнитель Робот действует на прямоугольном клетчатом поле. Между некоторыми клетками поля могут быть расположены стены. Некоторые клетки могут быть закрашены (рис. 3.11).
Робот занимает ровно одну клетку поля. По командам вверх, вниз, влево и вправо Робот перемещается в сосед-нюю клетку в указанном направлении. Если на пути оказывается стена, то происходит отказ — выдается сообщение о невозможности выполнить очередную команду.
По команде закрасить Робот закрашивает клетку, в которой стоит. Если клетка уже была закрашена, то она закрасится повторно, хотя никаких видимых изменений не произойдет.
Важно помнить, что Робот может исполнять только правильно записанные команды. Например, если вместо команды вниз написать внис, то Робот эту запись не поймет и сразу же сообщит об ошибке.
♦ Вспомните, как называются ошибки в записи команд. Каких еще ошибок следует избегать при разработке алгоритмов?
Напишем программу, исполняя которую Робот нарисует на клетчатом поле меандр из пяти витков (рис. 3.12).
Рис. 3.12
Программа может иметь вид:
ПОВТОРИТЬ 5 РАЗ
вправо закрась; влево закрась; влево закрась; вверх закрась; вверх закрась; вправо; закрась вправо; вправо; вправо вниз; вниз
КОНЕЦ
Здесь мы использовали конструкцию повторения, так как совершенно одинаковые фрагменты повторяются на рисунке 5 раз. При записи тела цикла мы в одной строке через точку с запятой записывали несколько команд.
Если оформить процедуру виток, то основная программа окажется совсем короткой.
Вспомогательный алгоритм:ПРОЦ виток НАЧАЛО вправо закрась; влево закрась; влево закрась; вверх закрась; вверх закрась; вправо; закрась вправо; вправо; вправо вниз; вниз КОНЕЦ |
Основной алгоритм:ПОВТОРИТЬ 5 РАЗ виток КОНЕЦ |
♦ Предложите свой вариант программы для рисования меандра.