Задания № 5, 6, 22 · ЕГЭ

Имитация работы алгоритма

Пошаговая имитация выполнения алгоритма: как отслеживать команды, переменные и ветвления
6 мин чтенияСложность: Обновлено 29 сентября 2026

Имитация работы алгоритма — это точное выполнение его команд вручную, шаг за шагом, с фиксацией состояния всех переменных и результата. Такой способ помогает решать задачи, где нужно определить значение переменной, вывести последовательность чисел или установить, сколько раз выполнится команда.

Что такое имитация алгоритма

Алгоритм задаёт последовательность действий, но порядок этих действий может зависеть от условий, повторений и значений переменных. При имитации мы временно становимся исполнителем: читаем команды в заданном порядке, выполняем только разрешённые действия и после каждого изменения обновляем значения переменных.

D
Формальное исполнение

Формальное исполнение алгоритма — это выполнение команд строго по правилам, без догадок о замысле автора и без пропуска даже очевидных действий. На каждом шаге учитываются текущие значения переменных, условие перехода и число уже выполненных повторений.

Перед решением полезно повторить таблицу состояний переменных и трассировочную таблицу. В первой обычно записывают значения переменных после команд, во второй — подробный ход выполнения: номер шага, команду, условие и результат. Если требуется понять саму структуру записи алгоритма, обратитесь к странице формального исполнения алгоритма, внутри которой находится эта тема.

  1. Выпишите начальные значения всех переменных.
  2. Определите первую выполняемую команду и её номер.
  3. Выполните команду буквально и сразу измените состояние переменных.
  4. Для условия вычислите логическое выражение: истина или ложь.
  5. Для цикла следите за условием продолжения и числом повторений.
  6. Запишите итоговый вывод именно в том порядке, в котором он появляется.
T
Правило состояния

Состояние алгоритма в каждый момент определяется текущими значениями всех переменных, положением исполнителя в тексте алгоритма и содержимым возможного вывода. Следующий шаг однозначно определяется этим состоянием и очередной командой.

Как читать команды и условия

Присваивание \(x := a\) означает: вычислить правую часть по старым значениям переменных и записать результат в \(x\). Например, если \(x=3\), команда \(x:=x+2\) делает \(x=5\). Это не уравнение, которое нужно решить, а операция изменения значения.

\[x_{\text{новое}} := f(x_{\text{старое}}, y_{\text{старое}}, \ldots)\]

В условной команде сначала вычисляют условие, затем выполняют только одну ветвь. Условия сравнения \(<\), \(>\), \(=\), \(\le\), \(\ge\) дают логическое значение. В сложном условии сначала учитывают скобки, затем операции И, ИЛИ и НЕ согласно правилам используемого псевдокода.

Приём для ветвлений

Рядом с условием пишите результат явно: «\(x>0\) — истина» или «\(x>0\) — ложь». Это предотвращает переход сразу в неправильную ветвь, особенно если значение переменной изменилось на предыдущей строке.

Для циклов важно различать цикл с условием и цикл со счётчиком. В цикле «пока условие» условие проверяется перед очередным повторением: если оно ложно, тело не выполняется. В цикле «для» число повторений определяется диапазоном, а границы диапазона нужно читать по правилам конкретной записи.

\[\text{while } C:\quad C\text{ проверяется перед каждым выполнением тела}\]
\[\text{for } i=a\text{ to }b:\quad i=a,a+1,\ldots,b\quad\text{(если границы включены)}\]

Алгоритм решения задачи

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

ШагКомандаСостояние после командыВывод
0начальные значения\(a=\ldots\), \(b=\ldots\)—
1присваивание или проверкаобновлённые значенияесли есть
2следующая командаобновлённые значенияесли есть

Если алгоритм содержит вложенный цикл или условие, сначала определите границы соответствующего блока. Не возвращайтесь к началу всего алгоритма после окончания внутреннего цикла: возвращение происходит только к команде, указанной структурой цикла.

Микропроверка

Пусть \(x=4\). Что будет после последовательности команд \(x:=x+3\); \(x:=2\cdot x\)?

