Исполнитель Робот. Циклы

Решение 20.1 задания ОГЭ 2017 по информатике из демоверсии. Это задание второй части с развернутым ответом, высокого уровня сложности. Примерное время выполнения задания 45 минут. За это задание можно максимально набрать 2 балла. Задание выполняется на компьютере.

Проверяемые элементы содержания:
— умение написать короткий алгоритм в среде формального исполнителя.

Описание элементов содержания, проверяемых в ходе экзамена:
— алгоритм,
— свойства алгоритмов,
— способы записи алгоритмов,
— блок-схемы,
— представление о программировании,
— алгоритмические конструкции,
— логические значения,
— операции,
— выражения,
— разбиение задачи на подзадачи,
— вспомогательный алгоритм,
— обрабатываемые объекты (цепочки символов, числа, списки, деревья).

20.1 задание ОГЭ 2017 по информатике

Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может.
У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх
вниз
влево
вправо
При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх , вниз ↓, влево ←, вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится.
Также у Робота есть команда закрасить , при которой закрашивается клетка, в которой Робот находится в настоящий момент.
Ещё четыре команды – это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:
верху свободно
снизу свободно
слева свободно
справа свободно
Эти команды можно использовать вместе с условием «eсли », имеющим следующий вид:
если условие то
последовательность команд
все
Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.
Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
если справа свободно то
вправо
закрасить
все
В одном условии можно использовать несколько команд проверки условий, применяя логические связки и , или , не , например:
если (справа свободно) и (не снизу свободно) то
вправо
все
Для повторения последовательности команд можно использовать цикл «пока », имеющий следующий вид:
нц пока условие
последовательность команд
кц
Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

Выполните задание.
На бесконечном поле есть горизонтальная и вертикальная стены. Левый конец горизонтальной стены соединён с нижним концом вертикальной стены. Длины стен неизвестны . В вертикальной стене есть ровно один проход, точное место прохода и его ширина неизвестны. Робот находится в клетке, расположенной непосредственно над горизонтальной стеной у её правого конца.
На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

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

При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным.
Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения и размера прохода внутри стены.
Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.
Сохраните алгоритм в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

Решение 20.1 задания ОГЭ 2017 по информатике

Команды исполнителя будем записывать жирным шрифтом, а комментарии – курсивом . Начало комментария будем обозначать символом «|» (во время выполнения работы записывать комментарии не обязательно ).

|Двигаемся влево, пока не дойдём до вертикальной стены.
нц пока слева свободно
влево
кц

|Двигаемся вверх, пока не дойдём до прохода в стене, и закрашиваем клетки.
нц пока не слева свободно
закрасить
вверх
кц

|Двигаемся вверх до конца стены и закрашиваем клетки.
нц пока не слева свободно
закрасить
вверх
кц

|Обходим стену.
влево
вниз

|Двигаемся вниз, пока не дойдём до прохода в стене, и закрашиваем клетки.
нц пока не справа свободно
закрасить
вниз
кц

|Двигаемся вниз до конца стены и закрашиваем клетки.
нц пока не справа свободно
закрасить
вниз
кц

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

2 балла за задание дается если
Алгоритм правильно работает при всех допустимых исходных данных.
1 балл за задание дается если
При всех допустимых исходных данных верно следующее:
1) выполнение алгоритма завершается, и при этом Робот не разбивается;
2) закрашено не более 10 лишних клеток;
3) остались незакрашенными не более 10 клеток из числа тех, которые должны были быть закрашены.
0 баллов за задание дается если
Задание выполнено неверно, т. е. не выполнены условия, позволяющие поставить 1 или 2 балла.

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

Система команд исполнителя «Робот» включает:

  • 5 команд, вызывающих действия Робота (влево, вправо, вверх, вниз, закрасить)
  • 10 команд проверки условий:
  • 8 команд вида [слева/справа/снизу/сверху] [стена/свободно]
  • 2 команды вида клетка [закрашена/чистая]
  • 2 команды измерения (температура, радиация)

Команды-действий

Команды-проверки

Команда Описание
лог слева свободно Возвращает да, если робот может перейти влево, иначе - нет.
лог справа свободно Возвращает да, если робот может перейти вправо, иначе -нет.
лог сверху свободно Возвращает да, если робот может перейти вверх, иначе - нет.
лог снизу свободно Возвращает да, если робот может перейти вниз, иначе - нет.
лог слева стена Возвращает да, если слева от робота находится стена, иначе- нет.
лог справа стена Возвращает да, если справа от робота находится стена, иначе- нет.
лог сверху стена Возвращает да, если сверху от робота находится стена, иначе- нет.
лог снизу стена Возвращает да, если снизу от робота находится стена, иначе- нет.
лог клетка закрашена Возвращает да, если клетка закрашена, и нет, если клетка незакрашена.
лог клетка чистая Возвращает нет, если клетка закрашена, и да, если клетка незакрашена.

Команды-измерения

Пусть требуется перевести из клетки слева от стены в клетку справа от стены:

Алгоритм может выглядеть так:

использовать Робот
алг пример 1
нач
. вниз
. вправо
. вверх
кон

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


Напишем алгоритм прохождения роботом лабиринта из точки А в Б:

использовать Робот
алг из А в Б
нач
. вправо

. вверх ; вверх ; вправо ; вниз ; вниз ; вправо
. вверх ; вверх ; вправо ; вниз ; вниз ; вправо
кон

Команды прохождения каждого участка можно сгруппировать в одну строку - это сокращает запись алгоритма и делает его более понятным. Для того чтобы записать команды в одну строку их нужно разделить точкой с запятой.

Ее для дальнейшей работы и научились задавать . Теперь перейдем непосредственно к составлению алгоритмов для Робота с использованием простых команд.

Если вам больше нравится информация в формате видеоуроков, то на сайте есть видеоурок

У любого исполнителя должна быть система команд (СКИ система команд исполнителя ). Система команд исполнителя — совокупность всех команд, которые может выполнить исполнитель. В качестве примера рассмотрим дрессированную собаку. Она умеет выполнять некоторые команды — «Сидеть», «Лежать», «Рядом» и т. п. Это и есть ее система команд.

Простые команды Робота

У нашего Робота тоже есть система команд. Сегодня мы рассмотрим простые команды Робота . Всего их 5:

  • вверх
  • влево
  • вправо
  • закрасить

Результат выполнения этих команд понятен из их названия:

  1. вверх — переместить Робота на одну клетку вверх
  2. вниз — переместить Робота на одну клетку вниз
  3. влево — переместить Робота на одну клетку влево
  4. вправо — переместить Робота на одну клетку вправо
  5. закрасить — закрасить текущую клетку (клетку в которой находится Робот).

Эти команды можно писать с клавиатуры, а можно использовать горячие клавиши (нажав их команды будут вставляться автоматически):

  • вверх — Escape, Up (стрелка вверх)
  • вниз — Escape, Down (стрелка вниз)
  • влево — Escape, Left (стрелка влево)
  • вправо — Escape, Right (стрелка вправо)
  • закрасить — Escape, Space (пробел)

Обратите внимание, что набирать нужную комбинацию горячих клавиш нужно не привычным нам способом! Мы привыкли нажимать клавиши одновременно, а здесь их нужно нажимать последовательно . К примеру, чтобы ввести команду вверх, нужно нажать Escape, отпустить ее и после этого нажать стрелку вверх. Это нужно помнить.

Теперь мы готовы написать первый алгоритм для Робота. Предлагаю начать с простого — нарисуем квадрат со стороной 3 клетки. Поехали!

Запускаем Кумир, его. Можно начинать писать программу? Конечно нет! Мы же не ! Делаем это. Предлагаю использовать вот такую:

Вот теперь все готово. Начинаем писать программу. Пока она выглядит так

Удаляем символ «|» и называем наш алгоритм «Квадрат»

Предлагаю рисовать квадрат, двигаясь по часовой стрелке. Для начала закрасим текущую клетку, дав команду закрасить . Потом делаем шаг вправо и опять закрашиваем клетку. И еще раз шаг вправо и закрасить.

Попробуем запустить программу и посмотреть что же получилось. Для запуска нажимаем F9 или же кнопку на панели инструментов

В результате мы должны увидеть вот такую картину

Если такое окно Робота у вас не появилось, то на панели инструментов щелкните «Показать окно Робота » или в меню Робот выберите пункт «Показать окно Робота «. Продолжаем дальше.

Теперь мы будем двигаться вниз и закрашивать правую сторону квадрата:

вниз

закрасить

вниз

закрасить

Потом пойдем влево, закрашивая нижнюю границу квадрата

влево

закрасить

влево

закрасить

У нас осталась одна незакрашенная клетка. Закрасим ее

вверх

закрасить

Все готово! В итоге наша программа выглядит так:

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

алг Квадрат

нач

закрасить

вправо

закрасить

вправо

закрасить

вниз

закрасить

вниз

закрасить

