Формальные исполнители алгоритмов: команды и блок-схемы (ЕГЭ)
Коротко о главном
Формальный исполнитель — объект (реальный или воображаемый: Робот, Черепаха, Чертёжник, вычислитель чисел), который выполняет только команды из своей строго заданной системы команд (СКИ), точно и без «понимания смысла». Каждая команда меняет состояние исполнителя (позицию, значение переменной, содержимое поля) по чётко описанному правилу. Алгоритм для исполнителя записывается либо линейной последовательностью команд, либо блок-схемой с циклами и условиями. Задача ЕГЭ — трассировать выполнение: применить команды к начальным данным и получить результат, либо восстановить/подобрать алгоритм по заданному результату.
Определения и правила
| Понятие | Суть |
|---|---|
| Исполнитель | Объект с конечным набором допустимых команд (СКИ) и средой (обстановкой) |
| Команда | Элементарное действие, меняющее состояние среды/исполнителя |
| СКИ | Полный список команд, которые исполнитель понимает; вне СКИ команды недопустимы |
| Алгоритм | Конечная последовательность команд, приводящая от начальных данных к результату |
Цикл ПОКА <условие> ... КОНЦ |
Тело выполняется, пока условие истинно; проверка — перед выполнением тела |
Цикл ДЛЯ i от a до b |
Тело выполняется фиксированное число раз (при a≤b — b−a+1 раз) |
Ветвление ЕСЛИ...ТО...ИНАЧЕ |
Выбор одной из двух ветвей по условию |
| Блок-схема | Графическое представление алгоритма: прямоугольник — действие, ромб — условие, стрелки — порядок выполнения |
Типовые СКИ на экзамене:
- Робот: закрасить клетку; переместиться вверх/вниз/влево/вправо (шаг выполняется только если нет стены, иначе — авария/останов); проверка условий «сверху свободно», «слева стена» и т.п.
- Чертёжник/Черепаха: сместиться на вектор ; повернуть на угол; при движении рисуется отрезок.
- Вычислитель чисел: команды вида «умножить на », «прибавить »; часто нужно найти минимальную длину программы, переводящей число в , или все различные результаты при обходе всех цепочек команд заданной длины.
Общее правило трассировки: состояние (команда 1) (команда 2) — результат.
Для циклов «ПОКА» число итераций заранее неизвестно и зависит от данных, поэтому важно на каждом шаге проверять условие до входа в тело.
Как применять (примеры)
Пример 1. Вычислитель. СКИ: 1) прибавить 1; 2) умножить на 2. Найти кратчайшую программу, переводящую 3 в 16. Решение: работаем от конца к началу. , , ? — но проще от начала: — 3 команды. Проверка альтернатив длиной 2 невозможна (, ; из этих чисел за один шаг 16 не получить). Ответ: 3 команды — «+1, ×2, ×2».
Пример 2. Робот, цикл ПОКА. Команда «вправо» перемещает робота на 1 клетку, если справа нет стены. Алгоритм:
ПОКА справа свободно
вправо
КОНЦ
закрасить
Робот сдвигается вправо, пока не встретит стену, затем закрашивает клетку у стены. Если изначально справа стена — сразу закрашивается стартовая клетка.
Пример 3. Блок-схема с ветвлением (аналог задания 6/18). Дано: переменная . Блок-схема: ромб «?» → ветка «да»: ; ветка «нет»: ; далее выход. При : условие ложно → . При : условие истинно → .
Типичные ошибки
- Применять команду, не входящую в СКИ, или игнорировать условие применимости (например, шаг «вправо» при стене справа — это не движение, а авария/невозможность выполнения).
- Путать порядок проверки условия и тела цикла: в цикле «ПОКА» условие проверяется перед каждым выполнением тела, а не после.
- Ошибка в подсчёте числа итераций «ДЛЯ»: забывают, что диапазон включает обе границы, число повторов — .
- При поиске кратчайшей программы для вычислителя перебирают не все ветки дерева команд или не учитывают, что порядок команд влияет на результат (умножение и сложение не коммутируют относительно друг друга).
- Неверное чтение блок-схемы: путают ветви «да»/«нет» у ромба, забывают про циклический возврат стрелки к условию.
- Механическая ошибка при трассировке — потеря промежуточного значения переменной на одном из шагов.
Где встречается на экзамене
- Задание 5 — определить результат выполнения короткого алгоритма (часто вычислитель чисел или Робот) для заданных исходных данных.
- Задание 6 — трассировка программы/алгоритма с циклами и условиями, часто на псевдокоде, аналогичном блок-схеме.
- Задание 12 — работа с исполнителем на поле (Робот, Чертёжник): подобрать или проанализировать алгоритм, определить итоговое состояние обстановки.
- Задание 18 — сложные алгоритмы с циклами и ветвлениями, включая перебор вариантов и поиск числа возможных результатов или количества команд.
Частые вопросы
Что такое система команд исполнителя (СКИ)?
Это полный и строго ограниченный набор действий, которые исполнитель способен выполнить. Любая команда вне СКИ считается недопустимой и не может быть включена в алгоритм для этого исполнителя.
Когда проверяется условие в цикле «ПОКА»?
Перед каждым выполнением тела цикла. Если условие изначально ложно, тело цикла не выполнится ни разу — это отличает «ПОКА» от циклов с постусловием.
Как найти кратчайшую программу для вычислителя чисел?
Удобнее двигаться от конечного числа к начальному, применяя обратные операции (деление вместо умножения, вычитание вместо сложения), и сравнивать длины полученных цепочек, либо перебирать варианты от начала вперёд по уровням дерева.
Что произойдёт с Роботом, если он получит команду двигаться в сторону стены?
Команда не может быть выполнена — это считается аварийной ситуацией (программа завершается с ошибкой), поэтому в задачах такие пути исключаются или требуют явной проверки условия «свободно/стена» перед движением.
Как правильно читать блок-схему с ромбом?
Ромб — это блок условия с двумя выходами: «да» и «нет». Нужно точно определить, какая стрелка соответствует истинному значению условия, а какая — ложному, и следовать только по этому пути.
Чем задание 12 отличается от задания 5 по теме исполнителей?
В задании 5 обычно короткий алгоритм и простая трассировка результата, а в задании 12 чаще требуется работа с полем/обстановкой (Робот, Чертёжник) и разбор влияния алгоритма на всё пространство, включая границы и препятствия.
Потренироваться: задание 6 · задание 12 · задание 5 · задание 18