Циклические алгоритмы

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

В языке КуМир есть специальные команды для организации программы с циклическим алгоритмом.

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

Цикл n раз Цикл пока Цикл «до тех пор»
Общий вид команды:

нц

тело_цикла

кц

Общий вид цикла пока:

нц пока условие

· тело_цикла

кц

 

Общий вид цикла до тех пор:

нц

· тело_цикла

кц_при условие

Команды тела цикла будут выполнены n раз.

При выполнении цикла пока Робот циклически повторяет следующие действия:

·       Проверяет записанное после служебного слова пока условие.

·       Если условие не соблюдается, то выполнение цикла завершается и Робот начинает выполнять команды, записанные после кц.

При выполнении цикла до тех пор Робот циклически повторяет следующие действия:

·       Выполняет тело цикла.

·       Проверяет записанное после служебного слова кц_при условие.

∙ Если условие соблюдается, то выполнение цикла завершается и Робот начинает выполнять команды, записанные после кц_при. Если же условие не соблюдается, то Робот выполняет тело цикла, снова проверяет условие и т.д.

 

 

Цикл n раз

Видео: Урок 3. КуМир. Цикл со счетчиком, автор A Ch

 

 

Цикл пока

 

Видео: Урок 2. КуМир. Цикл с условием, автор A Ch

Задание 1. 

                                    

На бес­ко­неч­ном поле име­ет­ся лестница. Сна­ча­ла лест­ни­ца спус­ка­ет­ся вниз слева направо,

потом под­ни­ма­ет­ся вверх также слева направо.

После подъ­ема лест­ни­ца пе­ре­хо­дит в вер­ти­каль­ную стену. Вы­со­та каж­дой ступени — 1 клетка, ширина — 1 клетка.

Ко­ли­че­ство ступенек, ве­ду­щих вверх, и ко­ли­че­ство ступенек, ве­ду­щих вниз, неизвестно.

Между спус­ком и подъ­емом ши­ри­на площадки — 1 клетка. Робот на­хо­дит­ся в клетке,

рас­по­ло­жен­ной в на­ча­ле спуска.

На ри­сун­ке ука­зан один из воз­мож­ных спо­со­бов рас­по­ло­же­ния стен и Ро­бо­та

(Робот обо­зна­чен бук­вой «Р») 

Решение

использовать Робот
алг Колодец
нач
нц пока снизу свободно
вниз
кц
нц пока не снизу свободно
вправо
кц
нц пока снизу свободно
вниз
закрасить
если справа свободно
то вправо
все
закрасить
кц
нц пока не снизу свободно
вверх
закрасить
если справа свободно то
вправо
закрасить
иначе влево
все
кц
кон

                                                                 

Напишите для Ро­бо­та алгоритм, за­кра­ши­ва­ю­щий все клетки, рас­по­ло­жен­ные не­по­сред­ствен­но

над лестницей, как по­ка­за­но на рисунке.

Тре­бу­ет­ся за­кра­сить толь­ко клетки, удо­вле­тво­ря­ю­щие дан­но­му условию.

Например, для приведённого выше ри­сун­ка Робот

дол­жен за­кра­сить сле­ду­ю­щие клет­ки (см. рисунок).

Конечное рас­по­ло­же­ние Ро­бо­та может быть произвольным. Ал­го­ритм дол­жен ре­шать за­да­чу

для про­из­воль­но­го раз­ме­ра поля  и лю­бо­го до­пу­сти­мо­го рас­по­ло­же­ния стен внут­ри

пря­мо­уголь­но­го поля.

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

долж­но завершиться.

Выполните задание.

 

На бес­ко­неч­ном поле име­ют­ся 4 стены, рас­по­ло­жен­ные в форме прямоугольника.

Длины вер­ти­каль­ных и го­ри­зон­таль­ных стен неизвестны.

Робот на­хо­дит­ся в клетке, рас­по­ло­жен­ной в левом верх­нем углу прямоугольника.

На ри­сун­ке указан один из воз­мож­ных способов рас­по­ло­же­ния стен и Ро­бо­та

(Робот обо­зна­чен буквой «Р»).

Решение:

использовать Робот

алг Стороны

нач

нц пока справа свободно

вправо

кц

нц пока снизу свободно

закрасить

вниз

кц

нц пока слева свободно

закрасить

влево

кц

закрасить

кон

Напишите для Ро­бо­та алгоритм, за­кра­ши­ва­ю­щий все клетки, рас­по­ло­жен­ные с внут­рен­ней

стороны

пра­вой и ниж­ней стен.

Робот дол­жен закрасить толь­ко клетки, удо­вле­тво­ря­ю­щие данному условию.

Например, для приведённого выше ри­сун­ка Робот дол­жен закрасить сле­ду­ю­щие клетки

(см. рисунок).

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

завершиться.

Ко­неч­ное расположение Ро­бо­та может быть произвольным.

Ал­го­ритм должен ре­шать задачу для лю­бо­го допустимого рас­по­ло­же­ния стен и лю­бо­го

расположения и раз­ме­ра проходов внут­ри стен

Выполните задание самостоятельно

 

На бес­ко­неч­ном поле име­ет­ся лестница. Сна­ча­ла лест­ни­ца спус­ка­ет­ся вниз спра­ва налево, затем спус­ка­ет­ся вниз слева направо.

Вы­со­та каж­дой ступени — одна клетка, ширина — две клетки. Робот на­хо­дит­ся спра­ва от верх­ней сту­пе­ни лестницы.

Ко­ли­че­ство ступенек, ве­ду­щих влево, и ко­ли­че­ство ступенек, ве­ду­щих вправо, неизвестно.

На ри­сун­ке ука­зан один из воз­мож­ных спо­со­бов рас­по­ло­же­ния лест­ни­цы и Ро­бо­та (Робот обо­зна­чен бук­вой «Р»).

Напишите для Ро­бо­та алгоритм, за­кра­ши­ва­ю­щий все клетки, рас­по­ло­жен­ные не­по­сред­ствен­но над сту­пе­ня­ми лестницы,

спус­ка­ю­щей­ся слева направо. Тре­бу­ет­ся за­кра­сить толь­ко клетки, удо­вле­тво­ря­ю­щие дан­но­му условию.

Например, для приведённого выше ри­сун­ка Робот дол­жен за­кра­сить сле­ду­ю­щие клет­ки (см. рисунок).

Конечное рас­по­ло­же­ние Ро­бо­та может быть произвольным. Ал­го­ритм дол­жен ре­шать за­да­чу для про­из­воль­но­го раз­ме­ра поля и

лю­бо­го до­пу­сти­мо­го рас­по­ло­же­ния стен внут­ри пря­мо­уголь­но­го поля. При ис­пол­не­нии ал­го­рит­ма Робот не дол­жен разрушиться,

вы­пол­не­ние ал­го­рит­ма долж­но завершиться. Ал­го­ритм может быть вы­пол­нен в среде фор­маль­но­го ис­пол­ни­те­ля или за­пи­сан в 

тек­сто­вом редакторе. Со­хра­ни­те ал­го­ритм в тек­сто­вом файле.