Разобранный пример: цикл и условие

№
Задача экзаменационного типа

Дан алгоритм: \(s:=0\); для \(i\) от \(1\) до \(5\): если \(i\) делится на \(2\), то \(s:=s+i\), иначе \(s:=s-1\). Определите значение \(s\) после выполнения алгоритма.

1
Начальное состояние задано первой командой.
s=0
2
При \(i=1\) число нечётное, поэтому выполняется ветвь «иначе».
s:=0-1=-1
3
При \(i=2\) число делится на \(2\), прибавляем \(2\).
s:=-1+2=1
4
При \(i=3\) число нечётное, вычитаем \(1\).
s:=1-1=0
5
При \(i=4\) число делится на \(2\), прибавляем \(4\).
s:=0+4=4
6
При \(i=5\) число нечётное, вычитаем \(1\).
s:=4-1=3
Номер повторения\(i\)Условие \(i\) делится на \(2\)Изменение \(s\)Новое \(s\)
11ложь\(s:=s-1\)\(-1\)
22истина\(s:=s+2\)\(1\)
33ложь\(s:=s-1\)\(0\)
44истина\(s:=s+4\)\(4\)
55ложь\(s:=s-1\)\(3\)
T
Ответ примера

После пяти повторений значение переменной равно \(s=3\). Важно, что условие проверяется отдельно для каждого нового значения \(i\), а переменная \(s\) сохраняет результат предыдущих повторений.

Вывод, счётчики и промежуточные значения

Команда вывода может находиться внутри цикла. Тогда ответ состоит из нескольких элементов, и их порядок важен. Если алгоритм выводит \(x\), затем изменяет \(x\), а потом снова выводит \(x\), записываются два разных значения. Символы-разделители, пробелы и переносы строк также могут иметь значение в задачах на точную последовательность.

Счётчик обычно увеличивается на единицу, но нельзя автоматически считать, что цикл выполнится столько раз, каково начальное значение счётчика. Нужно проследить все изменения и каждую проверку условия. В цикле с шагом \(2\) значения могут быть только чётными или только нечётными.

\[\text{число повторений цикла }i=a,a+d,\ldots,b = \left\lfloor\frac{b-a}{d}\right\rfloor+1\quad(a\le b,\ d>0)\]

В задачах на исполнителя, например на перемещение по клеткам, после каждой команды фиксируйте координаты и направление. Для задач на маршруты полезно заранее изучить подсчёт маршрутов Кузнечика, а если маршруты считают по промежуточным результатам — динамику для маршрутов Кузнечика. При наличии запрещённых клеток правила уточняются на странице препятствия на поле Кузнечика.

!
Частые ошибки

Не подставляйте новое значение переменной в левую и правую часть одновременно; присваивание выполняется по старому состоянию. Не выполняйте обе ветви условной команды. Не считайте проверку условия выполнением тела цикла. Не забывайте, что целочисленное деление, остаток и делимость имеют свои правила, а границы диапазона могут быть включёнными.

  • Я выписал начальные значения и понял типы данных.
  • Я не пропустил проверку каждого условия.
  • Я записал состояние после каждого присваивания.
  • Я проверил число повторений и границы цикла.
  • Я отделил промежуточный вывод от окончательного результата.

Самопроверка результата

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

Q
Быстрый тест по теме

Быстрый тест

~ 2 мин4 вопроса
Вопрос 1 / 4
Вопрос 1 из 4 · присваивание
Что делает команда \(a:=a+1\)?
Главное за минуту

Главное

  • Имитация — это точное пошаговое выполнение алгоритма без пропуска команд.
  • После каждого присваивания обновляйте состояние переменных; присваивание не является уравнением.
  • В условии выполняется только выбранная ветвь, а в цикле нужно отдельно отслеживать проверки и повторения.
  • Выводите значения в фактическом порядке появления и проверяйте границы циклов.
  • Таблица состояний или трассировочная таблица помогает обнаружить ошибки и обосновать ответ.