Изучаем Алгоритмику Мой КуМир
Цикл с предусловием
Робот играет и работает
Определяем границы
Исполнитель Робот Циклические алгоритмы
Цикл с предусловием
Пример. Робот находится в одной из клеток поля неопределённого размера. Дополнительных стен на поле нет. Составьте программу, по которой Робот закрасит клетки по периметру вдоль стен.
Для выполнения этого задания необходимо сначала перевести Робота в одну из угловых клеток, например в верхнюю левую клетку. Если бы мы знали точное расположение Робота, то могли бы перевести его в нужную клетку с помощью цикла нц-раз-кц . Но так как местоположение Робота неизвестно и возможен вариант, что Робот изначально стоит в угловой клетке, надо найти другое решение.
Чтобы Робот оказался в верхнем левом углу, надо двигаться сначала в одном направлении (например, вверх), пока не дойдём до стены, а затем в другом (влево), пока не дойдём до стены.
В школьном алгоритмическом языке существует специальная конструкция, которая позволяет организовать такие действия — это цикл с предусловием.
Цикл с предусловием
Общий вид цикла с предусловием:
нц пока услолвие . |тело цикла (последовательность команд) кц
Такой цикл предполагает выполнение следующих действий:
- Робот проверяет условие, записанное после служебного слова пока .
- Если условие истинно (Робот ответил «да»), то выполняется тело цикла, и Робот опять возвращается к проверке условия. Если условие ложно (Робот ответил «нет»), то цикл завершается, и выполняются команды, записанные после цикла.
В нашем случае, чтобы переместить Робота вверх до стены, а затем передвинуть Робота до стены влево, надо записать:
нц пока сверху свободно . вверх кц нц пока слева свободно . влево кц
Задание 1. Допишите программу из примера самостоятельно.
Цикл с предусловием
Задание 2. Внесите изменения в обстановку Робота так, чтобы он при выполнении данной программы прошёл путь, отмеченный пунктирной линией.
использовать Робот алг Путь нач . нц пока сверху свободно . . вправо . кц . нц пока клетка чистая . . вниз . кц . нц пока клетка закрашена . . влево . кц . нц пока слева стена . . вверх . кц кон
Цикл с предусловием
Задание 3. Внесите изменения в обстановку Робота так, чтобы он при выполнении данной программы прошёл путь, отмеченный пунктирной линией.
использовать Робот алг Путь нач . нц пока снизу стена . . вправо ; вниз . кц . нц пока клетка закрашена . . вправо . кц . нц пока слева свободно . . вниз . кц кон
Цикл с предусловием
Задание 4. Робот находится в одной из клеток квадратного поля неопределённого размера без дополнительных стен. Составьте программу, по которой Робот закрасит клетки по диагоналям.
Робот играет и работает
Задание 1. Представьте себе, что Робот стал играть в прятки. В одной из средних клеток нижней стены имеется укрытие. Робот находится в одной из клеток вне укрытия.
Составьте программу, по которой Робот спрячется в укрытие.
Протестируйте программу, устанавливая начальное положение Робота в отмеченные клетки.
Робот играет и работает
Задание 2. Роботу поручено покрасить забор. На рисунке закрашенная клетка означает, что забор с соответствующей стороны покрашен. Составьте программу для покраски забора Роботом и протестируйте её, устанавливая начальное положение Робота в отмеченные клетки.
Учтите в программе то, что краски выделено ровно столько, сколько требуется для покраски забора, значит, никакая клетка не должна краситься дважды.
Рекомендация. Перед закрашиванием клеток переведите Робота в особую клетку, с которой следует начинать закрашивание.
Робот играет и работает
Задание 3. Робот находится на бесконечном поле без стен и без закрашенных клеток . Установите соответствие между программами и описаниями действий Робота.
использовать Робот алг Загадка_1 нач . нц пока клетка чистая . . закрасить ; вправо . кц кон
использовать Робот алг Загадка_2 нач . нц пока клетка закрашена . . закрасить ; вправо . кц кон
использовать Робот алг Загадка_3 нач . нц пока клетка чистая . . вправо ; закрасить . кц кон
Описание программы
Робот не двинется с места и не покрасит ни одной клетки
Имя программ
Робот бесконечно двигается вправо и красит клетки на своём пути
Загадка_2
Загадка_1
Робот перейдёт вправо на одну клетку, покрасит её и остановится
Загадка_3
Определяем границы
Пример. Робот находится на поле без дополнительных стен и без закрашенных клеток. Высота поля 3 клетки, а ширина — не менее 5 клеток. Составьте программу, по которой Робот закрасит все клетки, расположенные в среднем ряду, отступив от боковых стен на 2 клетки.
На поле нет стен и нет признака, по которому можно было бы остановить процесс закрашивания. Но у нас есть возможность найти клетку, с которой надо начинать процесс закрашивания. Для этого надо сначала перевести Робота в угловую клетку, а затем — в первую закрашиваемую клетку.
Аналогично можно перевести Робота в клетку, в которой надо закончить процесс закрашивания: сделать это можно, также начиная от стены.
Если закрасить эти две клетки, то можно переформулировать поставленную задачу: закрасьте все клетки, находящиеся между двумя закрашенными.
Таким образом, мы разбили одну сложную задачу на несколько простых.
Определяем границы
Алгоритм решения задачи будет следующим:
- Перевести Робота в верхнюю левую клетку.
- Переместить Робота в клетку, с которой начинается закрашивание, и закрасить её.
- Перевести Робота до правой стены.
- Перевести Робота в крайнюю правую клетку, которую надо закрасить.
- Закрасить все клетки от той клетки, в которой Робот находится, до клетки, закрашенной при выполнении пункта 2.
Определяем границы
Задание. Робот находится на квадратном поле без дополнительных стен и без закрашенных клеток. Размер поля неизвестен. Составьте программу, по которой Робот закрасит клетки по образцу.
Указание. Сначала закрасьте границы области, затем — внутренние клетки области.
В презентации использованы материалы учебного пособия
Информатика. Изучаем алгоритмику. Мой КуМир. 5-6 классы / Е. А. Мирончик, И. Д. Куклина, Л. Л. Босова. — М.: БИНОМ. Лаборатория знаний, 2018.