Изучаем Алгоритмику Мой КуМир
Ветвление
Выбор
Датчики
Исполнитель Робот Разветвляющиеся алгоритмы
Ветвление
Стартовую обстановку Робота можно изменить: задать размеры поля, установить Робота в нужное исходное положение, добавить или удалить стены, закрасить клетки.
Для этого в меню выберите команду Робот → Редактировать обстановку .
Отредактируйте поле:
- поставьте или уберите стены — щелчок по границе клетки;
- закрасьте или очистите клетки — щелчок внутри клетки;
- переместите Робота, захватив его мышью;
- установите в клетке температуру или радиацию, использовав контекстное меню.
Для выхода из режима редактирования повторно выберите в меню Робот → Редактировать обстановку .
Обстановку можно сохранить в файл (Робот → Сохранить обстановку), а затем открыть (Робот → Загрузить обстановку).
Допускается редактировать стартовую обстановку, не сохраняя её.
Чтобы увидеть исходную обстановку, выберите в меню команду Робот → Вернуть исходную обстановку .
Ветвление
Пример 1. Робот находится в центре поля размером 5x5 клеток. На поле имеется одна стена длиной в одну клетку . Закрасьте клетку над Роботом.
- В каком случае такое решение задачи приведёт к ошибке?
- Может ли помешать работе программы вертикальная стена?
Возможно, что стена горизонтальная и находится над Роботом. В этом случае Робот должен обойти препятствие.
Если стены нет, то можно смело шагать вверх, если же стена имеется, то её нужно обойти. Получаем следующую программу:
использовать Робот
алг
нач
. если сверху стена
. . то
. . . вправо ; вверх
. . . влево ; закрасить
. . иначе
. . . вверх ; закрасить
. все
кон
Ветвление
Такие конструкции называют алгоритмами с ветвлением.
Общий вид операторов ветвления:
Полное ветвление:
Неполное ветвление:
если условие . то . . | серия команд все
если условие . то . . | 1 серия команд . иначе . . | 2 серия команд все
использовать Робот
алг
нач
. если сверху стена
. . то
. . . вправо ; вверх; влево
. . иначе
. . . вверх
. все
. закрасить
кон
Неполное ветвление используется в случае, когда при ложном условии никаких действий выполнять не требуется.
В предыдущем примере команда закрасить завершает обе ветви: ветвь то и ветвь иначе . Поэтому нет необходимости записывать эту команду в конструкцию ветвления, лучше ее записать после служебного слова все .
Ветвление
Команды-проверки
слева свободно
Если Робот может перейти в указанном направлении – ДА, иначе – НЕТ.
справа свободно
сверху свободно
снизу свободно
слева стена
Если рядом с Роботом в указанном направлении находится стена – ДА, иначе – НЕТ.
справа стена
сверху стена
снизу стена
клетка закрашена
клетка чистая
Если текущая клетка закрашена – ДА, иначе – НЕТ.
Если текущая клетка не закрашена – ДА, иначе – НЕТ.
При проверке можно использовать составные условия и проверить:
а) выполнение двух условий одновременно:
сверху свободно и слева свободно
б) выполнение хотя бы одного из двух условий:
сверху свободно или слева свободно
Ветвление
Задание 1. Подсчитайте, сколько на данном рисунке клеток, для которых истинно условие:
а) сверху стена
б) слева свободно
в) клетка чистая
г) слева стена и сверху стена
д) слева стена или справа стена
е) клетка чистая и слева свободно
ж) клетка чистая или слева свободно
Ветвление
Задание 2. Робот находится на поле размером 5x5 клеток без дополнительных стен. Если Робот находится рядом со стеной (стенами), то он должен закрасить ту клетку, в которой он стоит. Не забудьте протестировать программу, меняя исходное положение Робота. При запуске программы устанавливайте Робота в разные исходные положения: рядом с верхней, нижней, левой, правой стеной во всех четырёх углах, в центре поля.
Задание 3. Робот находится в центре поля размером 5x5 клеток. На поле имеется единственная закрашенная клетка. После выполнения программы должны быть закрашены две любые клетки. Дополнительных стен на поле нет. Не забудьте протестировать программу, меняя исходное положение Робота. При запуске программы устанавливайте Робота в разные исходные положения: в чистую клетку, в закрашенную клетку.
Задание 4. Робот находится на одной из некрайних клеток поля размером 5x5 клеток. Клетки поля закрашены в шахматном порядке. После выполнения программы Робот должен стоять в закрашенной клетке. Дополнительных стен на поле нет. Не забудьте протестировать программу, меняя исходное положение Робота. При запуске программы устанавливайте Робота в разные исходные положения: в чистую клетку, в закрашенную клетку.
Ветвление
Задание 5. Робот находится на поле размером 5x5 клеток без дополнительных стен. Составьте программу, по которой Робот отойдёт от стены (стен). Протестируйте программу, последовательно устанавливая начальное положение Робота в клетки, отмеченные на рисунке ромбом.
Задание 6. Робот находится на поле размером 5x5 клеток. Рядом с Роботом есть одиночная стена. Составьте программу, по которой Робот закрасит две клетки: клетку, в которой находится в стартовой позиции, и клетку с другой стороны от стены. Протестируйте программу, устанавливая начальное положение Робота в клетки, отмеченные на рисунке ромбом.
Задание 7. Робот находится на поле размером 5x5 клеток. Рядом с Роботом есть одиночная стена. Составьте программу, по которой Робот закрасит клетку с другой стороны стены и вернётся назад. Протестируйте программу, устанавливая начальное положение Робота в клетки, отмеченные на рисунке ромбом.
Выбор
Пример. Робот находится в центре поля размером 5x5 клеток.
Рядом с Роботом три стены. Выведите робота из «домика».
На первый взгляд, решение такое:
нач . если снизу свободно то вниз все . если сверху свободно то вверх все . если справа свободно то вправо все . если слева свободно то влево все кон
Разберём все случаи, в которых будем тестировать написанную программу.
Первый и третий тесты приводят к тому, что Робот делает возвратное движение — выходит из «домика» и опять заходит, оказываясь в клетке, с которой начал своё движение.
Выбор
Необходимо сделать так, чтобы Робот ничего больше не проверял в том случае, если сделал какое-нибудь движение.
Лучше всего подходит в этом случае конструкция выбор :
выбор . при снизу свободно : вниз . при сверху свободно : вверх . при справа свободно : вправо . при слева свободно : влево все
Программа выполнит команды по ветви с первым встретившимся истинным условием.
Выбор
Общий вид оператора выбора:
выбор . при условие_1 : серия_1 . при условие_2 : серия_2 . при условие_3 : серия_3 . . . . . иначе серия_N все
выбор . при условие_1 : серия_1 . при условие_2 : серия_2 . при условие_3 : серия_3 . . . . все
После служебного слова иначе нет условия. Серия команд после слова иначе выполнится в том случае, если все условия будут ложными.
Задание 1. Робот находится на поле размером 5x5 клеток. Расположение дополнительных стен неизвестно. Робот должен закрасить ту клетку, в которой он стоит, если он может сдвинуться с клетки.
Выбор
Задание 2. Робот находится на поле размером 5x5 клеток в левом верхнем углу. Дорога к правому нижнему углу идёт по коридору. Известно, что до правого нижнего угла можно дойти за 8 шагов. Протестируйте программу в обстановках:
Выбор
использовать Робот алг Слово нач . если снизу свободно . . то влево . . иначе вверх . все . если клетка чистая . . то вправо . . иначе . . . нц 2 раз вниз ; вправо кц . все . если снизу стена . . то нц 2 раз влево ; вверх кц . все . если клетка закрашена . . то вверх . . иначе влево . все . нц 2 раз . . вправо . . если клетка чистая то вниз все . кц кон
Задание 3. При выполнении данного алгоритма Робот пройдёт по клеткам, отмеченным буквами. Выполните этот алгоритм — и вы узнаете, как зовут лучшего друга Робота:
(больше); (не равно); = (больше или равно). Изменение температуры и радиации в стартовой обстановке выполняется в режиме редактирования обстановки (синее поле), предварительно выбрав нужный параметр одной из кнопок. Например, фрагмент программы, по которому надо закрасить клетку, если температура в ней не выше 100 градусов: если температура 100 . то закрасить все " width="640"
Датчики
Робот имеет два датчика — датчик температуры и датчик радиации, которые можно использовать в команде ветвления.
При составлении условия с температурой или радиацией используют математические знаки отношений:
(больше); (не равно); = (больше или равно).
Изменение температуры и радиации в стартовой обстановке выполняется в режиме редактирования обстановки (синее поле), предварительно выбрав нужный параметр одной из кнопок.
Например, фрагмент программы, по которому надо закрасить клетку, если температура в ней не выше 100 градусов:
если температура 100 . то закрасить все
Датчики
Задание 1. В узком коридоре размером 2 х 16 клеток спрятались невидимые Чудики. Появление Чудика вызывает повышение температуры в клетке поля выше 50 градусов. Заполните пропуски в программе Поиск, исполняя которую, Робот закрашивает клетки с Чудиками.
использовать Робот
алг Поиск
нач
. | движение вправо
. нц 16 раз
. . если температура .........
. . . то .........
. . все
. . если .........
. . . то вправо
. . все
. кц
. вниз
. | движение влево
. .........
кон
Датчики
Задание 2. Робот находится на поле размером 2 х 16 клеток. В некоторых клетках наблюдается повышенная радиация. Безопасным считается уровень радиации не выше 20 микрорентген в час. Составьте программу, по которой Робот:
а) закрасит те клетки, в которых радиация превышает безопасный уровень;
б) закрасит те клетки, в которых радиация не превышает безопасного уровня.
Задание 3. Определите, сколько клеток будет закрашено на рисунке.
Ромбом обозначено начальное положение Робота.
нц 5 раз . если температура 25 . . то закрасить . все . вниз кц
- Определите, сколько клеток будет закрашено.
- Как надо изменить условие, чтобы Робот закрасил на 2 клетки больше?
- Как надо изменить условие, чтобы Робот закрасил 3 клетки?
В презентации использованы материалы учебного пособия
Информатика. Изучаем алгоритмику. Мой КуМир. 5-6 классы / Е. А. Мирончик, И. Д. Куклина, Л. Л. Босова. — М.: БИНОМ. Лаборатория знаний, 2018.