Задания № 16, 24 · ЕГЭ

Анализ циклов

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

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

D
Основные термины

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

1. Как определить число итераций

Сначала установите начальное значение переменной, затем выясните, когда проверяется условие, и только после этого определяйте шаг изменения. Для цикла for границы обычно видны сразу. Например, for i in range(2, 8) в Python принимает значения \(2,3,4,5,6,7\), то есть выполняет тело 6 раз. Правая граница 8 не входит в диапазон.

\[N=\max\left(0,\left\lceil\frac{b-a}{d}\right\rceil\right)\]1

В формуле \(a\) — начальное значение, \(b\) — граница остановки, \(d\) — шаг при движении к границе. Она подходит для последовательности значений \(a, a+d, a+2d,\ldots\), пока значение остаётся меньше \(b\) при положительном шаге. Для целых значений часто удобнее просто выписать несколько первых значений или применить формулу числа членов арифметической прогрессии.

T
Правило для цикла с условием

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

КонструкцияКогда проверяется условиеЧто важно проверить
forперед очередным значениемначало, конец и шаг
whileперед каждой итерациейначальное значение и изменение переменной
repeat...untilпосле телатело выполнится минимум один раз
!
Частая ошибка

Не считайте разность границ числом итераций автоматически. В range(1, 10, 2) значения равны \(1,3,5,7,9\), поэтому итераций 5, а не 9 и не 10. Также не забывайте, что граница range справа не включается.

2. Трассировка переменных

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

  1. Выпишите начальные значения всех переменных.
  2. Определите, разрешён ли вход в цикл.
  3. Для каждой итерации выполняйте команды в исходном порядке.
  4. Запишите изменившиеся значения в таблицу.
  5. После выхода отдельно проверьте итоговое условие и результат.
\[x_{k+1}=x_k+d\]2

Если переменная увеличивается на постоянный шаг \(d\), после \(k\) итераций её значение равно \(x_k=x_0+kd\). Если она умножается на постоянный множитель \(q\), используется геометрическая последовательность: \(x_k=x_0q^k\).

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

Сколько раз выполнится тело for i in range(3, 12, 3)?

3. Накопители и результат цикла

Во многих задачах одна переменная хранит накапливаемый результат: сумму, произведение, количество подходящих элементов или максимум. Такой приём называется накопителем в цикле. Перед началом нужно задать нейтральное начальное значение: 0 для суммы и счётчика, 1 для произведения. Для поиска максимума начальное значение выбирают осторожно: это может быть первый элемент или заведомо подходящая граница.

Python
1s = 0
2for i in range(1, 5):
3    s = s + 2 * i
4print(s)

Здесь s получает добавки \(2,4,6,8\). После четырёх итераций результат равен \(20\). Если в условии есть проверка, например if i % 2 == 0, сначала определяют все значения счётчика, затем оставляют только подходящие и прибавляют их к накопителю. Условие с несколькими частями разбирайте с учётом составного условия.

Удобная таблица

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

4. Разобранный пример

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

Определите значение переменной s после выполнения программы.

Псевдокод
1s := 1
2x := 2
3FOR i FROM 1 TO 4:
4    s := s + x
5    x := x * 2
6OUTPUT s

Цикл имеет четыре итерации: \(i=1,2,3,4\). Важно соблюдать порядок команд: сначала текущее значение x прибавляется к s, затем x удваивается.

1
Начальные значения заданы до первой итерации.
\(\displaystyle s=1,\quad x=2\)
2
На первой итерации прибавляем текущее \(x=2\), затем удваиваем \(x\).
\(\displaystyle s=1+2=3,\quad x=2\cdot2=4\)
3
На второй итерации используем уже новое значение \(x=4\).
\(\displaystyle s=3+4=7,\quad x=4\cdot2=8\)
4
На третьей итерации прибавляем \(8\).
\(\displaystyle s=7+8=15,\quad x=8\cdot2=16\)
5
На четвёртой итерации прибавляем \(16\).
\(\displaystyle s=15+16=31,\quad x=16\cdot2=32\)
Показать решение Ответ

После четырёх итераций в переменной s находится сумма \(1+2+4+8+16=31\). Ответ: \(31\).

!
Ошибка в порядке присваиваний

Если поменять команды местами, результат изменится: сначала x стало бы равно 4, и именно 4 прибавилось бы к s. В трассировке нельзя выполнять команды в удобном порядке — только сверху вниз.

5. Циклы, условия и досрочный выход

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

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

Алгоритм анализа

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

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

Проверь себя

~ 2 мин4 вопроса
Вопрос 1 / 4
Вопрос 1 из 4 · границы и шаг
Сколько итераций у range(2, 10, 2)?
Главное за минуту

Главное

  • Число итераций находят по началу, границе, шагу и моменту проверки условия.
  • При трассировке команды выполняют строго сверху вниз, записывая значения после каждой итерации.
  • Для суммы и количества обычно используют накопитель с начальным значением 0; для произведения — 1.
  • break уменьшает число фактических итераций, а continue пропускает оставшуюся часть текущего тела.
  • Во вложенных циклах анализируют внутренний цикл для каждого значения внешнего счётчика.