Найти тему
ИНФОРМАТИКА | ОГЭ

Открытый банк заданий ОГЭ Информатика 5E59CE (задание 15.1)

Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может.

У Робота есть девять команд. Четыре команды –– это команды-приказы:

вверх   вниз   влево   вправо

При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится.

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

Ещё четыре команды –– это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:

сверху свободно   снизу свободно   слева свободно   справа свободно

Эти команды можно использовать вместе с условием «eсли», имеющим следующий вид:

если условие то

последовательность команд

все

Здесь условие –– одна из команд проверки условия.

Последовательность команд –– это одна или несколько любых команд-приказов.

Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:

если справа свободно то

вправо

закрасить

все

В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например:

если (справа свободно) и (не снизу свободно) то

вправо

все

Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид:

нц пока условие

последовательность команд

кц

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:

нц пока справа свободно

вправо

кц

Выполните задание.

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

На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

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

-2

При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения и размера прохода внутри стены.

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

РЕШЕНИЕ

Найдем в условии какую же программу нам надо написать:

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

-3

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

Какие же шаги должен выполнить Робот:

1) Пока справа есть стена Робот двигается вверх

2) Робот двигается вправо

3) Пока слева нет стены Робот двигается вверх

4) Пока сверху нет стены Робот закрашивает клетку и двигается вверх

5) Пока справа нет стены Робот закрашивает клетку и двигается вправо

6) Пока снизу нет стены Робот закрашивает клетку и двигается вниз

7) Пока снизу есть стена Робот закрашивает клетку и двигается влево

8) Пока стены нет робот двигается влево

9) Пока слева нет стены Робот закрашивает клетку и двигается влево

10) Пока слева есть стена Робот закрашивает клетку и двигается вверх

Теперь запускаем программу Кумир и начнем писать программу на основе того алгоритма, что мы описали выше.

-4

Нарисуем поле, как в примере в условии

Окна - Робот

Робот - Редактировать обстановку

-5

Рисуем стены , нажимая на грани клеточек. Перемещаем Робота в исходную точку.

-6

Выберем исполнителя Робот. Вставка - Использовать Робот.

-7

Теперь переходим к написанию программы:

1) Пока справа есть стена Робот двигается вверх

нц пока справа не свободно
вверх
кц

-8

2) Робот двигается вправо

вправо

-9

3) Пока слева нет стены Робот двигается вверх

нц пока слева свободно
вверх
кц

-10

4) Пока сверху нет стены Робот закрашивает клетку и двигается вверх

нц пока сверху свободно
закрасить
вверх
кц

-11

5) Пока справа нет стены Робот закрашивает клетку и двигается вправо

нц пока справа свободно
закрасить
вправо
кц

-12

6) Пока снизу нет стены Робот закрашивает клетку и двигается вниз

нц пока снизу свободно
закрасить
вниз
кц

-13

7) Пока снизу есть стена Робот закрашивает клетку и двигается влево

нц пока снизу не свободно
закрасить
влево
кц

-14

8) Пока стены нет робот двигается влево

нц пока снизу свободно
влево
кц

-15

9) Пока слева нет стены Робот закрашивает клетку и двигается влево

нц пока слева свободно
закрасить
влево
кц

-16

10) Пока слева есть стена Робот закрашивает клетку и двигается вверх

нц пока слева не свободно
закрасить
вверх
кц

-17

Итоговая программа:

использовать Робот
алг
нач
нц пока справа не свободно
вверх
кц
вправо
нц пока слева свободно
вверх
кц
нц пока сверху свободно
закрасить
вверх
кц
нц пока справа свободно
закрасить
вправо
кц
нц пока снизу свободно
закрасить
вниз
кц
нц пока снизу не свободно
закрасить
влево
кц
нц пока снизу свободно
влево
кц
нц пока слева свободно
закрасить
влево
кц
нц пока слева не свободно
закрасить
вверх
кц
кон

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц