Ветвление в блок-схеме: ромб и две дороги

Блок-схема с ромбом: две ветки «да» и «нет» сходятся в одну точку

В тетради задача записана так: «решить систему y = x², если x > 0; y = x − 4, если x ≤ 0». Слово «система» пугает, а на деле это развилка на дороге: посмотрел на знак, свернул налево или направо. В блок-схеме развилку рисуют ромбом.

Чему научишься. После урока сможешь: нарисовать блок-схему с ромбом по условию вида «если…, то…, иначе…»; отличить полное ветвление от неполного; правильно обработать границу условия (x = 0); записать в ромб составное условие через ∧ и ∨; найти ошибку в чужой схеме трассировкой.

Вспомни. Полное и неполное ветвление, простое и составное условие разобраны в уроке «Ветвление. Разветвляющиеся алгоритмы». Операции ∧ и ∨ для составных условий: глава 1 этого курса.

Ромб «решение»

По ГОСТ ромб называется «решение». Внутри записано условие, то есть вопрос с ответом да или нет: x > 0? Из ромба выходят две стрелки, и это единственная фигура с двумя выходами. У каждой стрелки подпись: «да» и «нет» (в тетради «+» и «−»). Обе дороги потом сходятся в одну точку, и схема идёт дальше. Точка слияния — просто место, где линии встречаются, отдельной фигуры для неё нет. В тексте ромб показан рамкой ‹ › с вопросом внутри, например ‹ x > 0 ? ›.

ПОЛНОЕ ВЕТВЛЕНИЕ                 НЕПОЛНОЕ ВЕТВЛЕНИЕ

        ‹ условие? ›                    ‹ условие? ›
     да ╱         ╲ нет               да ╱         ╲ нет
  [действие 1] [действие 2]        [действие]      │
        ╲         ╱                      ╲         │
          ●───────                         ●───────
          │                                │

  Полное: есть что делать и на «да», и на «нет».
  Неполное: на «нет» ничего не делаем, просто идём дальше.

Разбор: система из тетради

Условие «y = x² при x > 0, иначе y = x − 4» задаёт полное ветвление. Ввод x, ромб с вопросом x > 0, две ветки с присваиванием, слияние, вывод y.

y = x²  при x > 0;   y = x − 4  при x ≤ 0

           ( Начало )
               │
           /  ввод x  /
               │
           ‹ x > 0 ? ›
        да ╱         ╲ нет
   [ y := x · x ]   [ y := x − 4 ]
            ╲         ╱
              ●───────
               │
           /  вывод y /
               │
           ( Конец  )

Теперь трассировка при трёх входах. x = 5: условие 5 > 0 верно, ветка «да», y = 25. x = −1: условие −1 > 0 неверно, ветка «нет», y = −1 − 4 = −5. И самый важный запуск, x = 0: 0 > 0 неверно (ноль не больше нуля), ветка «нет», y = 0 − 4 = −4.

ТРАССИРОВКА ПРИ ТРЁХ ВХОДАХ

   x  │ x > 0 ? │ ветка │ y
  ────┼─────────┼───────┼─────
   5  │   да    │ левая │ 25
  −1  │   нет   │ правая│ −5
   0  │   нет   │ правая│ −4   ← граница: 0 > 0 — НЕТ

  На экзамене чаще всего валятся именно на границе.

Почему в ромбе стоит x > 0, а не x ≤ 0? Можно и так, тогда ветки поменяются местами: на «да» y := x − 4, на «нет» y := x · x. Схема останется верной. Важно только одно: условие в ромбе и содержимое веток должны соответствовать друг другу.

Составное условие в ромбе

Иногда одного сравнения мало: «число от 1 до 10» означает x ≥ 1 и одновременно x ≤ 10. В ромб пишут составное условие через операции первой главы: (x ≥ 1) ∧ (x ≤ 10). Считается так же, как логическое выражение: каждое сравнение даёт 1 или 0, потом ∧ или ∨. При x = 7 оба сравнения истинны, 1 ∧ 1 = 1, ветка «да». При x = 12 второе ложно, 1 ∧ 0 = 0, ветка «нет».

СОСТАВНОЕ УСЛОВИЕ  (x ≥ 1) ∧ (x ≤ 10)

   x  │ x ≥ 1 │ x ≤ 10 │  ∧  │ ветка
  ────┼───────┼────────┼─────┼──────
   7  │   1   │   1    │  1  │  да
  12  │   1   │   0    │  0  │  нет
   0  │   0   │   1    │  0  │  нет

  ∧ — оба сравнения верны;  ∨ — хотя бы одно.

Разбор 2: кто старше и на сколько

Вторая задача из тетради: даны годы рождения двух людей a и b, определить, кто старше и на сколько. Ловушка в самом условии: старше тот, у кого год рождения МЕНЬШЕ, поэтому в ромбе стоит a b. Ветвление работает дважды: сначала сравниваем, потом считаем разницу. И есть случай, о котором забывают: одногодки. Значит, внутри ветки «нет» нужен второй ромб.

