Исполнитель Робот. Подготовка к ГИА по информатике

Исполнитель Робот.
Подготовка к ГИА по информатике.
Исполнитель Робот в среде КУМИР
Язык КУМИР - универсальный язык программирования, его
прототипом послужил "школьный язык программирования", разработанный
А.П. Ершовым в первой половине 80-х годов ХХ века.
Система КУМИР позволяет создавать, отлаживать и выполнять
программы. Несложные программы можно начать писать и выполнять
практически сразу после знакомства с системой, однако система КУМИР
позволяет создавать и достаточно большие, сложные программы. Во время
редактирования программы система КУМИР автоматически производит
синтаксический разбор и сообщает о найденных ошибках.
В то же время КУМИР является учебной системой. В неё встроено
несколько графических исполнителей, действия которых визуализируются на
их "игровом поле" или арене.
Графический исполнитель Робот "живет" на прямоугольном поле из
квадратных клеток, может переходить между соседними клетками и
закрашивать клетки.
Между соседними (по сторонам) клетками может стоять стена, через
которую Робот пройти не может. На практике поле всегда ограниченного
размера, а стенки стоят в заданных местах в зависимости от задачи. Задача
состоит в закрашивании определенных клеток и остановке робота в заданном
месте.
У Робота есть пять команд-приказов:
вверх
вниз
влево
вправо
закрасить
При выполнении одной из первых четырех команд Робот перемещается
на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →. Если
Робот получит команду передвижения через стену, то он разрушится
(произойдет отказ).
По команде закрасить закрашивается клетка, в которой Робот
находится в настоящий момент (если клетка уже закрашена, отказа не
происходит).
Задача 1.
На бесконечном поле есть горизонтальная стена. Длина стены неизвестна. Робот
находится на 3 клетки выше стены и левее на 1 клетку. Требуется закрасить
клетки, примыкающие к стене сверху и снизу.
Р
Р
использовать Робот
алг
нач
вниз
вниз
вправо
нц пока не(снизу свободно)
закрасить
вправо
кц
вниз
влево
нц пока не(сверху свободно)
закрасить
влево
кц
кон
Задача 2.
На бесконечном поле есть горизонтальная и вертикальная стены. Левый конец горизонтальной
стены соединен с нижним концом вертикальной стены. Длины стен неизвестны. В горизонтальной
стене есть ровно один проход, точное место прохода и его ширина неизвестны. Робот находится в
клетке, расположенной непосредственно справа от вертикальной стены у ее конца.
Рисунок. Возможный способ расположения стен и робота (Робот обозначен буквой «Р»)
Задание. Напишите для Робота алгоритм, закрашивающий все клетки,
расположенные непосредственно выше и ниже горизонтальной стены.
Проход должен остаться не закрашенным. Робот должен закрасить только
клетки, удовлетворяющие данному условию. Например, для приведенного
выше рисунка Робот должен закрасить следующие клетки (см. рисунок ниже)
Результат.
Требования. При исполнении алгоритма Робот не должен разрушиться,
выполнение алгоритма должно завершиться. Конечное расположение
Робота может быть произвольным.
Выполнение
1. Открыть программу Кумир. Создать новую программу – Программа, новая программа.
использовать Робот
алг
нач
.
кон
2. Создай СТАРТОВУЮ ОБСТАНОВКУ ДЛЯ РЕШЕНИЯ ЗАДАЧИ смотри рисунок ниже
А) Создай 1 версию обстановки – Инструменты,
Создать стартовую обстановку для Робота.
Сохрани – выбери в меню Обстановка, Сохранить как,
выбери папку своего класса и сохрани, имя файла – 1
вариант (1 версия)
3. Напиши алгоритм он должен быть
универсальным, правильно работать и для 1 версии и
для второй версии стартовой обстановки
использовать Робот
алг
нач
. | Спуститься вниз вдоль стены
. нц пока снизу свободно
. . вниз
. кц
. | Закрасить клетки сверху до прохода
. нц пока не снизу свободно
. . закрасить
. . вправо
. кц
. | пройти проход независимо сколько он клеток
Р
Р
. нц пока снизу свободно
. . вправо
. кц
. | Закрасить клетки сверху после прохода
. нц пока не снизу свободно
. . закрасить
. . вправо
. кц
. | спуститься вниз и влево
. вниз
. влево
. | Закрасить клетки снизу справа налево до прохода
. нц пока не сверху свободно
. . закрасить
. . влево
. кц
. | пройти проход справа налево независимо сколько он клеток
. нц пока сверху свободно
. . влево
. кц
. | Закрасить клетки снизу справа налево после прохода
. нц пока не сверху свободно
. . закрасить
. . влево
. кц
кон
4. Проверить выполнение алгоритма (F9) на данной стартовой обстановки.
Задача 3.
На бесконечном клетчатом поле имеется горизонтальная стена. Длина стены неизвестна.
Робот находится в одной из клеток, примыкающих к стене сверху. На рисунке указан один
из возможных вариантов расположения Робота и стены (Робот обозначен буквой «Р»).
Робот должен закрасить все клетки, примыкающие к стене сверху. Так, для приведенного
выше рисунка должны быть закрашены следующие клетки:
Р
Р
Конечное положение Робота значения не имеет.
Алгоритм должен решать задачу для стены произвольного размера и любого допустимого
начального положения Робота. При составлении алгоритма можно использовать
следующее разбиение задачи на подзадачи:
1) перевести Робота в исходное положение крайнюю левую клетку,
примыкающую к стене сверху;
2) двигаясь слева направо, закрасить через одну все клетки, примыкающие к
стене сверху.
Задача 4.
Где-то в поле Робота находятся две вертикальные стены равной, но неизвестной длины,
расположенные одна напротив другой. Робот находится в произвольной клетке справа от правой
стены, причем напротив нее.
На рисунке указан один из возможных вариантов расположения Робота и стен (Робот обозначен
буквой Р).
Р
Опишем алгоритм действий Робота укрупненными шагами:
Сначала робот идет влево до стены, затем поднимается наверх пока слева не будет
свободно. Робот делает шаги влево вниз и стал находиться между стенами. Робот
начинает закрашивать клетки между стенами пока стена не закончится. Тем самым он
закрасил все клетки между двумя стенками.
использовать Робот
алг
нач
. нц пока слева свободно
. . влево
. кц
. нц пока слева не свободно
. . вверх
. кц
. влево; вниз
. нц пока справа не свободно или слева не свободно
. . если слева свободно и справа не свободно
. . . то
. . . . нц пока слева свободно
. . . . . закрасить; влево
. . . . кц
. . все
. .
. . закрасить;
. . вниз
. . если справа свободно и слева не свободно
. . . то
. . . . нц пока справа свободно
. . . . . закрасить; вправо
. . . . кц
. . . . закрасить
. . . .
. . все
. . вниз
. .
. кц
.
кон
Задача 5.
На бесконечном клетчатом поле имеется горизонтальная стена. Длина стены неизвестна.
Робот находится в одной из клеток, примыкающих к стене сверху. Точное положение
Робота неизвестно. На рисунке указан один из возможных вариантов расположения
Робота и стен (Робот обозначен буквой Р).
Р
Робот должен закрасить через одну клетки, примыкающие к стене сверху, начиная с
самой левой клетки. Например, для приведенного выше рисунка результат работы должен
быть таким:
Р
Конечное положение Робота значения не имеет. Алгоритм должен решать задачу для
стены произвольного размера и любого допустимого начального положения Робота. При
составлении алгоритма можно использовать следующее разбиение задачи на
подзадачи:
1) перевести Робота в исходное положение — крайнюю левую клетку,
примыкающую к стене сверху;
2) двигаясь слева направо, закрасить через одну все клетки, примыкающие к стене
сверху.
Напишите алгоритм:
алг
нач
нц пока не (снизу свободно)
влево
кц
вправо
нц пока не (снизу свободно)
закрасить
вправо
вправо
кц
кон
Задача 6.
Робот находится в произвольной точке внутри прямоугольного огороженного стенами
участка клетчатого поля. Размеры прямоугольника неизвестны. Напишите алгоритм, с
помощью которого Робот закрасит все клетки, примыкающие к нижней стороне
прямоугольника. Конечное положение Робота может быть произвольным.
использовать Робот
алг
нач
. нц пока (снизу свободно)
. . вниз
. кц
. нц пока (слева свободно)
. . влево
. кц
. нц пока (справа свободно)
. . закрасить
. . вправо
. . закрасить
. кц
кон
Задача 7.
Робот находится в произвольной точке внутри прямоугольного огороженного стенами
участка клетчатого поля. Размеры прямоугольника неизвестны. Напишите алгоритм, с
помощью которого Робот закрасит все клетки, примыкающие к сторонам прямоугольника.
использовать Робот
алг нач
. нц пока (снизу свободно)
. . вниз
. кц
. нц пока (слева свободно)
. . влево
. кц
. нц пока (справа свободно)
. . закрасить
. . вправо
. . закрасить
. кц
. нц пока (сверху свободно)
. . вверх
. . закрасить
. кц
. нц пока (слева свободно)
. . влево
. . закрасить
. кц
. нц пока (снизу свободно)
. . вниз
. . закрасить
. кц
кон
Исполнитель Робот в PascalABC.NET
В версию Programming Taskbook для локально устанавливаемого
PascalABC.NET (не сетевой версии) входит ГРИС Робот.
Исполнитель Робот - действует на прямоугольном клеточном поле.
Между некоторыми клетками, а также по периметру поля находятся стены.
Основная цель Робота — закрасить указанные клетки и переместиться в
конечную клетку.
Исполнитель Робот и поле, на котором он работает, отображаются
следующим образом:
Здесь большой желтый квадрат изображает Робота, маленький желтый
квадрат в левом верхнем углу клетки — конечное положение Робота,
черными точками помечены клетки, которые надо закрасить.
Команды исполнителя Робот содержатся в модуле Robot:
Right перемещает Робота вправо;
Left перемещает Робота влево;
Up перемещает Робота вверх;
Down перемещает Робота вниз;
Paint закрашивает текущую ячейку;
WallFromLeft возвращает True если слева от Робота стена;
WallFromRight возвращает True если справа от Робота стена;
WallFromUp возвращает True если сверху от Робота стена;
WallFromDown возвращает True если снизу от Робота стена;
FreeFromLeft возвращает True если слева от Робота свободно;
FreeFromRight возвращает True если справа от Робота свободно;
FreeFromUp возвращает True если сверху от Робота свободно;
FreeFromDown возвращает True если снизу от Робота свободно;
CellIsPainted возвращает True если ячейка, в которой находится Робот,
закрашена;
CellIsFree возвращает True если ячейка, в которой находится Робот, не
закрашена.
Для вызова задания для исполнителя Робот используется следующий шаблон
программы:
uses Robot;
begin Task('c1');
end.
Здесь Task процедура, содержащаяся в модуле Robot и вызывающая
задание с указанным именем.
Имеются следующие группы заданий для исполнителя Робот:
a вводные задания;
c цикл с параметром;
if логические выражения;
w циклы с условием;
сif – циклы + логические выражения;
count переменные-счетчики;
cc вложенные циклы;
p процедуры без параметров;
pp процедуры с параметрами.
Для создания стандартного поля размера 9 × 11 используется
процедура StandardField без параметров, а для создания поля размера N x M
процедура Field(N,M). Робот при этом помещается в центр поля.
Литература:
https://www.niisi.ru/kumir/dl.htm
https://5urokov.ru/gdz/bosova_9/86
https://infourok.ru/ispolnitel_robot._podgotovka_k_oge_9_klass.-175063.htm
https://foxford.ru/wiki/informatika/sreda-programmirovaniya-kumir
https://foxford.ru/wiki/informatika/ispolnitel-robot-v-srede-kumir
https://licey.net/free/18-programmirovanie_na_yazyke_kumir/70-
sistema_programmirovaniya_kumir/stages/3582-p_11_izmerenie_radiacii.html
https://licey.net/free/18-programmirovanie_na_yazyke_kumir/70-
sistema_programmirovaniya_kumir/stages/3581-zadachi_dlya_ispolnitelya_robot.html
https://inf-oge.sdamgia.ru/test?theme=20&ttest=true
https://inf-
oge.sdamgia.ru/test?theme=20&ttest=true&print=true&svg=0&sol=true&num=true&ans=true&key=tru
e&attr1=true&attr2=true&crit=true