Перейти к содержанию
Educora
Средний6–9 классы25 мин25 / 59

Циклические алгоритмы и таблица трассировки

Циклы со счётчиком, с предусловием и с постусловием, таблица трассировки, типичные задачи на сумму, произведение, количество, максимум и цифры, вложенные и бесконечные циклы; задания ГЦЭ: число повторений, два цикла подряд, вход по результату.

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

Учителю нужно сложить баллы 30 учеников. Вместо того чтобы 30 раз писать «прибавь следующий балл к сумме», достаточно написать это один раз и сказать «повтори 30 раз». Алгоритм с повторяющимися шагами — циклический. На вступительных экзаменах 2025–2026 годов циклы были самой частой темой: задания по Python с пометкой «Оператор цикла», а также задания с блок-схемами на число повторений, два цикла подряд и обратные вопросы вида «какое значение нужно ввести, чтобы…». В этом уроке вы научитесь читать циклы в блок-схемах и безошибочно выполнять их с помощью таблицы трассировки.

Цикл и его виды

Определение
Циклический алгоритм, тело цикла

Алгоритм, в котором группа команд повторяется несколько раз, называется циклическим. Повторяющиеся команды образуют тело цикла, а однократное выполнение тела — это итерация (один шаг цикла).

  • Цикл со счётчиком (с параметром) — число повторений известно заранее: переменная цикла меняется от начального значения до конечного с заданным шагом. В Python: for i in range(1, 11).
  • Цикл с предусловием — условие проверяется перед телом, и тело повторяется, пока условие истинно. Если условие ложно с самого начала, тело не выполнится ни разу. В Python: while.
  • Цикл с постусловием — сначала выполняется тело, затем проверяется условие, поэтому тело выполнится хотя бы один раз. В Python отдельного оператора нет; его записывают через while True: и break.
С предусловиемС постусловиемусловиетело циклаДаНеттело циклаусловиеДаНет
Стрелка назад означает цикл: разница в том, где стоит условие
Text
для i от 1 до 5
    S = S + i
всё

пока a < b
    a = a + 5
всё

повторять
    x = x − 3
пока x > 0
Три вида циклов в псевдокоде

В блок-схемах ГЦЭ цикл со счётчиком тоже рисуют ромбом: сначала i = 1, затем ромб i ≤ n, а в теле обязательно i = i + 1. Как только видите стрелку, идущую вверх, — перед вами цикл; посмотрите, какой выход ромба возвращается назад: это и есть условие продолжения цикла.

Таблица трассировки и типичные задачи на циклы

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

S = S + x; P = P · x; k = k + 1
где:
  • Sсумма; начальное значение 0
  • Pпроизведение; начальное значение 1 (с 0 оно навсегда останется 0)
  • kколичество (счётчик); начальное значение 0

Три «накопительные» переменные цикла и их начальные значения

Пример 1. Сумма квадратов нечётных чисел

S = 0; i = 1; пока i ≤ 5: S = S + i·i; i = i + 2. Выводится S. Что будет напечатано?

Показать решение
i принимает значения 1, 3, 5 (шаг 2). Как видно из таблицы, S = 1 + 9 + 25 = 35. Условие проверялось 4 раза, тело выполнилось 3 раза; при i = 7 условие 7 ≤ 5 ложно.
Проверкаi (до)i ≤ 5S = S + i·ii = i + 2
11Да0 + 1 = 13
23Да1 + 9 = 105
35Да10 + 25 = 357
47Нет
Таблица трассировки примера 1: в последней строке цикл заканчивается
Пример 2. Произведение и факториал

1) P = 1; для i от 1 до 5: P = P · i. Что будет на выходе?
2) В том же алгоритме по ошибке написали P = 0. Что теперь напечатается?

Показать решение
1) P: 1 → 1 → 2 → 6 → 24 → 120. Это 5! = 1·2·3·4·5 (5 факториал).
2) 0 · i всегда равно 0: P на всех шагах остаётся 0, вывод 0. Произведение начинают с 1, сумму — с 0.
r = n % 10, n = n // 10
где:
  • n % 10последняя цифра числа (остаток от деления на 10)
  • n // 10число без последней цифры (целочисленное деление)

Цикл по цифрам: пока n > 0, берём последнюю цифру и отбрасываем её

Пример 3. Сумма и количество цифр

n = 4072; s = 0; k = 0. Пока n > 0: s = s + n % 10; k = k + 1; n = n // 10. Выводятся s и k.