Блок-схема «кто старше и на сколько» по годам рождения: ромб a < b, внутри ветки «нет» второй ромб a = b, три дороги сходятся перед концом

Читаем схему при a = 2008, b = 2006. Первый ромб: 2008 < 2006? Нет. Второй ромб: 2008 = 2006? Нет. Значит, третья дорога: d := a − b = 2, вывод «второй», 2. Второй родился раньше, он старше на два года.

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

Аовал
Бпараллелограмм
Вромб
Гпрямоугольник

Подсказка: По ГОСТ эта фигура называется «решение».

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

Контрольный вопрос. Схема из тетради: если x > 0, то y := x · x, иначе y := x − 4. Что выведет схема при x = 4? Впиши число.

Подсказка: Проверь условие для четвёрки и иди по нужной ветке.

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

Контрольный вопрос. Та же схема (x > 0: y := x · x, иначе y := x − 4). Что выведет схема при x = −3?

А9
Б−7
В7
Г−3

Подсказка: Отрицательное число больше нуля? Значит, ветка «нет».

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

Контрольный вопрос. Та же схема (x > 0: y := x · x, иначе y := x − 4). Что выведет схема при x = 0?

А0
Б4
В−4
Гсхема не сработает — ноль не подходит ни под одну ветку

Подсказка: Верно ли, что ноль больше нуля? От ответа зависит ветка.

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

Контрольный вопрос. Ветвление, у которого на «нет» нет никакого действия и стрелка сразу идёт к точке слияния, называется…

Аполное
Бнеполное
Ввложенное

Подсказка: Одна из двух дорог пустая.

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

Контрольный вопрос. Сколько стрелок выходит из ромба «решение»? Впиши число.

Подсказка: По одной на каждый возможный ответ на вопрос в ромбе.

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

Контрольный вопрос. В ромбе стоит составное условие (x > 0) ∧ (x < 5). Введено x = 7. Чему равно условие? Впиши 1 (ветка «да») или 0 (ветка «нет»).

Подсказка: Посчитай каждое сравнение отдельно, потом примени ∧: оно требует, чтобы верны были оба.

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

Задание. Одногруппник рисовал схему системы «y = x² при x > 0, иначе y = x − 4», но перепутал ветки местами. Протрассируй ЕГО схему при x = 5 и впиши число, которое она выведет.

           /  ввод x  /
               │
           ‹ x > 0 ? ›
        да ╱         ╲ нет
   [ y := x − 4 ]   [ y := x · x ]
            ╲         ╱
              ●───────
               │
           /  вывод y /

Подсказка: Иди строго по нарисованному, а не по правильной задаче: при x = 5 условие верно, что стоит в ветке «да» у него?

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

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

Контрольный вопрос. Схема «кто старше» по годам рождения: ромб a < b?, на «да» — d := b − a и вывод «первый», на «нет» — второй ромб a = b?, на его «да» — вывод «одногодки», на «нет» — d := a − b и вывод «второй». Введено a = 2005, b = 2009. Что выведет схема?

А«одногодки»
Б«второй», 4
В«первый», 4
Г«первый», −4

Подсказка: Сначала первый ромб: 2005 < 2009? Старше тот, кто родился раньше. Потом d по формуле этой ветки.

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

Задание. Нарисуй на бумаге блок-схему вычисления модуля числа: ввод x, ромб, две ветки, вывод y. Протрассируй её при x = −8 и впиши число, которое схема выведет.
Принято, если: (1) число совпало; (2) в ромбе записано условие сравнения с нулём (рамка ромба на бумаге — настоящий ромб), из ромба выходят две подписанные стрелки, ветки сходятся в одну точку до вывода; (3) рядом таблица трассировки для трёх входов: −8, 0 и 8.

Модуль числа |x|: если x < 0, то y := −x, иначе y := x.

Подсказка: Отрицательное число делают положительным, поменяв знак. Проверь на границе: что должно получиться при x = 0 и не сломается ли схема.

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

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

Итог. Ромб «решение» задаёт вопрос и даёт две дороги (в задаче про годы рождения старше тот, чей год меньше): «да» и «нет», которые потом сходятся. Полное ветвление: действия на обеих дорогах, неполное: только на одной. Границу условия (x = 0 при x > 0) проверяй отдельно. Составное условие в ромбе считается как логическое выражение через ∧ и ∨. Схему проверяют трассировкой на 2–3 входах, включая граничный.

Что дальше

Ветвление выбирает дорогу один раз. А если действие нужно повторить сто раз, скажем, сложить числа от 1 до 100? Для этого стрелка в схеме поворачивает назад. Циклы разберём в следующем уроке.

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

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