Продолжаем готовиться к экзаменам по информатике и рассмотрим решение задачи номер 15.
Задача 15. Требования к предметным результатам освоения основной образовательной программы: Создавать и выполнять программы для заданного исполнителя
Примерное время выполнения задания (мин.) - 25
Условие задачи:
Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может.
У Робота есть девять команд.
Четыре команды – это команды-приказы:
вверх , вниз, влево, вправо.
Также у Робота есть команда закрасить.
И ещё четыре команды – это команды проверки условий:
сверху свободно, снизу свободно, слева свободно, справа свободно.
Эти команды можно использовать вместе с условием «eсли».
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно ниже горизонтальной стены и правее вертикальной стены.
Для выполнения данной задачи рекомендуется использовать среду КуМир, предназначенную для получения базовых знаний алгоритмизации в средней школе.
В системе КуМир используется школьный алгоритмический язык - простой алголоподобный язык, имеющий русскую лексику и поддерживающий встроенные команды управления алгоритмическими программными исполнителями (такими как Робот, Чертёжник, Черепаха и др.).
В частности, исполнитель Робот может поддерживать команды движения в заданном направлении, которые можно сочетать с ветвлениями и циклами (включая проверку наличия преград на маршруте). Кроме этого, Робот может закрашивать клетки своего маршрута по мере его прохождения.
В системе имеется возможность редактировать обстановку для Робота, устанавливая на рабочем поле (карте) различные фрагменты непроходимой стены.
На рисунке ниже представлен скрин системы Кумир с обстановкой, созданной для нашей задачи.
Как изменить поле робота
Чтобы изменить поле Робота надо в главном меню выбрать Робот / Новая обстановка для задания размера поля, потом Робот / Редактировать обстановку для собственно её изменения.
Для изменения контуров стены необходимо щёлкать мышью по границам клеток, при этом добавляется (убирается) участок стены.
В конце изменяй надо выбрать Робот / Сохранить обстановку для сохранения получившейся обстановки в файл на диске, и снова выбрать Робот / Редактировать обстановку для выхода из режима редактирования.
Все эти действия надо производить при незапущенной программе движения робота.
По условию задачи, в момент начала своего движения Робот должен находиться под горизонтальной стеной у её правого конца.
Вся траектория движения Робота по маршруту может быть условна разбита на три фрагмента:
- движение влево, при котором Робот должен проверять, есть ли над ним стена. Если есть - закрашивать клетку;
- движение в районе "угла" маршрута, когда Робот должен обработать ситуацию, что он дошел до конца горизонтальной стены и надо менять траекторию на движение вниз;
- движение вниз, при котором надо проверять наличие стены слева. Если есть стена, то необходимо закрашивать клетку.
Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения проходов внутри стен.
Известно только, что в каждой стене (и горизонтальной, и вертикальной) есть ровно один проход, причем точное место прохода и его ширина неизвестны.
Ниже приводится алгоритм решения данной задачи, реализованный в среде КуМир.
На рисунке ниже показано успешное прохождение Роботом маршрута в другой карте-обстановке с другими параметрами стены.
О системе КуМир
КуМир (Комплект Учебных МИРов) - система программирования, предназначенная для поддержки начальных курсов информатики и программирования в средней школе.
Система КуМир написана на языке C++ с использованием платформы Qt. Система разрабатывается под открытой лицензией GPL.
В КуМир встроено несколько графических исполнителей алгоритмов, действия которых визуализируются на их "игровом поле".
Система позволяет работать с исполнителями: Кузнечиком, Черепахой, Водолеем, Вертуном, Роботом, Чертёжником, Рисователем и др.
- При вводе программы КуМир осуществляет постоянный полный контроль ее правильности, сообщая на полях программы об всех обнаруженных ошибках.
- При выполнении программы в пошаговом режиме КуМир выводит на поля результаты операций присваивания и значения логических выражений. Это позволяет ускорить процесс освоения азов программирования.
- Кумир работает в операционных системах Windows, MacOS и GNU/Linux.
Исполнитель Робот существует в некоторой обстановке – прямоугольном поле, разбитом на клетки, между которыми могут стоять стены.
Обстановка, в которой находится Робот, называется текущей обстановкой Робота. Кроме того, определена еще одна обстановка Робота – стартовая обстановка. Выполнение программы начинается со Стартовой обстановки.
Робот может передвигаться по полю, закрашивать клетки, измерять температуру и радиацию. Робот не может проходить сквозь стены, но может проверять, есть ли рядом с ним стена. Робот не может выйти за пределы прямоугольника (по периметру стоит «забор»).
Обстановки Робота могут храниться в файлах специального формата (расширение .fil).
Операции редактирования обстановки:
- поставить/убрать стену – щелкнуть по границе между клетками,
- закрасить/сделать чистой клетку – щелкнуть по клетке.
Система команд исполнителя «Робот» включает:
5 команд, вызывающих действия Робота (влево, вправо, вверх, вниз, закрасить);
10 команд проверки условий:
- 8 команд вида [слева/ справа/ сверху/ снизу] [стена/ свободно],
- 2 команды вида клетка [закрашена/ чистая];
- 2 команды измерения (температура, радиация).
Командам влево, вправо, вверх, вниз, закрасить соответствуют алгоритмы-процедуры языка КуМир.
Остальным командам соответствуют алгоритмы-функции.
При подготовке текста статьи частично были использованы материалы с официального сайта проекта КуМир.
Посмотреть работу Робота в среде Кумир можно в прикрепленном ниже видеофайле.
Видео к данной задаче по работе в среде Кумир: