Откройте в новом окне ссылку или откройте вэб-страницу с адресом https://snap.berkeley.edu/snap/snap.html#present:Username=kivan2020&ProjectName=1.Tema2.Zadanie_1.
О том какую нам предстоит решить задачу, недвусмысленно станет понятно после беглого взгляда на иллюстрацию к заданию. Какое должно получится выражение известно всем хотя можно порассуждать о том, что и забияки могут заплакать, что и собаки не быстро угомонятся.
2.1. Постановка задачи
Все буквы фразы «После драки» с помощью робота переместить с четвёртой строки сцены на девятую, то есть поднять на пять строк вверх.
2.2. Построение алгоритма
Общий план действий таков. Робота подводим под ближайшую карточку с буквой а затем поднимаем его вверх так, чтобы карточка оказалась на девятой строке. Далее то же самое проделываем со второй и последующими карточками.
Детализируем и иллюстрируем этот общий план.
1. Делаем два шага вправо и подводим робота под букву П
2. Перемещаем карточку на девятую строку для этого выполняем семь шагов вверх.
3. Спускаемся вниз на пять шагов за следующей карточкой
4. Делаем шаг вправо и подводим робота под следующую букву
5. Делаем пять шагов вверх и поднимаем карточку
Не надо обладать особым даром предвидения чтобы понять, что для того, чтобы поднять следующую букву надо повторить последние три действия, а именно: спустится вниз на пять шагов, сделать шаг вправо и затем подняться вверх на пять шагов. Таким же образом можно поступить и с остальными буквами и полностью решить нашу задачу. Траектория движения робота будет выглядеть следующим образом:
Соответствующий этой траектории алгоритм движения робота следующий:
1. Сделать два шага вправо.
2. Подняться вверх на семь шагов.
3. Повторить 10 раз группу команд
3.1. Спустится вниз на пять шагов
3.2. Сделать шаг вправо
3.3. Подняться вверх на пять шагов
2.3. Циклы. Виды циклов
На завершающем этапе нам потребовалось десять раз повторить одну и ту же последовательность действий, а именно: «Спустится вниз на пять шагов», «Сделать шаг вправо» «Подняться вверх на пять шагов». Во всех высокоуровневых языках программирования для реализации задач многократного повторения одинаковых операций существует специальная команда – оператор цикла.
В арсенале робота-метранпажа два вида операторов цикла.
Форма оператора напоминает скобу. Внутрь этой скобы вставляются команды (одна или несколько), которые необходимо многократно повторить.
Последовательность команд, предназначенная для многократного исполнения, называется телом цикла. Единичное выполнение тела цикла называется итерацией.
У оператора цикла обязательно имеется элемент, который указывает «сколько раз?» или «при каком условии?» будет осуществляться итерация. Так в первом примере последовательность команд «5 шагов вниз», «1 шаг вправо» и «5 шагов вниз» будет выполнена десять раз, а во втором примере исполнитель будет двигаться вверх пока не достигнет восемнадцатой строки. Выражение, определяющее, будет в очередной раз выполняться итерация или цикл завершится называется условием выполнения цикла.
2.4. Составление программы (скрипта)
В соответствии с алгоритмом и составом арсенала команд исполнителя формируем программу. Впервые применяем цикл со счётчиком.
Листинг 3
- при нажатии на зелёный флажок
- 2 шага вправо
- 7 шагов вверх
- повторить (10) раз
5 шагов вниз
1 шаг вправо
5 шагов вверх
2.5. Сборка скрипта
Постарайтесь самостоятельно по листингу 3 собрать скрипт. В пояснении нуждается лишь один вопрос. При сравнении размеров блока оператора цикла и тела цикла может возникнуть вопрос, связанный с тем, что размер тела превышает размер оператора (см. рис.).
Волноваться по этому поводу не надо. Оператор ведёт себя как резиновый – легко увеличивается в размерах и обхватывает любое количество командных блоков.
2.6. Как это работает
Запустите программу в режиме отображения шагов выполнения. Напоминаю, что для этого необходимо кликнуть мышкой по кнопке на панели меню (см. рис.).
После пуска программы начинает «работать» первый сверху блок – «2 шага вправо». Робот, подчиняясь этой команде зашагал вправо.
После того как робот сделал два шага он оказался под буквой «П». Но тут эстафета передана команде «7 шагов вверх» и робот двинулся вверх, заодно толкая перед собой букву «П».
Как только робот установил букву «П», как тут же эстафета команд завертелась внутри оператора цикла. Первой сработала команда «5 шагов вниз» и робот двинулся вниз за второй буквой фразы
Выполнив 5 шагов, робот оказался на третьей строке, то есть ниже оставшихся букв фразы и тут же следующая команда заставила его «поднырнуть» под букву «о».
Как только робот сделал шаг вправо и оказался под буквой «о», следующая команда погнала его вверх. Робот послушно зашагал вверх, заодно толкая перед собой букву «о». Команда «5 шагов вверх» является последней командой тела цикла.
С завершением выполнения последней команды тела цикла завершается выполнение первой итерации. Вторая буква встала на своё место. Но условие выхода из цикла не выполнено. Должно быть выполнено десять итераций. Поэтому оператор цикла вновь активизирует первую команду тела цикла и робот зашагал за следующей буквой.
После десятой итерации все буквы фразы заняли своё место, а программа закончила свою работу.
2.7. Резюме
- Во всех высокоуровневых языках программирования для реализации задач многократного повторения одинаковых операций существует специальная команда – оператор цикла.
- В арсенале робота-метранпажа два вида операторов цикла – оператор цикла со счётчиком и оператор цикла с предусловием.
- Последовательность команд, предназначенная для многократного исполнения, называется телом цикла.
- Единичное выполнение тела цикла называется итерацией.
- У оператора цикла обязательно имеется элемент, который указывает «сколько раз?» или «при каком условии?» будет осуществляться итерация. Выражение, определяющее, будет в очередной раз выполняться итерация или цикл завершится, называется условием выполнения цикла или, соответственно, условие выхода из цикла.