Показать решение
4072 > 0: s = 2, k = 1, n = 407
407 > 0: s = 9, k = 2, n = 40
40 > 0: s = 9 (цифра 0), k = 3, n = 4
4 > 0: s = 13, k = 4, n = 0
0 > 0 — Нет. Вывод: 13 4. Цифра 0 не меняет сумму, но учитывается в количестве.
Python
n = 4072
s = 0
k = 0
while n > 0:
    s = s + n % 10
    k = k + 1
    n = n // 10
print(s, k)

a = [12, 7, 25, 3, 18]
m = a[0]
for x in a:
    if x > m:
        m = x
print(m)
▸ Ожидаемый результат
13 4
25
Цикл while по цифрам и поиск максимума: кандидат m — первый элемент, затем с ним сравнивается каждый элемент. В экзаменационных программах n читают так: n = int(input()).

Задания ГЦЭ: число повторений и два цикла подряд

В заданиях ГЦЭ цикл часто повторяется десятки раз — выписывать каждый шаг долго и рискованно. Поэтому нужно найти закономерность: если переменная на каждом шаге меняется на одно и то же число, её значение после k шагов записывается формулой. Тогда условие остановки цикла превращается в неравенство.

a₀ + p·k ≥ b₀ − q·k ⇒ k = ⌈(b₀ − a₀) / (p + q)⌉a₀ + p·k ≥ b₀ − q·k ⇒ k = ⌈(b₀ − a₀) / (p + q)⌉
где:
  • a₀, b₀начальные значения переменных (a₀ < b₀)
  • p, qприрост a и уменьшение b на каждом шаге
  • kчисло повторений цикла «a < b»
  • ⌈ ⌉округление вверх: 10,875 → 11

Цикл останавливается, как только a ≥ b: разрыв сокращается на p + q за шаг

  1. 1
    Найдите переменные

    Какие переменные входят в условие цикла и на сколько они меняются за один шаг тела?

  2. 2
    Запишите после k шагов

    Например, a = a₀ + p·k, b = b₀ − q·k; если изменение непостоянно, выпишите первые 4–5 шагов в таблицу и ищите закономерность.

  3. 3
    Решите условие остановки

    Запишите отрицание условия цикла (например, a ≥ b) как неравенство и найдите наименьшее натуральное k, которое ему удовлетворяет.

  4. 4
    Проверьте границу

    Вычислите значения для k − 1 и k: после k − 1 шагов условие ещё должно быть истинным, после k — ложным.

Пример 4. Сколько повторений? (кодируемый ответ)

При a = 3 и b = 90 алгоритм: пока a < b: a = a + 5; b = b − 3. Найдите число выполненных повторений цикла.

Показать решение
После k шагов a = 3 + 5k, b = 90 − 3k.
Цикл останавливается, когда 3 + 5k ≥ 90 − 3k → 8k ≥ 87 → k ≥ 10,875 → наименьшее целое k = 11.
Проверка: k = 10: a = 53, b = 60, 53 < 60 — цикл продолжается; k = 11: a = 58, b = 57 — остановка ✓.
Началоa = −5b = 12a < 3a = a + 2b = b − 1ДаНетb > 4b = b − 3a = a + bДаaНетКонец
Значения на выходе первого цикла — входные значения второго
Пример 5. Два цикла подряд

По блок-схеме выше найдите значение a, выведенное после выполнения алгоритма.

Показать решение
Цикл I (a < 3): a: −5 → −3 → −1 → 1 → 3; b: 12 → 11 → 10 → 9 → 8. При a = 3 условие 3 < 3 ложно.
В цикл II входят a = 3, b = 8 (b > 4):
b = 8 − 3 = 5, a = 3 + 5 = 8
b = 5 − 3 = 2, a = 8 + 2 = 10
2 > 4 — Нет. Вывод: 10.
Внимание: во втором цикле сначала уменьшается b, а затем к a прибавляется новое значение b.
Пример 6. Начальное значение по конечному

Алгоритм: S = 0; b = 25; a = ?; пока a < b: a = a + 5; S = S + a; b = b − 2. Выводится S. Цикл остановился при a = 23, b = 19. Определите начальное значение a и найдите S.
A) 31 B) 54 C) 49 D) 77 E) 36

Показать решение
b уменьшается на 2 за шаг: от 25 до 19 — 3 шага.
a растёт на 5 за шаг: a₀ = 23 − 3·5 = 8.
Выполнение: 8 < 25 → a = 13, S = 13, b = 23; 13 < 23 → a = 18, S = 31, b = 21; 18 < 21 → a = 23, S = 54, b = 19; 23 < 19 — Нет.
S = 54, ответ B. («31» получают, пропустив один шаг.)

Обратные задачи: вход по выводу

Пример 7. Наибольшие входные значения

