Кумир (Комплект Учебных МИРов) — это система программирования, предназначенная для обучения основам алгоритмизации. Она включает набор учебных исполнителей, среди которых ключевое место занимает исполнитель Робот.
На ОГЭ по информатике задание 15 проверяет умение составлять формальные алгоритмы с использованием инструкций ветвления и цикла для формального исполнителя «Робот».
Задание 15 приносит 2 балла на ОГЭ. Оно проверяет не знание конкретного языка программирования, а умение мыслить алгоритмически — строить алгоритмы с циклами и ветвлениями. Даже если вы не знакомы с синтаксисом Кумира, задание можно выполнить, разобравшись в логике.
Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может.
| Команда | Описание |
|---|---|
вверх |
Перемещает Робота на одну клетку вверх (↑) |
вниз |
Перемещает Робота на одну клетку вниз (↓) |
влево |
Перемещает Робота на одну клетку влево (←) |
вправо |
Перемещает Робота на одну клетку вправо (→) |
закрасить |
Закрашивает клетку, в которой находится Робот |
Если Робот получит команду передвижения сквозь стену, он разрушится. Алгоритм должен быть построен так, чтобы этого не произошло.
| Команда | Описание |
|---|---|
сверху свободно |
Проверяет, свободен ли путь для Робота сверху |
снизу свободно |
Проверяет, свободен ли путь для Робота снизу |
слева свободно |
Проверяет, свободен ли путь для Робота слева |
справа свободно |
Проверяет, свободен ли путь для Робота справа |
Позволяет выполнить команды только при выполнении условия:
Передвижение на одну клетку вправо, если справа нет стенки, и закрашивание клетки:
В одном условии можно использовать несколько команд проверки условий:
Позволяет повторять последовательность команд, пока выполняется условие:
Движение вправо, пока это возможно:
если... то... все
для ветвления алгоритма
и, или,
не для составления сложных условий
нц пока... кц
для повторения действий
На бесконечном поле есть горизонтальная и вертикальная стены. Правый конец горизонтальной стены соединён с верхним концом вертикальной стены. Длины стен неизвестны. В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны. Робот находится в клетке, расположенной рядом с вертикальной стеной слева от её нижнего конца.
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно левее вертикальной стены и ниже горизонтальной стены. Проходы должны остаться незакрашенными. Робот должен закрасить только клетки, удовлетворяющие данному условию.
Алгоритм состоит из 6 этапов. На каждом этапе Робот сначала закрашивает клетки, затем продвигается дальше. Это позволяет корректно обработать проходы — клетки напротив проходов не закрашиваются, так как условие закрашивания меняется на противоположное.
На бесконечном поле есть горизонтальная и вертикальная стены. Правый конец горизонтальной стены соединён с нижним концом вертикальной стены. Длины стен неизвестны. В каждой стене есть ровно один проход неизвестной длины. Робот находится в клетке, расположенной непосредственно над горизонтальной стеной у её левого конца.
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно ниже горизонтальной стены и левее вертикальной стены, кроме клетки, в которой находится Робот перед выполнением программы. Проходы должны остаться незакрашенными.
Программа запущена в среде Кумир для обстановки из задания. Выполнение алгоритма завершилось штатно, Робот не разбился. Закрашена одна лишняя клетка — та, на которой первоначально стоял Робот (не пропущена).
Оценка: 1 балл.
Закрашены три лишние клетки (та, на которой стоял Робот, и две клетки над проходом в горизонтальной стене). Казалось бы, три клетки — меньше 10, но условие задачи предполагает, что стены и проходы могут быть сколь угодно длинными. При проходе длиной 10 клеток и более будет закрашено более 10 лишних клеток.
Оценка: 0 баллов.
Закрашены все клетки, которые должны быть закрашены, ни одна лишняя клетка не закрашена. Однако для конкретной обстановки. Если стены или проходы имеют другую длину, алгоритм не сработает.
Оценка: 0 баллов. Решение не универсально.
Программа на алгоритмическом языке, запущенная в среде Кумир. Выполнение алгоритма завершилось штатно, Робот не разбился. Закрашены все клетки, которые должны быть закрашены, ни одна лишняя клетка не закрашена. В программе учтена возможность произвольной длины фрагментов стен и разрывов.
Оценка: 2 балла.
нц пока условие. Чередуйте
закрашивание и движение: сначала закрасить, потом шагнуть. Условие
должно учитывать проход.
Структура решения:
Структура решения:
На каждом участке: сначала закрашиваем текущую клетку, потом делаем шаг. И так в цикле, пока условие выполняется. Когда условие перестаёт выполняться (проход), мы оказываемся напротив прохода. Затем двигаемся без закрашивания, пока условие не вернётся (стена восстановится).
Если у вас нет среды Кумир, можно мысленно «пройти» алгоритм на разных вариантах расположения стен. Нарисуйте несколько вариантов на бумаге и проследите, как будет двигаться Робот.
На выполнение задания 15 у вас есть примерно 20–30 минут. Правильное распределение времени поможет уложиться в срок и избежать ошибок.
Перед сохранением файла последовательно проверьте каждый пункт:
Задание оценивается по трём ключевым критериям. Максимальный балл — 2.
| Оценка | Описание |
|---|---|
| 2 балла |
Алгоритм правильно работает при всех допустимых исходных данных:
|
| 1 балл |
При всех допустимых исходных данных верно следующее:
|
| 0 баллов | Задание выполнено неверно, то есть не выполнены условия, позволяющие поставить 1 или 2 балла |
Синтаксические ошибки в записи алгоритма не учитываются. Оценивается только алгоритмическая правильность решения. Алгоритм может быть записан с использованием другого синтаксиса, более знакомого учащемуся.
Поле в задании бесконечное. Любое решение, в котором Робот останавливается у внешней стены поля либо отталкивается от неё, на бесконечном поле не завершается. Учитывайте это при проверке!
Эксперт анализирует записанный алгоритм, ищет в нём ошибки, проверяет, правильно ли алгоритм выполняет задачу и т.д. Прежде всего эксперт проверяет:
нц пока справа свободно и
нц пока не справа свободно (или их
аналоги), задание решено неверно в любом случае —
0 баллов.
Эксперт также проверяет, что алгоритм не закрашивает клетки напротив
проходов. Например, если используется условие
нц пока не сверху свободно, то при проходе
это условие станет ложным, и клетка напротив прохода останется
незакрашенной.
Ошибка: алгоритм написан для конкретных длин стен и проходов, изображённых на рисунке. Например, указано конкретное количество шагов вправо или вниз.
Последствие: при изменении длины стен алгоритм не сработает. Оценка — 0 баллов.
Ошибка: в алгоритме нет циклов, которые перемещают
Робота вдоль стены. Например, написана последовательность команд без
нц пока.
Последствие: задание оценивается в 0 баллов, так как это обязательный элемент правильного решения.
Ошибка: в цикле сначала идёт движение, потом закрашивание. Или закрашивание выполняется после выхода из цикла.
Последствие: первая клетка под стеной остаётся незакрашенной, или закрашивается клетка напротив прохода. Может привести к потере баллов.
Ошибка: условие цикла никогда не станет ложным,
Робот двигается бесконечно. Например, цикл
нц пока сверху свободно без команды
движения вверх (условие не меняется).
Последствие: алгоритм не завершается — 0 баллов.
Ошибка: Робот получает команду движения сквозь
стену. Например, вправо отдаётся, когда
справа стена.
Последствие: алгоритм аварийно завершается — 0 баллов.
Ошибка: алгоритм закрашивает клетки, которые
находятся напротив прохода в стене. Например, используется условие
нц пока сверху свободно для закрашивания
под стеной — при проходе условие остаётся истинным, и клетки
напротив прохода закрашиваются.
Последствие: при большой ширине прохода (10 и более клеток) будет закрашено более 10 лишних клеток — 0 баллов.
Прежде чем писать алгоритм, нарисуйте схему расположения стен и Робота. Отметьте, где стены, где проходы, в каком направлении нужно двигаться. Это поможет понять структуру алгоритма.
Каждый раз, когда вы закрашиваете клетки вдоль стены, вы должны
остановиться перед проходом. Используйте условие
не сверху свободно (пока сверху стена) —
при проходе условие станет ложным, и цикл завершится. Затем
используйте противоположное условие, чтобы пройти проход.
Мысленно проверьте алгоритм на разных вариантах: стена может быть очень короткой (1 клетка) или очень длинной (100 клеток). Проход может быть сразу у стены или в конце. Убедитесь, что алгоритм работает во всех случаях.
Типовая структура решения задания 15 всегда одинакова: пропустить клетку → цикл с закрашиванием вдоль стены → проход без закрашивания → цикл с закрашиванием до следующей стены → ... и так до конца. Запомните эту схему — и вы сможете решить любой вариант.
Эксперт оценивает только алгоритмическую правильность. Если вы
забыли, как пишется нц пока или
кц, но написали цикл понятным для вас
способом — это не ошибка. Главное, чтобы алгоритм был логически
верным и универсальным.
Нет, не обязательно. В задании приводится описание команд исполнителя и синтаксиса алгоритмического языка. Задание может быть выполнено даже теми, кто не знаком с используемым синтаксисом, но владеет основами алгоритмизации. Оценивается только алгоритмическая правильность.
Да, алгоритм может быть записан с использованием другого синтаксиса алгоритмического языка, более знакомого учащемуся. Главное — чтобы логика была верной.
Нет, алгоритм может быть выполнен в среде формального исполнителя (Кумир) или записан в текстовом редакторе. Если вы пишете в текстовом редакторе — убедитесь, что использование команд и конструкций понятно.
Если закрашено не более 10 лишних клеток — это оценивается в 1 балл (при условии, что алгоритм завершается и Робот не разбивается). Если больше 10 — 0 баллов.
Проверьте его на нескольких вариантах расположения стен. Если есть возможность — запустите в среде Кумир. Если нет — нарисуйте несколько схем на бумаге и мысленно «пройдите» алгоритм. Если алгоритм работает на всех вариантах — он правильный.
К сожалению, все данные будут потеряны. Придётся начать заново. Поэтому регулярно сохраняйте файл (Ctrl+S) в процессе работы. Организаторы обычно предупреждают о необходимости сохранения.
Любое правильное решение задачи 15 обязательно содержит:
Если в алгоритме отсутствуют циклы перемещения вдоль стен — задание решено неверно и оценивается в 0 баллов.
вверх, вниз, влево, вправо, закрасить) и команды проверки условий
нц пока справа свободно (двигаться, пока
справа свободно) и
нц пока не справа свободно
(двигаться, пока справа не свободно, т.е. пока есть стена)
вверх,
вниз, влево,
вправо,
закрасить
сверху свободно,
снизу свободно,
слева свободно,
справа свободно
если условие то ... все
и,
или, не
нц пока условие ... кц