Сегодня на уроке мы вспомним:
· что такое Робот;
· как работать с программой Кумир;
· и разберём типовые задания ОГЭ по информатике по данной теме.
Работать с исполнителем алгоритма Робот мы будем в среде программирования Кумир.
Робот – это условный исполнитель. Он умеет перемещаться по лабиринту, который начерчен на плоскости, разбитой на клетки. По сторонам клеток могут стоять стены, через которые Робот пройти не может, но он способен проверить, есть ли рядом стена. Также Робот может закрашивать клетки.
Робот может выполнять 5 команд.
Выполняя команды вправо, влево, вниз и вверх, Робот смещается на одну клетку в указанном направлении.
Команда Закрасить предназначена для закрашивания клетки, в которой находится Робот.
Если исполнителю необходимо сделать выбор действия, то для этого используется конструкция ветвления.
Как мы помним, форма ветвления может быть полной и неполной.
Полная форма ветвления начинается со слова ЕСЛИ, после него указывается условие, от которого зависит выполнение команд. Далее идёт служебное слово то и список команд, которые исполнитель должен выполнить, если указанное условие выполняется. Затем записывается служебное слово иначе и команды, которую будут выполнены, если заданное условие окажется ложным. А в конце формы ветвления записывается слово всё.
В неполной форме ветвления отсутствует слово иначе и список команд, идущих после него. В таком случае, если условие оказывается ложным, то никакие команды не выполняются.
В условиях можно использовать логические связки И, ИЛИ, НЕ.
Давайте вспомним, какие команды-проверки Робот знает:
слева свободно;
справа свободно;
сверху свободно;
снизу свободно;
клетка закрашена;
клетка чистая;
слева стена;
справа стена;
сверху стена;
снизу стена;
Вспомним, как записывать циклы для исполнителя Робот.
Тело цикла записывается между служебными словами НЦ и КЦ, означающих начало цикла и конец цикла.
Итак, запускаем программу Кумир.
Сразу открывается окно для набора программы Робота.
Чтобы отслеживать перемещения Робота при работе программы, нужно задать исполнителю Робот стартовую обстановку. Это значит установить Робота в необходимую позицию, расставить стены, закрасить нужные клетки и так далее.
Назначить стартовую обстановку можно несколькими способами:
· Загрузить стартовую обстановку из заранее созданного файла, имеющего определённое расширение .fil.
· Отредактировать имеющуюся стартовую обстановку.
· Создать новую стартовую обстановку.
В пункте меню «Робот» нажимаем на пункт «Новая обстановка». В появившемся окне указываем количество строк и столбцов.
На панели кнопок для быстрого доступа нажимаем на кнопку «Робот». Наведя курсор мыши на появившуюся стартовую обстановку и покрутив колёсико мышки, можно увеличить или уменьшить масштаб. Чтобы изменить количество столбцов и строк, нужно нажать на кнопки с плюсом и минусом.
Далее задаём необходимые значения для стартовой обстановки:
· Для перемещения Робота в новую позицию, щёлкаем по нему левой кнопкой мыши и не отпуская её переносим Робота в нужное место.
· Для добавления/удаления стены, щёлкаем левой кнопкой мыши по границе клетки.
· Щелкаем по клетке левой кнопкой мыши, чтобы её закрасить или очистить.
· Для добавления/удаления точки в клетке щёлкаем по клетке, удерживая клавишу Ctrl на клавиатуре.
После того, как стартовая обстановка отредактирована, необходимо зайти в пункт меню «Робот» и убрать галочку с пункта «Редактировать обстановку…».
Теперь можно создавать алгоритм для исполнителя Робот.
Ну что же, давайте разберём типовые задания ОГЭ по информатике по созданию и выполнению программ для исполнителя Робот.
На бесконечном поле есть горизонтальная и две вертикальные стены (в форме перевёрнутой неправильной буквы П). Левый конец горизонтальной стены соединён с нижним концом левой вертикальной стены. Правый конец горизонтальной стены соединён с нижним концом правой вертикальной стены. Длины стен неизвестны. Робот находится в клетке, расположенной непосредственно слева от левой вертикальной стены у её верхнего конца.
На рисунке указан один из возможных способов расположения стен и Робота.
Напишите для Робота алгоритм, закрашивающий
все клетки, расположенные непосредственно левее левой вертикальной стены, клетки, расположенные непосредственно ниже горизонтальной стены,
и клетки, расположенные непосредственно правее правой вертикальной стены, а также 2 клетки, касающиеся одним углом с углами П-образной стены. Робот должен закрасить только клетки, удовлетворяющие данному условию.
На первый взгляд задание может показаться сложным и непонятным. Но следует просто продумать путь, по которому должен пройти Робот, чтобы закрасить нужные клетки. А затем прописать этот путь с помощью команд и циклов. Важно как можно больше использовать циклы.
Обратите внимание, что в условии задания указано, что длины стен неизвестны, то есть необходимо составить алгоритм так, чтобы он работал со стенами, расположенными как на рисунке, но длины стен могут отличаться от исходных данных. Поэтому в данном задании мы не можем просто написать последовательность команд перемещения и окрашивания клеток, исходя из длин стен, представленных на рисунке. Так как если хотя бы одну стену увеличить на одну клеточку, то алгоритм уже не сработает.
Поэтому нам необходимо использовать цикл пока, который повторяет действия после проверки условия.
Изучив задание, создадим стартовую обстановку. Не лишним будет её сохранить.
В пункте меню «Вставка» нажимаем на пункт «Использовать Робот». Появившуюся команду можно набирать и самому. Но чтобы сэкономить время, лучше все команды вставлять через пункт меню «Вставка».
Итак, смотрим на рисунок. Робот должен пройтись вдоль стен и закрасить все клетки, которые он приходит. Для этого нам достаточно провести Робота вдоль левой вертикальной стены вниз, затем вдоль горизонтальной стены вправо и вдоль правой вертикальной стены вверх.
Чтобы переместить Робота вниз до конца стены и при этом закрасить клетки запишем цикл ПОКА, в котором будем проверять, есть ли справа стена.
Проверяем, что получилось.
Теперь нужно закрасить клетку и сдвинуть Робота вправо, чтобы он находился под горизонтальной стеной и далее можно было опять воспользоваться циклом.
Записываем цикл, в котором проверяем, есть ли сверху стена, и, пока она есть, закрашиваем клетки и передвигаем Робота вправо.
Закрашиваем клетку и сдвинуть Робота вверх, чтобы он находился слева от вертикальной стены
И записываем снова цикл, в котором закрашиваем клетки и проверяем, есть ли слева стена.
Запускаем алгоритм. Всё получилось.
Обратите внимание, что в условиях циклов, мы писали «не свободно» или «стена», что, по сути, одно и тоже.
А теперь давайте изменим длину стен и проверим, сработает ли созданная программа. Не забудьте сохранить алгоритм.
На бесконечном поле имеются две одинаковые горизонтальные параллельные стены, расположенные друг под другом и отстоящие друг от друга более чем на
1 клетку. Левые края стен находятся на одном уровне. Длины стен неизвестны. Робот находится в клетке, расположенной слева от конца верхней стены. На рисунке указан один из возможных способов расположения стен и Робота.
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные ниже горизонтальных стен.
Робот должен закрасить только клетки, удовлетворяющие данному условию.
Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля.
При исполнении алгоритма Робот не должен разрушиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
Внимательно прочитайте текст задания.
Создаём стартовую обстановку.
Пишем цикл для перемещения Робота под стену.
Затем цикл, в котором проверяется, есть ли стена сверху, и, пока она есть, клетки закрашиваются.
Теперь сдвигаем Робота влево.
И пишем цикл перемещения Робота до нижней стены.
Клетки нужно закрасить под стеной. Поэтому сдвигаем Робота вправо, затем вниз и влево.
И теперь осталось написать цикл для закрашивания клеток под нижней стеной.
На бесконечном поле имеется лестница. Сначала лестница спускается вниз справа налево, затем спускается вниз слева направо. Высота каждой ступени – 1 клетка, ширина – 2 клетки. Робот находится справа от верхней ступени лестницы. Количество ступенек, ведущих влево, и количество ступенек, ведущих вправо, неизвестно. На рисунке указан один из возможных способов расположения лестницы и Робота.
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно над ступенями лестницы, спускающейся слева направо. Требуется закрасить только клетки, удовлетворяющие данному условию.
Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
Создаём стартовую обстановку.
Как видим по заданию, Робот должен двигаться вниз по лестнице справа налево, пока не дойдёт до стыка лестниц. При этом клетки не закрашиваем.
Записываем цикл ПОКА, в котором проверяем, свободно ли снизу, если да, то нужно обогнуть угол лестницы. Так как нам известны высота и ширина ступени, то можно смело записывать, что Робот должен спуститься один раз вниз, а затем пройти два раза влево.
Теперь необходимо спустить Робота вниз по спуску вправо и закрасить клетки. Записываем цикл, в котором будем проверять, есть ли слева стена. В теле цикла прописываем закрашивание клетки, после этого перемещаем Робота вправо и снова закрашиваем клетку. Далее огибаем угол. Записываем перемещение Робота вправо, ничего не закрашивая, а затем перемещение вниз.
На первый взгляд кажется, что рисунок сложный, а на практике алгоритм оказался небольшим.
В конце урока попробуйте ответить на следующие вопросы:
Что такое Робот?
Как записывается цикл с постусловием?
Чем полная форма ветвления отличается от неполной?
Как переместить Робота в новую позицию?
Внимательно посмотрев урок, вам не составит труда ответить на вопросы.