Перейти к содержимому
Учи.Онлайн Выбрать школу
Статья

Алгоритм с ветвлением: как составить блок-схему в 7 классе

Алгоритм с ветвлением выбирает действие по результату проверки условия. В блок-схеме условие записывают внутри ромба, из которого выходят две стрелки — «да» и «нет». После каждой ветви размещают нужное действие, а затем при необходимости соединяют пути в общей точке продолжения. Например, для числа n можно проверить «n делится на 2 без остатка?»: по ветви «да» вывести «чётное», по ветви «нет» — «нечётное». Перед сдачей схемы проверьте оба исхода условия на конкретных данных: алгоритм должен дать понятный результат и при истинном, и при ложном ответе.

Автор: редакция Учи.ОнлайнОтветственный редактор: Дмитрий Игнатьев
Содержание

Что такое ветвление и зачем оно нужно

В линейном алгоритме команды идут друг за другом всегда в одном порядке. «Прочитать число, умножить на два, вывести результат» — линейная последовательность. Но многие задачи требуют выбора. Если число отрицательное, нужно одно сообщение; если неотрицательное — другое. Такой выбор и называют ветвлением.

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

Условие должно быть достаточно точным для задачи. Фраза «число хорошее?» не помогает: неизвестно, как решить, что считать хорошим. «Число больше нуля?» — проверяемый вопрос. Если n = 0, ответ «нет» однозначен. Если задача предполагает отдельный исход для нуля, двух ветвей может не хватить: придётся добавить ещё одну проверку.

Блок-схема показывает ход решения независимо от языка программирования. Её можно затем записать в виде псевдокода или программы с если ... то ... иначе. Но сначала должно быть ясно, какие данные входят, что проверяется, какие действия выполняются и где алгоритм заканчивается.

Основные элементы блок-схемы

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

Таблица помогает не путать действие и проверку. Не все операции должны быть ромбами: вычисление «s = a + b» не спрашивает «да или нет» и поэтому записывается в прямоугольнике.

Элемент Что внутри Пример
Начало и конец Название границы алгоритма «Начало», «Конец»
Ввод или вывод Получить либо показать данные «Ввести n», «Вывести ответ»
Действие Выполнить вычисление или присваивание «s = a + b»
Условие Проверить высказывание «n > 0?»
Стрелка Передать управление дальше Ветвь «да» или «нет» из условия

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

Если в схеме два последовательных условия, у каждого ромба должны быть свои исходы. Один ромб может стоять внутри ветви другого: это вложенное ветвление. Но для первой самостоятельной работы лучше начать с одного условия, чтобы проверить логику на двух конкретных примерах.

Пример 1. Чётное или нечётное число

Задача: дано целое число n; нужно вывести, чётное оно или нечётное. Проверяемое условие — делится ли n на 2 без остатка. Нулевой остаток означает чётность. Это работает и для нуля, и для отрицательных целых чисел: 0 и −4 чётные.

Перед рисованием запишем алгоритм словами. Сначала ввести целое n. Затем проверить остаток от деления n на 2. Если остаток равен нулю, вывести «чётное», иначе вывести «нечётное». После вывода обе ветви ведут к концу. Эта последовательность превращается в схему без догадок.

Текстовое представление можно использовать как черновик перед рисунком:

Начало → Ввести n → [Остаток от деления n на 2 равен 0?]
                         да → Вывести «чётное»   → Конец
                         нет → Вывести «нечётное» → Конец

В полноценной блок-схеме квадратные скобки замените ромбом, ввод и вывод — фигурами для данных, а начало и конец — овалами. Стрелки на черновике показывают смысл, но не заменяют подписи исходов. Если учитель просит именно графическую схему, нарисуйте фигуры на листе или в редакторе.

Проверка на двух данных обязательна. При n = 8 остаток 0, выполняется ветвь «да», выводится «чётное». При n = 7 остаток 1, выполняется ветвь «нет», выводится «нечётное». Дополнительно попробуйте n = 0: нуль делится на два без остатка, значит схема выводит «чётное». Этот третий пример помогает поймать распространённую ошибку.

Пример 2. Сравнение числа с нулём

Задача может звучать так: «Определите, положительно ли введённое число». Здесь достаточно проверки x > 0?. Ветвь «да» выводит «положительное», ветвь «нет» — «не положительное». Для x = −3 и x = 0 ответ одинаково «не положительное», и это соответствует вопросу. Схема не утверждает, что нуль отрицателен.

Если же в задании требуется вывести одно из трёх сообщений — «положительное», «отрицательное» или «нуль», одного ромба с двумя ветвями недостаточно. После проверки x > 0? на ветви «нет» поставьте второй ромб x < 0?. По его ветви «да» выведите «отрицательное», по ветви «нет» — «нуль». Такой алгоритм последовательно разделяет все возможные случаи.

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

x x > 0? Если первый ответ «нет»: x < 0? Вывод
5 Да Не проверяется «Положительное»
−2 Нет Да «Отрицательное»
0 Нет Нет «Нуль»

Не рисуйте вторую проверку после ветви «да», если положительный случай уже определён. Лишнее условие усложнит схему и создаст риск, что одно значение попадёт в два исхода. Хорошая схема проверяет ровно то, что требуется для выбора.

Пример 3. Цена со скидкой

Ветвление встречается и в задачах с вычислением. Пусть дано целое число товаров q и цена одного товара c. Если q не меньше 5, применяется скидка 10% от общей стоимости; иначе скидки нет. Сначала вычисляется сумма s = q · c. Затем условие q ≥ 5? выбирает, чему будет равна итоговая сумма.

