На Горох
Информатика

§ 3. Ветвление

"Информатика", Горячев А.В., Суворова Н.И.

Объяснение темы В оглавлении: § 3. Ветвление

Кратко о теме

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

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

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

Условие — вопрос, на который можно ответить только «да» или «нет»; от ответа зависит выполнение алгоритма. Такое определение помогает заранее понять, какой из возможных путей выбрать и как проверить, правильно ли сформулирована проверка.

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

Полное ветвление — ветвление, в котором для каждого ответа на условие предусмотрено своё действие. Оно нужно, когда алгоритм обязан определить дальнейший шаг и при ответе «да», и при ответе «нет».

Как это устроено

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

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

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

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

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

Сравнение видов ветвления

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

СвойствоНеполное ветвлениеПолное ветвление
Какие ответы условия учитываютсяОба ответа проверяются, действие предусмотрено для одногоОба ответа, для каждого предусмотрено действие
Что выполняется при ответе «да»Указанное действие, если оно связано с ответом «да»Действие, заданное для ответа «да»
Что выполняется при ответе «нет»Действие пропускается, алгоритм идёт дальшеДействие, заданное для ответа «нет»
Как выглядят пути алгоритма на блок-схемеОдна стрелка проходит через действие, другая его обходитКаждая стрелка ведёт к своей последовательности команд

Разбор задач

Сообщение о положительном числе

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

  1. Обозначим введённое значение как число и сформулируем условие: «число больше нуля?».
  2. Если ответ «да», выполним команду вывода сообщения «Положительное».
  3. Если ответ «нет», пропустим вывод и продолжим алгоритм.

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

Определение чётности

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

  1. Сформулируем условие: «число делится на 2 без остатка?».
  2. При ответе «да» выведем сообщение «Чётное».
  3. При ответе «нет» выведем сообщение «Нечётное».

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

Расчёт стоимости доставки

Нужно выбрать стоимость доставки: если заказ достиг заданной суммы, доставка бесплатная, иначе её стоимость прибавляется к заказу. Пусть сумма заказа равна S, порог бесплатной доставки — P, а цена доставки — D. Чтобы затем получить итоговую сумму в обоих случаях, сперва определим, начислять ли D.

  1. Проверим условие «S не меньше P?» — так учитывается заказ ровно на пороговую сумму.
  2. Если ответ «да», установим стоимость доставки равной нулю и оставим итоговую сумму равной S.
  3. Если ответ «нет», прибавим стоимость доставки: итоговая сумма равна S + D.
  4. После ветвления выведем итоговую сумму, используя значение, рассчитанное на выбранном пути.

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

Типичные ошибки

Условие бывает сформулировано неоднозначно и не сводится к ответам «да» или «нет». Так происходит, когда в вопросе оставляют слова вроде «достаточно» и не задают точный критерий. Проверь себя: попробуй подставить разные значения и дать на каждый вопрос один из двух ответов, не прибегая к догадкам.

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

Можно перепутать действия для ответов «да» и «нет», особенно если условие сформулировано отрицательно. Причина часто в том, что проверяют не сами ответы, а ожидаемый результат задачи. Для проверки подставь один пример, при котором условие истинно, и один, при котором оно ложно, затем проследи, какое сообщение или действие выполняется.

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

Связь с другими темами

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

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

Что запомнить

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

Частые вопросы по теме

Зачем в алгоритме нужно ветвление?

Ветвление позволяет алгоритму выбирать действия в зависимости от ситуации. Благодаря ему программа может по-разному обработать разные входные данные.

Каким должно быть условие для ветвления?

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

Чем неполное ветвление отличается от полного?

В неполном ветвлении действие задано только для одного ответа на условие. В полном ветвлении предусмотрено отдельное действие для каждого ответа.

Что происходит, если условие ложно?

В неполном ветвлении алгоритм пропускает указанное действие и продолжает работу. В полном ветвлении он выполняет действие, предназначенное для ответа «нет».

Как обозначают ветвление на блок-схеме?

Условие изображают ромбом. Из него выходят стрелки, подписанные ответами «да» и «нет», которые показывают возможные пути выполнения.

Спросить по теме параграфа

§ 3. Ветвление

Эта же тема в других учебниках

Учебник

Оглавление →
Предмет
Информатика
Учебник
"Информатика", Горячев А.В., Суворова Н.И.