Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
языки программирования.rtf
Скачиваний:
8
Добавлен:
26.11.2019
Размер:
217.88 Кб
Скачать

Повторения и циклы.

При написании программ очень часто приходится многократно повторять одни и те же команды. Например, в процедуре построения квадрата 4 раза повторяются две команды:

forward 50

right 90

Для того, чтобы ускорить процесс написания программ в языке Лого, предусмотрен специальный оператор цикла. Он имеет следующий формат записи:

repeat <выражение> [команды]

где:

<выражение> - это указатель количества необходимых повторений, значением выражения должно быть натуральное число или ноль, иначе будет выдано сообщение об ошибке;

[ - указатель начала цикла;

] – указатель конца цикла.

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

Таким образом, черепашка после слова repeat действует до тех пор, пока не выполнит нужную последовательность команд заданное число раз.

Если оператор цикла пустой, т.е. после слова repeat в квадратных скобках ничего не стоит, (тело цикла отсутствует), то черепашка какое-то время не будет реагировать на команды, а будет многократно повторять НИЧЕГО. Например, repeat 1000 []. Иногда это необходимо для обеспечения паузы между выполнением команд.

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

При помощи команды repeat можно составлять довольно небольшие процедуры вычерчивания различных фигур, в частности правильных многоугольников.

to шестиугольник

repeat 6 [forward 40 right 60]

end

to десятиугольник

repeat 10 [forward 10 right 36]

end

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

to многоугольник :к :х

repeat :к [forwardright 360/:к]

end

где – число сторон многоугольника,

– длина его стороны

Считая, что при выводе на экран изображения правильного многоугольника, имеющего 360 сторон длиной в 1 шаг, мало чем отличается от изображения окружности, запишем следующую процедуру:

to окружность

repeat 360 [forward 1 right 1]

end

Полученный 360-угольник является наилучшим приближением к окружности, так как черепашка не умеет поворачиваться на углы меньшие одного градуса и перемещаться на расстояния, меньшие одного шага. Длина этой “окружности” 360 шагов, а радиус можно найти по формуле l=2pr (r=57,3).

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

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