Циклы в блок-схеме: пока, до, со счётчиком

Блок-схема цикла: стрелка возвращается от тела цикла к проверке условия

Сложить числа от 1 до 100. Линейной схемой это сто прямоугольников. В ветвлении дорога раздваивается, а здесь она должна повернуть назад: сделал шаг, вернулся, проверил, сделал ещё. Такая петля в схеме и есть цикл. Их три вида, и на экзамене спрашивают все три.

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

Вспомни. Что такое тело цикла и зацикливание, разобрано в уроке «Повторение. Циклические алгоритмы». Присваивание x := x + 1 и таблица трассировки: урок 2.1 этой главы, там же картинка с фигурами ГОСТ, включая шестиугольник «подготовка».

Три вида цикла

1. ЦИКЛ С ПРЕДУСЛОВИЕМ («пока»)

   ┌──▶‹ условие? ›──нет──▶ дальше по схеме
   │        │ да
   │   [  тело  ]
   └────────┘

  Проверка ДО тела: тело может не выполниться ни разу.
2. ЦИКЛ С ПОСТУСЛОВИЕМ («до»)

   ┌──▶[  тело  ]
   │        │
   │   ‹ условие? ›
   └──нет───┘
            │ да
            ▼ дальше по схеме

  Проверка ПОСЛЕ тела: тело выполняется хотя бы один раз.
3. ЦИКЛ СО СЧЁТЧИКОМ («для»)

   ┌──▶⟨ i := 1, N ⟩──закончился──▶ дальше по схеме
   │        │
   │   [  тело  ]
   └────────┘

  Число повторов известно заранее; i сам растёт на 1 от 1 до N.
  ⟨ ⟩ — рамка шестиугольника «подготовка» (см. картинку фигур
  в уроке 2.1): прямоугольник со срезанными боками.
Пять фигур блок-схемы по ГОСТ 19.701-90, среди них шестиугольник «подготовка» для цикла со счётчиком

Как выбрать вид? Спроси себя: известно ли заранее, сколько раз повторять? Известно (N раз, 10 раз): счётчик. Не известно, но проверить надо до первого шага («пока есть деньги на счёте, снимай»): предусловие. Не известно, и первый шаг нужен в любом случае («вводи пароль, пока не подойдёт»): постусловие.

Накопитель: сумма от 1 до N с предусловием

Чтобы что-то накопить, нужен ящик-накопитель, в который кладут ноль до цикла, а внутри цикла к нему прибавляют. Это как копилка: сначала пустая, потом каждый день по монете. Для суммы 1 + 2 + … + N накопитель S, счётчик i идёт от 1 до N.

СУММА 1 + 2 + … + N  (цикл с предусловием)

         ( Начало )
             │
         /  ввод N  /
             │
        [ S := 0 ]          ← копилка пустая
        [ i := 1 ]          ← счётчик на старте
             │
   ┌────▶‹ i ≤ N ? ›──нет──▶/ вывод S /──▶( Конец )
   │          │ да
   │    [ S := S + i ]      ← кладём монету
   │    [ i := i + 1 ]      ← следующий номер
   └──────────┘
ТРАССИРОВКА ПРИ N = 4

   проверка i ≤ 4 │ i │ S := S + i │ i := i + 1
  ────────────────┼───┼────────────┼───────────
   до цикла       │ 1 │   S = 0    │
   1 ≤ 4  да      │ 1 │   0+1 = 1  │   i = 2
   2 ≤ 4  да      │ 2 │   1+2 = 3  │   i = 3
   3 ≤ 4  да      │ 3 │   3+3 = 6  │   i = 4
   4 ≤ 4  да      │ 4 │   6+4 = 10 │   i = 5
   5 ≤ 4  НЕТ     │ 5 │  выход, на экране 10

  Тело выполнилось 4 раза. Условие проверялось 5 раз.
  После цикла i = 5, не 4 — частый вопрос на контрольной.

Постусловие: сначала сделай, потом спроси

Ввод пароля: спрашивать пароль нужно в любом случае хотя бы раз, а проверять после ввода. Значит, тело стоит до ромба. У цикла с постусловием стрелка «нет» возвращает наверх, а «да» выпускает наружу (в Паскале это repeat … until, «повторяй, пока условие не станет верным» — увидим в главе 5).

ВВОД ПАРОЛЯ ДО ПРАВИЛЬНОГО (цикл с постусловием)

         ( Начало )
             │
   ┌──▶/ ввод p /
   │         │
   │  ‹ p = «1234» ? ›
   └──нет────┘  │ да
                ▼
         / вывод «вход» /
                │
            ( Конец )

  Даже если пароль верный с первого раза, ввод выполнился один раз —
  ноль раз здесь невозможен.

Счётчик: когда число повторов известно

Ту же сумму от 1 до N со счётчиком рисуют короче: шестиугольник сам заводит i := 1, сам увеличивает и сам останавливает на N. Прямоугольники i := 1 и i := i + 1 исчезают: за них отвечает фигура.

