Обсудим решение следующей задачи.

Исходное положение: Кенгуренок у левого края поля, направление – на восток. Требуется нарисовать горизонтальную линию через весь экран.

Задачу можно решить, написав 15 раз команду шаг (если поперек поля рисунка 15 шагов). Но есть и более короткий вариант программы. Вот он:

пока впереди не край, повторять

шаг

конец цикла

Здесь использована команда, которая называется циклом. Формат команды цикла следующий:

пока <условие>, повторять

<тело цикла>

конец цикла

Это первая команда из СКИ, которая использует обратную связь между графическим исполнителем и управляющим им компьютером. Она заключается в том, что проверяется, не вышел ли Кенгуренок на край поля и не грозит ли ему следующий шаг или прыжок в этом направлении аварией? Проверяемые условия звучат так: «впереди край?» или «впереди не край?». На что машина получает от исполнителя ответ «да» или «нет».

В приведенном примере проверяется условие «Впереди не край?». Если «да», то делается шаг (то есть выполняется <тело цикла>). Затем происходит возврат на проверку условия, и все повторяется. Если проверка условия дает отрицательный результат (то есть впереди – край), то выполнение цикла завершится и будет исполняться следующая команда программы.

При программировании цикла важно думать о том, чтобы цикл был конечным. Цикл, записанный выше, – конечный. Двигаясь в одном направлении, Кенгуренок обязательно достигнет края и на этом выполнение цикла закончится.

Ситуация, при которой выполнение цикла никогда не заканчивается, называется зацикливанием. Пусть Кенгуренок находится в середине поля. Исполнение следующего цикла:

пока впереди не край, повторять

шаг

поворот

конец цикла

никогда не закончится. Кенгуренок будет бесконечно рисовать квадратик, т.к. проверка условия «впереди не край?» всегда будет давать положительный результат.

Теперь составим программу, по которой графический исполнитель нарисует прямоугольную рамку по краю поля. Исходное положение: Кенгуренок находится в левом верхнем углу, смотрит на юг.

Рамка состоит из четырех линий, поэтому разумно воспользоваться процедурой, проводящей линию от края до края поля. Опять будем действовать методом последовательной детализации. Напишем сначала основную программу.

сделай Линия

поворот

сделай Линия

поворот

сделай Линия

поворот

сделай Линия

Рис. 4.1. Результат программы «Рамка»

Программа проведения линии нами уже рассматривалась. Осталось оформить ее в виде процедуры.

процедура Линия

пока впереди не край, повторять

шаг

конец цикла

конец процедуры

При составлении этой программы использовалась одношаговая детализация в такой последовательности:

ОСНОВНАЯ ПРОГРАММА

1 шаг детализации

процедура Линия

Хостинг от uCoz