Вводятся a и b; n = 3.
Цикл I: пока a < 10·n: вывести «AB»; a = a + n.
Цикл II: пока b ≥ 20·n: вывести «BA»; b = b − n.
При выполнении «AB» вывели 5 раз, «BA» — 4 раза. Найдите сумму наибольших возможных натуральных значений a и b.

Показать решение
Цикл I выполнился 5 раз: при 5-й проверке условие ещё истинно, при 6-й — ложно.
a + 4·3 < 30 → a < 18; a + 5·3 ≥ 30 → a ≥ 15. Значит, a ∈ {15; 16; 17}, наибольшее — 17.
Цикл II выполнился 4 раза: b − 3·3 ≥ 60 → b ≥ 69; b − 4·3 < 60 → b < 72. Значит, b ∈ {69; 70; 71}, наибольшее — 71.
Сумма: 17 + 71 = 88.
Началоxx > 0x = x − 3Даx = 0Нет10ДаНетКонец
Алгоритм выполняют 7 раз — сколько раз будет выведено 1?
Пример 8. Сколько раз будет выведено «1»?

Блок-схему выполняют 7 раз; каждый раз для x по очереди вводят одно из чисел 14, 27, 33, 40, 51, 8, 60. Сколько всего раз будет выведено 1?

Показать решение
Цикл вычитает из x по 3, пока x ≤ 0 не станет истинным. Чтобы в конце получилось ровно 0, x должно делиться на 3, иначе x станет отрицательным (−1 или −2). Значит, алгоритм выводит 1, когда положительное x делится на 3.
Проверим по сумме цифр: 27, 33, 51, 60 делятся; 14, 40, 8 — нет.
Ответ: 4. Выписывать шаги для каждого числа не нужно — достаточно понять, что делает цикл.
Пример 9. Подсчёт на отрезке

k = 0; для n от −50 до 50 (шаг 1): если (n + 7)·(20 − n) > 0, то k = k + 1. Выводится k.
A) 27 B) 26 C) 13 D) 28 E) 25

Показать решение
Цикл выполняется 101 раз, но выписывать все шаги не нужно: алгоритм считает n, удовлетворяющие условию.
Произведение положительно, если оба множителя положительны: n > −7 и n < 20 (оба отрицательными быть не могут).
Целые числа: −6, −5, …, 19 → 19 − (−6) + 1 = 26, ответ B. («27» получают, посчитав один из концов: −7 или 20.)

Вложенные и бесконечные циклы

В теле цикла может находиться другой цикл — это вложенный цикл. На каждом шаге внешнего цикла внутренний выполняется полностью, от начала до конца. Если границы внутреннего цикла не зависят от внешней переменной, общее число повторений — произведение: 4 · 3 = 12. Если зависят (например, j от 1 до i), повторения складывают построчно.

Пример 10. Число повторений во вложенном цикле

1) s = 0; для i от 1 до 4: для j от 1 до 3: s = s + 1. s = ?
2) s = 0; для i от 1 до 4: для j от 1 до i: s = s + 1. s = ?

Показать решение
1) Внутренний цикл каждый раз делает 3 шага, внешний — 4 раза: s = 4 · 3 = 12.
2) i = 1: 1 шаг; i = 2: 2; i = 3: 3; i = 4: 4 → s = 1 + 2 + 3 + 4 = 10.

Вы научились читать циклы; следующий шаг — строить их самим. В письменной части экзамена требуется полная блок-схема, которая вводит n чисел и работает с циклом со счётчиком, — это тема урока «Построение блок-схем: письменные задания». Запись тех же циклов на Python изучается в разделе программирования.

Задание

Проверьте формулу из примера 4: при a = 3, b = 90 в цикле while a < b: увеличивайте a на 5, уменьшайте b на 3, считайте повторения счётчиком и выведите их число.

Задание · Python
a = 3
b = 90
k = 0
# loop here
print(k)
▸ Ожидаемый результат
11

Главное

  • Есть три вида циклов: со счётчиком, с предусловием и с постусловием; в последнем тело выполняется хотя бы раз.
  • В таблице трассировки строка — одна проверка условия; условие проверяется на один раз больше, чем число повторений.
  • Сумма начинается с 0, произведение — с 1, счётчик — с 0; цифры отделяют через n % 10 и n // 10.
  • Число повторений: запишите значения после k шагов и решите условие остановки как неравенство.
  • «Выполнился k раз» = при k-й проверке условие истинно, при (k + 1)-й — ложно; эти два неравенства дают промежуток для входа.
  • Во вложенном цикле внутренний цикл полностью выполняется на каждом шаге внешнего; при независимых границах повторения перемножаются.

Проверь себя

Вопросов: 12. Каждый правильный ответ приносит XP.

1 / 12
В каком цикле тело обязательно выполняется хотя бы один раз?