Задания № 6, 16 · ОГЭ

Анализ циклического алгоритма

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

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

1. Что анализируют в цикле

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

D
Основные понятия

Итерация — одно выполнение тела цикла. Счётчик — переменная, которая изменяется на постоянную величину и помогает управлять повторениями. Условие продолжения — логическое выражение, истинное в момент выполнения очередной итерации. Условие завершения — ситуация, при которой цикл прекращается.

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

ШагУсловие перед теломСтарое значениеИзменениеНовое значение
0проверка до первой итерацииначальное—начальное
1истина\(x\)действие тела\(x_1\)
2истина или ложь\(x_1\)действие тела\(x_2\)
……………

2. Как найти число итераций

Сначала выясните, как меняется управляющая переменная. Если она увеличивается на \(d\) и цикл продолжается, пока \(x \le b\), то значения имеют вид \(x_0, x_0+d, x_0+2d, \ldots\). Нужно найти наибольший номер \(k\), для которого условие ещё истинно.

\[x_i=x_0+i\cdot d\]
\[k=\left\lfloor\frac{b-x_0}{d}\right\rfloor,\qquad N=k+1\quad (d>0,\, x\le b)\]

Здесь \(N\) — число итераций, а \(i\) начинается с нуля. Формула подходит только при правильном направлении изменения. Если \(x\) уменьшается на \(d>0\) и условие имеет вид \(x\ge b\), используют аналогичную запись:

\[N=\left\lfloor\frac{x_0-b}{d}\right\rfloor+1\quad (x:=x-d,\, x\ge b)\]
T
Правило границы

При условии \(x<b\) последнее допустимое значение не равно \(b\), если \(b\) достигается. При условии \(x\le b\) значение \(b\) включается. Поэтому замена строгого сравнения на нестрогое может добавить одну итерацию.

Если шаг переменной не постоянен, арифметическую формулу применять нельзя. Например, при командах \(x:=2x\) или \(x:=x^2\) значения нужно выписывать по очереди. При вложенных циклах число выполнений внешнего цикла умножают на число выполнений внутреннего только тогда, когда внутренний цикл имеет одинаковое число повторений на каждой итерации внешнего.

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

Сколько раз выполнится тело цикла: \(x:=2\); пока \(x<10\) выполнять \(x:=x+3\)?

3. Как вычислить результат программы

Для результата недостаточно знать только число итераций: тело может изменять несколько переменных. Разберите команды в их порядке, потому что присваивание справа налево не выполняется автоматически. В команде \(a:=b\) сначала вычисляют правую часть по старым значениям, затем результат записывают в \(a\).

Удобный порядок разбора

1) выпишите начальные значения; 2) проверьте условие; 3) выполните команды тела сверху вниз; 4) зафиксируйте новые значения; 5) повторите проверку; 6) после выхода выполните команды, расположенные после цикла.

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

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

Псевдокод
1s := 0
2x := 2
3while x <= 8 do
4    s := s + x
5    x := x + 2
6output(s, x)
№
Идея решения

Управляющая переменная начинается с \(2\) и увеличивается на \(2\). Условие \(x\le 8\) включает значения \(2,4,6,8\). Значит, будет четыре итерации, а \(s\) станет суммой этих чисел.

1
Перед первой итерацией заданы \(s=0\) и \(x=2\); условие истинно.
\(\displaystyle s:=0+2=2,\qquad x:=2+2=4\)
2
Перед второй итерацией \(x=4\le8\).
\(\displaystyle s:=2+4=6,\qquad x:=4+2=6\)
3
Перед третьей итерацией \(x=6\le8\).
\(\displaystyle s:=6+6=12,\qquad x:=6+2=8\)
4
Перед четвёртой итерацией \(x=8\le8\).
\(\displaystyle s:=12+8=20,\qquad x:=8+2=10\)
5
Теперь \(x=10\), условие \(10\le8\) ложно, поэтому цикл заканчивается.
\(\displaystyle s=20,\qquad x=10\)
Итерация\(x\) до тела\(s\) до тела\(s\) после тела\(x\) после тела
12024
24266
366128
48122010

Ответ: программа выведет \(20\) и \(10\). Обратите внимание: последнее значение \(x=10\) не является значением, при котором выполнялось тело; оно появилось после последнего увеличения и только затем было проверено.

4. Завершение и ошибки циклического алгоритма

Цикл завершается, если после конечного числа итераций условие становится ложным. Для доказательства завершения ищут величину, которая движется к границе: например, при \(x:=x+1\) и условии \(x<100\) переменная приближается к 100. Если переменная не меняется, изменяется не в ту сторону или шаг равен нулю, цикл может стать бесконечным.

T
Признак возможного зацикливания

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

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

• Считать проверку условия итерацией. Проверка — не выполнение тела. <br>• Забывать, что при предусловии тело может не выполниться. <br>• Путать \(<\) и \(\le\), \(>\) и \(\ge\). <br>• Учитывать последнее значение счётчика как итерацию, хотя оно получено уже после тела. <br>• Выполнять присваивания одновременно, хотя в программе они идут последовательно. <br>• Использовать формулу арифметической прогрессии при удвоении, делении или другом непостоянном шаге. <br>• В массиве обращаться к элементу с индексом за пределами допустимого диапазона.

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

проверкателовыходистиналожь
Схема анализа: проверка условия → тело цикла → повторная проверка или выход.

5. Универсальный алгоритм решения задания

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

Число итераций — это число истинных проверок условия, после которых действительно выполнялось тело, а не число всех проверок. Последняя ложная проверка завершает цикл, но итерацией не считается.

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

Быстрая проверка

~ 2 мин4 вопроса
Вопрос 1 / 4
Вопрос 1 из 4 · Число итераций
Сколько итераций у цикла: \(i:=1\); пока \(i<7\) выполнять \(i:=i+2\)?
Главное за минуту

Главное

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