На ветви «да» действие: итог = 0,9 · s. На ветви «нет»: итог = s. После этого ветви объединяются и выполняется общий вывод итога. Важно проверять количество товаров, а не исходную сумму, потому что скидка по условию зависит от q. Запись q > 5? тоже была бы ошибкой: при q = 5 скидка уже действует.

Проверим границу. При q = 4 и c = 100 итог 400 без скидки. При q = 5 и c = 100 исходная сумма 500, скидка 10% составляет 50, итог 450. При q = 6 и c = 100 итог 540. Эти три значения показывают, что схема ведёт себя правильно по обе стороны порога и на самом пороге.

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

Полное и неполное ветвление

При полном ветвлении действия есть у обоих исходов условия. Например, если n > 0, вывести «плюс», иначе вывести «не плюс». Оба пути содержат команду. При неполном ветвлении действие выполняют только при одном исходе, а другой сразу ведёт дальше. Например, «если ответ неверен, показать подсказку; затем продолжить упражнение». При верном ответе подсказка не нужна.

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

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

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

Как построить блок-схему по условию задачи

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

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

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

Оставьте место для подписи «да» и «нет» рядом с выходящими из ромба стрелками. Если стрелки пересекаются или ведут назад, перерисуйте схему так, чтобы путь был однозначен. В школьных задачах предпочтительна читаемость, а не сложная композиция фигур.

Задания для самостоятельной практики

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

Задание 1. Введено целое n. Если n делится на 3 без остатка, вывести «делится», иначе — «не делится». Проверьте n = 9, n = 10 и n = 0.

Задание 2. Введено число a. Если a больше 100, уменьшить его на 100; иначе оставить без изменений. После ветвления вывести итог. Проверьте a = 99, 100 и 101.

Задание 3. Введён балл b от 0 до 100. Если b не меньше 60, вывести «зачёт», иначе «незачёт». Какой исход будет при b = 60? Почему проверка b > 60? не подходит?

Задание 4. Для числа x нужно вывести «положительное», «отрицательное» или «нуль». Сколько проверок потребуется в описанном выше варианте схемы? Проверьте x = −1, 0 и 1.

Задание 5. Если дождь идёт, взять зонт; затем в любом случае выйти из дома. Нарисуйте неполное ветвление и покажите, куда идёт ветвь «нет».

Задание 6. Ученику дали схему: условие n ≥ 0?, ветвь «да» выводит «положительное», «нет» выводит «отрицательное». Найдите ошибку и предложите исправление для трёх случаев.

Рисунок каждой схемы может отличаться расположением ветвей. Логику проверяют по входам и выходам: для одного и того же входного значения схема должна давать предусмотренный заданием ответ.

Ответы и разбор граничных случаев

Если ваш рисунок дал другой результат, найдите первую развилку, где выбран неверный исход. Чаще всего причина — спутаны знаки > и ≥ или забыто значение ноль.

  1. Условие: «остаток от деления n на 3 равен 0?». Для 9 и 0 ответ «да», для 10 — «нет». Ноль делится на 3 без остатка в смысле этой проверки.
  2. Условие a > 100?. Для 99 вывод 99, для 100 тоже 100, для 101 вывод 1. Оба пути сходятся перед общей командой вывода.
  3. Условие b ≥ 60?. При b = 60 вывод «зачёт». Проверка b > 60? дала бы ошибочное «незачёт» на границе.
  4. В одном простом варианте нужны два ромба: сначала x > 0?, затем на ветви «нет» — x < 0?. Вторая ветвь «нет» означает x = 0. Выводы для −1, 0 и 1 соответственно «отрицательное», «нуль», «положительное».
  5. Условие «идёт дождь?». По «да» команда «взять зонт», по «нет» стрелка сразу ведёт к общей команде «выйти из дома». Команда выхода выполняется в обоих случаях.
  6. Нуль ошибочно назван положительным. Нужно либо заменить вывод ветви «да» на «неотрицательное», если задача допускает два класса, либо добавить отдельную проверку для нуля и три вывода.

Для задания 2 обратите внимание на фразу «если больше 100». Ровно 100 не уменьшается. Такой пример показывает, почему граничное значение надо проверять отдельно от обычного значения «чуть меньше» или «чуть больше».

Частые ошибки при рисовании схем

Первая ошибка — ромб содержит действие, а не условие. Запись «вычислить сумму» не имеет ответа «да/нет». Поместите вычисление в прямоугольник; в ромбе оставьте проверку, например «сумма больше 50?».

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

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

Четвёртая ошибка — граничное значение пропущено или классифицировано неверно. Условия x > 0 и x ≥ 0 различаются ровно при x = 0. То же верно для 5 и «не меньше 5», 60 и «от 60 включительно». Проверяйте именно такое значение.

Пятая ошибка — схема не заканчивается. После ветви «нет» стрелка может обрываться, а после ветви «да» доходить до овала «Конец». Исполните схему на обоих исходах; каждый путь должен прийти к выводу и завершению, если по задаче не предусмотрен цикл.

Проверочный список перед сдачей

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

  • У ромба сформулирован проверяемый вопрос, а не расплывчатое описание действия.
  • Из каждого ромба выходят подписанные ветви «да» и «нет».
  • В каждой ветви выполняются только её команды; общие команды стоят после объединения путей.
  • Граничные значения проверены отдельно: 0, равенство порогу, делимость без остатка.
  • Ввод, вывод, вычисления, начало и конец показаны понятными фигурами.
  • При ручном прохождении оба исхода приводят к правильному завершению.

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