Формальные исполнители ЕГЭ
Знакомимся с формальными исполнителями ЕГЭ — Роботом, Черепахой и Кузнечиком — и учимся писать для них программы, не задумываясь о смысле.
Формальный исполнитель — это устройство (реальное или воображаемое), которое умеет выполнять строго определённый набор команд буквально и без понимания смысла. Список доступных ему команд называют системой команд исполнителя (СКИ).
Слово «формальный» здесь ключевое: исполнитель не догадывается, что мы имеем в виду, — он делает ровно то, что написано в команде, и только то, что входит в его СКИ. Любая команда вне СКИ вызывает отказ. Это та же идея, что и в настоящем программировании: процессор тупо исполняет инструкции, а думать должен программист.
Три исполнителя, которые встречаются на ЕГЭ
В задачах ЕГЭ по информатике чаще всего фигурируют три исполнителя. У каждого своя СКИ.
Кузнечик
Прыгает по числовой прямой. Типичная СКИ — две команды: вперёд N (прибавить N к текущему числу) и назад M (вычесть M). Стартует обычно с 0, цель — попасть в заданное число.
Черепаха
Ползает по полю и рисует линию. Команды: Вперёд n (пройти n шагов, оставляя след) и Направо a (повернуться на a градусов). Управляя ими, рисуют квадраты, треугольники, звёзды. Часто внутри цикла Повтори k [...].
Робот
Ходит по клетчатому полю со стенами. Команды движения: вверх, вниз, влево, вправо. Есть команды-условия (датчики): слева свободно, сверху стена и т. п. — их используют в циклах нц пока ... кц и ветвлениях если ... то.
Как читать программу исполнителя
Чтение — это аккуратная трассировка: ведём по шагам и записываем состояние после каждой команды. Возьмём Кузнечика с командами вперёд 5 и назад 3, старт в 0. Дана программа из 4 команд:
Старт: 0
вперёд 5 -> 0 + 5 = 5
вперёд 5 -> 5 + 5 = 10
назад 3 -> 10 - 3 = 7
вперёд 5 -> 7 + 5 = 12
Итог: 12
Каждый прыжок прибавляет 5 или вычитает 3. Если в программе $a$ команд «вперёд 5» и $b$ команд «назад 3», итоговое число равно
$$ X = 5a - 3b. $$
Эта формула — мост от «потыкать наугад» к точному расчёту: зная цель, мы решаем уравнение относительно $a$ и $b$.
Как составлять программу: разбор задачи ЕГЭ
Задача. У Кузнечика две команды: вперёд 5 и назад 3. Он стартует с 0. Какое наименьшее число команд нужно, чтобы оказаться в точке 4?
Нужно подобрать целые неотрицательные $a$ и $b$ так, чтобы $5a - 3b = 4$ при минимальной сумме $a + b$. Переберём по возрастанию $a$:
| $a$ (вперёд 5) | Нужно $3b = 5a - 4$ | $b$ (назад 3) | Всего команд $a+b$ |
|---|---|---|---|
| 1 | 1 | не делится на 3 | — |
| 2 | 6 | 2 | 4 |
| 5 | 21 | 7 | 12 |
Первое же подходящее решение — $a = 2$, $b = 2$: два раза «вперёд 5» (стало 10) и два раза «назад 3» (стало 4). Итого 4 команды — это и есть минимум. Проверим расчёт программой:
best = None
for a in range(0, 30):
for b in range(0, 30):
if 5 * a - 3 * b == 4:
total = a + b
if best is None or total < best[0]:
best = (total, a, b)
print("Минимум команд:", best[0])
print("вперёд 5:", best[1], ", назад 3:", best[2])
Вывод:
Минимум команд: 4 вперёд 5: 2 , назад 3: 2
Как это работает
Любой формальный исполнитель описывается тремя вещами, и понимание этой тройки — половина решения любой задачи.
- Состояние. Что у исполнителя «есть прямо сейчас»: число у Кузнечика, координаты и угол у Черепахи, клетка у Робота.
- Система команд (СКИ). Полный список разрешённых действий. Шаг влево от СКИ — отказ исполнителя.
- Правило перехода. Как каждая команда меняет состояние (например, «вперёд 5» прибавляет 5).
Решение задачи на исполнителя — это либо аккуратная трассировка (если программа дана и надо найти результат), либо подбор/уравнение (если дан результат и надо составить программу). Для исполнителей с циклами полезно записать, что делает один проход цикла, и умножить на число повторений.
Частые ошибки
- «Додумывают» за исполнителя. Исполнитель формален: команды вне СКИ он не понимает, «очевидный» смысл значения не имеет — только правило перехода.
- Сбиваются в трассировке. Лень выписывать состояние после каждой команды приводит к ошибке. Веди таблицу: команда → новое состояние.
- Путают «наименьшее число команд» и «любое решение». В ЕГЭ часто требуют минимум — нужно перебирать от меньшего и брать первое подходящее.
- Забывают про границы у Робота. Команда движения сквозь стену или за край поля — отказ. Перед движением проверяют датчик («справа свободно»).
- Неверно считают повороты Черепахи. Чтобы нарисовать правильный $n$-угольник, на каждом шаге поворачивают на внешний угол $360 / n$ градусов, а не на внутренний.
Итоги
- Формальный исполнитель выполняет только команды из своей СКИ, буквально и без понимания смысла.
- Главные герои ЕГЭ: Кузнечик (число на прямой), Черепаха (рисование), Робот (клетки и стены с датчиками).
- Читать программу — значит трассировать: записывать состояние после каждой команды.
- Составлять программу — подбирать команды под цель; для Кузнечика помогает уравнение вида $5a - 3b = X$ и поиск минимума $a + b$.
- Любой исполнитель = состояние + СКИ + правило перехода.