Задача учителя - пройти с учеником этот путь, не страхуя от неудач, но предупреждая разочарование из-за возможных трудностей. Очень важно организовать занятия так, чтобы дети сами открывали для себя новое посредством значимой для себя деятельности.
Как робот помогает изучать информатику? Укажу лишь несколько тем информатики, на которых базируется робототехника.
Тема «Файлы и файловая система».
В распоряжении школьника оказался микрокомпьютер LEGO®NXT из образовательного набора LEGO Mindstorms NXT Education. Управление его файловой системой происходит стандартными командами, но поскольку объем памяти не велик, контроль нужного и ненужного требуется вести постоянно. Для того, чтобы озвучить действия робота, вывести на дисплей картинку, пополнить библиотеку рабочих программ, необходимо оперировать базовыми понятиями информатики: файл, тип файла, путь к файлу, меню, папка.
Тема «Информационные процессы», «Кодирование информации».
Робототехнический набор снабжен датчиками, которые регистрируют звуковую, тактильную и видеоинформацию. После оцифровки информация может быть отображена на экране дисплея. Специальная функция микрокомпьютера даёт возможность экспериментировать с датчиками, моторами, используя готовые к запуску программы. После проведения серии экспериментов с датчиками возникает понимание: почему ультразвуковой датчик расстояния работает медленнее, чем инфракрасный датчик освещенности, как звук превращается в цифровой код и так далее. Исследование информационных процессов и принципов кодирования информации дает более глубокое понимание сути информационных технологий.

Тема «Коммуникационные технологии».
Микрокомпьютер LEGO®NXT поддерживает технологию беспроводной связи. При помощи функции Bluetooth можно установить беспроводное соединение между микрокомпьютером NXT и другими устройствами, обладающими устройством Bluetooth, например, с другими NXT, с мобильными телефонами или с компьютерами. Установив соединение Bluetooth, возможно: загружать программы с компьютера дистанционно; отправлять программы с других устройств (не с компьютера), в том числе и с NXT; отправлять программы как на отдельные NXT, так и на их группы. Эта технология дает возможность управлять роботом с помощью мобильного телефона.

Темы «Алгоритмы. Исполнитель алгоритмов», «Среда программирования».
Для начального знакомства с роботом можно осуществлять прямое программирование блока NXT без обращения к компьютеру. Прямо на экране дисплея по шаблону из пяти команд можно составить простую программу и зациклить ее. Однако без знания базовых алгоритмических конструкций и освоения среды программирования не обойтись. Именно возможность программирования робота делает его универсальным исполнителем, способным решать разнообразные задачи. Начинать осваивать технологию программирования следует с визуальных сред программирования, далее переходя к более мощным и современным событийно-ориентированным средам.
Таким образом, робототехника востребует базовые знания информатики, а неиссякаемое желание ученика сделать своего робота «лучшим» подталкивает его к освоению новых знаний.
Почему же робота можно назвать идеальным средством обучения? Потому что это средство дает возможность создать среду обучения, которая востребует естественные стремления ребенка играть, творить, общаться со сверстниками. Итак, можно выделить преимущества робототехники как средства обучения:
. Усвоение знаний происходит в процессе игры.
. Конструирование робота предлагает свободу творчества.
. Стремление совершенствовать свою работу есть у большинства учеников.

В качестве примера хочу привести модель «Робота-разносчика бесплатных угощений», созданного учеником 6 класса в рамках курса «Программирование роботом» на внеурочных занятиях. Робот собран из набора LEGO MINDSTORMS NXT Education 9797 по стандартной модели Альфарекс 1.0, и дополнен датчиком цвета для индикации состояния робота и лотком для угощений.
Цель работы - реализовать модель походки человека, насколько это возможно при имеющихся ресурсах. Движением каждой ноги управляет мотор и механический узел из шестеренок и рычагов. Один рычаг перемещает ногу вверх-вниз, другой продвигает ее вперед. При этом корпус отклоняется в сторону опорной ноги, за счет чего робот сохраняет равновесие. Такая походка называется «шаркающей»
Отдельный мотор управляет датчиком расстояния и руками-рычагами, на которых закреплены датчик касания и датчик цвета. Лоток для угощений закреплен неподвижно.
Робот запрограммирован на выполнение роли разносчика, например, бесплатных угощений, по следующему алгоритму поведения. Робот сопровождает свое движение по прямой фразой: «Я - робот Альфарекс, угощаю бесплатно!» Человек, желающий вступить в контакт с роботом, может остановить его жестом. После останова робот произносит фразу: «Угостись и нажми кнопку!». Взяв конфету, человек в знак благодарности должен нажать на кнопку один раз. Через три секунды после останова робот продолжит свое движение. Когда угощения закончатся (робот запрограммирован на конкретное количество конфет на лотке), робот попрощается, загорится красный сигнал индикатора, робот остановится.

Программа для управления роботом написана в среде NXT Programming 2.0.

Поделитесь с друзьями или сохраните для себя:

Загрузка...