ОГЭ · Информатика · Алгоритмы, исполнитель Робот и основы программирования (задания 5, 6, 15, 16)
Исполнитель Робот: среда, команды, циклы и ветвления
Задание 15 — программа для Робота. Здесь система команд, условия проверки стен и четыре типовые конструкции, из которых собирается почти любое решение.
ℹ️ Вопросов «сколько клеток закрасит Робот» и «какое условие поставить в цикл» в ОГЭ нет: Робот встречается только в задании 15, где нужно написать программу целиком и получить за неё 2 балла. Задачи ниже — тренировочные, они отрабатывают конструкции по частям; полные задания 15 разобраны в модуле «Часть 2: практические задания на компьютере».
Среда и система команд Робота
Определение
Робот — формальный исполнитель, который ходит по клетчатому полю, между клетками могут быть стены. Робот умеет закрашивать клетку, в которой стоит
| Команды движения | вверх, вниз, влево, вправо — переход в соседнюю клетку |
|---|---|
| Команда закраски | закрасить — закрашивает текущую клетку |
| Условия свободы | сверху свободно, снизу свободно, слева свободно, справа свободно |
| Условия стены | сверху стена, снизу стена, слева стена, справа стена |
| Составные условия | и, или, не — например, справа свободно и снизу стена |
| Отказ | если Робот пытается пройти сквозь стену или за край поля — он ломается |
| Цикл с условием | нц пока <условие> ... кц — повторять, пока условие истинно |
|---|---|
| Цикл со счётчиком | нц N раз ... кц — повторить ровно N раз |
| Ветвление | если <условие> то ... все или если ... то ... иначе ... все |
| Вложенность | цикл можно поместить внутрь другого цикла или ветвления |
Четыре типовые конструкции, из которых собирается решение
Первая — движение до стены: нц пока справа свободно; вправо; кц. Робот идёт вправо, пока путь свободен, и останавливается вплотную к стене. Эта конструкция нужна почти в каждом варианте, потому что размеры поля заранее неизвестны и «отсчитать» нужное число шагов нельзя. Вторая — движение с закраской: то же самое, но внутри цикла добавляется закрасить. Важно решить, закрашивать до шага или после: если поставить закрасить перед движением, будет закрашена стартовая клетка, а конечная — нет. Третья — закраска вдоль стены: внутри цикла движения ставится ветвление, которое закрашивает клетку только там, где рядом есть стена: если снизу стена то закрасить все. Четвёртая — обход контура: подряд идут несколько циклов «до стены», каждый со своим направлением, — так Робот проходит периметр прямоугольника. Отсюда универсальный совет: почти никогда не используй нц N раз, если N зависит от размеров поля; используй нц пока.
Порядок написания программы для Робота
• Определи, где Робот стоит в начале и куда он должен прийти.
• Разбей маршрут на участки, на каждом движение идёт в одну сторону.
• Для каждого участка возьми нц пока <направление> свободно ... кц.
• Реши, что закрашивать: поставь закрасить внутри цикла до или после шага.
• Если закрашивать нужно не все клетки — добавь если с проверкой стены.
• Проверь крайние клетки: закрашена ли первая, закрашена ли последняя.
Разбор примера
Разбор: закрасить строку до стены
Робот стоит в левой клетке горизонтального коридора шириной в одну клетку. Нужно закрасить все клетки коридора, включая начальную и конечную.
Показать решение по шагам
- 1. Сначала закрашиваем стартовую клетку: команда закрасить до цикла.
- 2. Затем цикл: нц пока справа свободно; вправо; закрасить; кц.
- 3. На каждом шаге Робот сначала переходит в новую клетку, потом её закрашивает — значит, каждая клетка справа будет закрашена.
- 4. Когда справа окажется стена, цикл закончится, и последняя клетка уже будет закрашена.
- 5. Если убрать закрасить перед циклом, останется незакрашенной первая клетка.
Ответ: закрасить; нц пока справа свободно; вправо; закрасить; кц
Ловушка: попытка пройти сквозь стену — это отказ, решение не засчитывается. Поэтому каждое движение должно быть защищено проверкой «свободно».
Вопрос на проверку
Какую конструкцию нужно использовать, если размеры поля заранее неизвестны?
Ответить и проверить себя — после бесплатной регистрации.
Четыре правила, по которым проверяют алгоритм для Робота
Задание 15.1 оценивают не по красоте записи, а по трём вопросам, и знать их полезно заранее. Первый: безопасен ли каждый шаг. Перед любой командой движения должна стоять проверка соответствующего условия («справа свободно», «снизу свободно»). Шаг в сторону стены разрушает Робота, и это грубая ошибка, обнуляющая ответ, а не потеря одного балла. Второй: завершается ли цикл. Условие продолжения обязано когда-нибудь стать ложным на любом допустимом поле. Третий: совпадает ли множество закрашенных клеток с требуемым. Одна лишняя или одна пропущенная клетка — минус балл, две и больше — ноль. И есть четвёртое правило, о котором забывают: алгоритм должен работать на любом поле, подходящем под описание. Если в условии сказано «длина ряда неизвестна», запись из фиксированного числа команд не засчитывают, даже когда на нарисованном поле она даёт верную картинку. Отсюда практический вывод: почти все решения линии 15 состоят из циклов вида «нц пока <направление> свободно» и одной-двух команд дозакраски до или после цикла.
Разбор примера
Задание 15: закрасить столбец вниз до стены
Робот стоит в верхней клетке вертикального столбца, под последней клеткой стена, длина столбца неизвестна. Напишите алгоритм, закрашивающий все клетки столбца.
Показать решение по шагам
- 1. Длина неизвестна → цикл с условием. Направление движения — вниз, значит, условие продолжения снизу свободно.
- 2. Алгоритм:
нц пока снизу свободно/закрасить/вниз/кц/закрасить. - 3. Безопасность шага: команда
внизстоит после проверки «снизу свободно» — Робот не разрушится. - 4. Завершаемость: с каждым шагом Робот приближается к нижней стене, поэтому условие рано или поздно станет ложным.
- 5. Полнота закраски: в теле цикла закрашиваются все клетки, из которых можно шагнуть вниз; последняя закрашивается командой после цикла. Проверка на столбце из одной клетки: цикл не выполнится, сработает заключительная закраска — верно.
Ответ: нц пока снизу свободно / закрасить / вниз / кц / закрасить
Разбор примера
Задание 15: дойти до стены, не закрашивая, и закрасить только последнюю клетку
Робот стоит в левой клетке горизонтального ряда. Напишите алгоритм, который закрасит только крайнюю правую клетку ряда, не закрашивая остальные. Длина ряда неизвестна.
Показать решение по шагам
- 1. Сначала доходим до стены, ничего не закрашивая:
нц пока справа свободно/вправо/кц. - 2. После цикла Робот стоит в крайней правой клетке: шагнуть вправо уже нельзя, значит, дальше стена.
- 3. Теперь закрашиваем ровно её:
закрасить. - 4. Алгоритм целиком:
нц пока справа свободно/вправо/кц/закрасить. - 5. Чем этот случай важен: он показывает, что команда
закраситьставится там, где нужен результат, а не механически внутри цикла. Если оставить закраску в теле, закрасится весь ряд — это «закраска лишних клеток», то есть ноль баллов при нескольких лишних. - 6. Проверка на ряде из одной клетки: цикл не выполнится, закрасится стартовая клетка — она же и крайняя правая. Верно.
Ответ: нц пока справа свободно / вправо / кц / закрасить
Разбор примера
Задание 15: обойти комнату по двум сторонам
Робот стоит в левом верхнем углу прямоугольной комнаты без внутренних стен; размеры неизвестны. Напишите алгоритм, закрашивающий верхнюю строку и правый столбец комнаты.
Показать решение по шагам
- 1. Разбиваем на два цикла: сначала вправо по верхней строке, потом вниз по правому столбцу.
- 2. Первый цикл:
нц пока справа свободно/закрасить/вправо/кц. После него Робот в правом верхнем углу, и этот угол ещё не закрашен. - 3. Второй цикл:
нц пока снизу свободно/закрасить/вниз/кц/закрасить. Его первая закраска закрывает угловую клетку, а заключительная — нижнюю клетку правого столбца. - 4. Алгоритм целиком:
нц пока справа свободно/закрасить/вправо/кц/нц пока снизу свободно/закрасить/вниз/кц/закрасить. - 5. Почему угол не закрашен дважды: в первом цикле закраска происходит до шага, поэтому правый верхний угол в него не попадает. Впрочем, повторная закраска уже закрашенной клетки не ошибка: критерий прямо говорит, что снижать балл за это не следует.
- 6. Проверка на комнате 1 × 1: оба цикла не выполнятся, сработает заключительная закраска — единственная клетка закрашена. Верно.
Ответ: Два цикла: вправо с закраской, затем вниз с закраской и дозакраска последней клетки
Разбор примера
Файл-ответ robot.txt (формат задания 15.1): что именно сдают
Запишите алгоритм из третьего разбора в файл и сохраните как robot.txt — в задании 15.1 сдают файл с текстом алгоритма (или файл учебной среды).
Показать решение по шагам
- 1. Содержимое файла целиком:
нц пока справа свободно/закрасить/вправо/кц/нц пока снизу свободно/закрасить/вниз/кц/закрасить. Девять строк, ни одной лишней. - 2. Что принимается по критериям: любое принятое написание команд (
вверх,вниз,влево,вправо,закрасить), конструкциинц пока … кц,если … то … все, а также запись на КуМире, псевдокодом или словами — если из неё однозначно видны цикл, условие и порядок команд. - 3. Три пункта самопроверки перед сдачей: 1) перед каждой командой движения есть проверка условия (Робот не разрушится); 2) каждый цикл завершается на любом допустимом поле; 3) множество закрашенных клеток совпадает с требуемым — проверь мысленно на поле минимального размера и на поле побольше.
- 4. Чего в файле быть не должно: команд, которых у исполнителя нет (
прыжок,повернуть,идти к), обращений к координатам клетки и фиксированного числа повторений вместо цикла по условию. - 5. Как сохранять: обычный текстовый файл с расширением .txt (или файл учебной среды, если условие называет её) под именем из условия.
Ответ: robot.txt: девять строк алгоритма и три пункта самопроверки — безопасность шага, завершаемость, совпадение закраски
ℹ️ Критерии задания 15 (наш разбор, check_requirements_data/oge_informatics/line-15.md): «Алгоритм, при котором Робот разрушается: шаг в сторону стены без предварительной проверки условия. Это грубая ошибка, а не „на единицу“». А решение из фиксированного числа команд там, где длина ряда не задана, не засчитывают вовсе.
Задание №для самопроверки в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №для самопроверки в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №для самопроверки в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.