СУММА 1 + 2 + … + N  (цикл со счётчиком)

         /  ввод N  /
             │
        [ S := 0 ]
             │
   ┌──▶⟨ i := 1, N ⟩──закончился──▶/ вывод S /
   │         │
   │   [ S := S + i ]
   └─────────┘

  Та же копилка, но счётчик спрятан в шестиугольник.

Как не зациклиться

Цикл с условием заканчивается, только если условие когда-нибудь станет ложным. Значит, внутри тела обязана меняться переменная из условия. Забыли i := i + 1, и i навсегда 1, 1 ≤ N всегда верно, схема крутится вечно. Это зацикливание, и на экзамене его просят найти в готовой схеме. Проверка проста: найди переменную в ромбе и спроси, где в теле она меняется.

Контрольный вопрос. Какой вид цикла гарантирует, что тело выполнится хотя бы один раз?

Ас предусловием
Бс постусловием
Влюбой из трёх

Подсказка: У этого цикла тело стоит в схеме ДО ромба с условием.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Схема суммы: S := 0, i := 1, пока i ≤ N: S := S + i, i := i + 1, затем вывод S. Что выведет схема при N = 6? Впиши число.

Подсказка: Сложи все номера, которые побывают в i, пока условие верно.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Схема суммы: S := 0, i := 1, пока i ≤ N: S := S + i, i := i + 1. Сколько раз выполнится тело цикла при N = 5? Впиши число.

Подсказка: Тело выполняется, пока i не превысит N; i начинается с единицы.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Цикл с предусловием проверяет условие…

Апосле каждого выполнения тела
Бперед каждым выполнением тела
Водин раз в самом конце

Подсказка: «Пред» значит «до».

Онлайн-проверка ответа появится позже

Контрольный вопрос. Схема суммы: S := 0, i := 1, пока i ≤ N: S := S + i, i := i + 1. Чему равен счётчик i сразу после выхода из цикла при N = 6? Впиши число.

Подсказка: Цикл выходит, когда условие впервые становится ложным: какое первое i не проходит проверку i ≤ N?

Онлайн-проверка ответа появится позже

Контрольный вопрос. Цикл записан как «для i от 1 до 10 выполнять тело». Какой это вид цикла?

Ас предусловием
Бс постусловием
Всо счётчиком

Подсказка: Число повторов известно заранее, и переменная i растёт сама.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Схема со счётчиком: S := 0; для i от 1 до 3: S := S + i · i; затем вывод S. Что выведет схема? Впиши число.

Подсказка: Шестиугольник сам перебирает i = 1, 2, 3. В накопитель каждый раз кладётся квадрат текущего i.

Онлайн-проверка ответа появится позже

Задание. Эта схема суммы зацикливается при любом N ≥ 1. Какая переменная должна меняться в теле цикла, чтобы условие однажды стало ложным? Впиши имя переменной.

         /  ввод N  /
             │
        [ S := 0 ]
        [ i := 1 ]
             │
   ┌────▶‹ i ≤ N ? ›──нет──▶/ вывод S /
   │          │ да
   │    [ S := S + i ]
   └──────────┘

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

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Цикл с постусловием: i := 10; повторять i := i − 3 до тех пор, пока не станет верно i < 0. Сколько раз выполнится тело? Впиши число.

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

Онлайн-проверка ответа появится позже

Задание. Нарисуй на бумаге блок-схему вычисления произведения чисел от 1 до N любым видом цикла: ввод N, накопитель, цикл, вывод P. Протрассируй её при N = 5 и впиши число, которое схема выведет.
Принято, если: (1) число совпало; (2) накопитель до цикла получает правильное стартовое значение (не ноль!); (3) в цикле есть и накопление, и изменение счётчика (или шестиугольник счётчика); (4) рядом таблица трассировки по шагам.

Произведение чисел от 1 до N (факториал): P = 1 · 2 · 3 · … · N

Подсказка: Копилка для произведения не может начинаться с нуля: ноль, умноженный на что угодно, остаётся нулём. С какого числа тогда начать?

✅ Готово, если: ответ раскрывает то, что просит критерий приёмки в задании выше.

Онлайн-проверка ответа появится позже

Итог. Три вида цикла: с предусловием (проверка до тела, может не выполниться ни разу), с постусловием (тело хотя бы раз, проверка после), со счётчиком (число повторов известно, шестиугольник ведёт i сам). Накопитель обнуляется до цикла (для произведения единица), в теле к нему прибавляют. Переменная из условия обязана меняться в теле, иначе зацикливание. Цикл проверяют таблицей трассировки.

Что дальше

Логика и три структуры в блок-схемах, то есть всё, что прошли в группе, теперь разобрано. Дальше эти же схемы превращаются в программы на Паскале: сначала линейные, потом if, потом циклы for, while и repeat. Глава 3.

← Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева