"Информатика", Горячев А.В., Суворова Н.И.
Ветвление — часть алгоритма, которая позволяет выбирать дальнейшие действия в зависимости от ситуации. Для этого проверяют условие — вопрос с ответом «да» или «нет». Если действие нужно только при одном ответе, используют неполное ветвление; если для каждого ответа предусмотрено своё действие — полное. Ветвления помогают алгоритму реагировать на разные входные данные. На блок-схеме проверку условия показывают ромбом, а стрелки от него обозначают возможные пути выполнения.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Ветвление — команда или часть алгоритма, в которой дальнейшие действия выбираются в зависимости от условия. Оно нужно, чтобы один алгоритм мог решать, что делать в разных ситуациях, а не выполнять всегда одну и ту же последовательность команд.
Условие — вопрос, на который можно ответить только «да» или «нет»; от ответа зависит выполнение алгоритма. Такое определение помогает заранее понять, какой из возможных путей выбрать и как проверить, правильно ли сформулирована проверка.
Неполное ветвление — ветвление, в котором действие выполняется только при одном из двух ответов на условие. Оно нужно, если при втором ответе отдельную команду выполнять не требуется: алгоритм просто продолжает работу.
Полное ветвление — ветвление, в котором для каждого ответа на условие предусмотрено своё действие. Оно нужно, когда алгоритм обязан определить дальнейший шаг и при ответе «да», и при ответе «нет».
Ветвление используют, когда одинаковые команды не подходят для всех ситуаций. Алгоритм сначала проверяет условие, а затем выбирает подходящее продолжение. Например, программа может вывести одно сообщение для положительного числа и другое для числа, которое не является положительным. Без ветвления ей пришлось бы выполнять один и тот же набор действий независимо от введённого значения.
Условие формулируют так, чтобы его можно было проверить однозначно. Это необходимо потому, что алгоритм не умеет выбирать путь по расплывчатому описанию вроде «число достаточно большое»: нужно знать, с каким значением его сравнивать. Вопрос «число больше нуля?» имеет два понятных ответа. По ним исполнитель может выбрать следующую команду без догадок.
В неполном ветвлении действие привязано только к одному ответу. Если ответ подходит, выполняется указанная команда; если нет — эта команда пропускается. Такой вариант удобен, когда действие требуется лишь в особом случае, а для остальных случаев достаточно продолжить обычное выполнение алгоритма. Поэтому отсутствие отдельного действия для второго ответа не является ошибкой, если по условию задачи оно не нужно.
В полном ветвлении алгоритм предусматривает продолжение для обоих ответов. При одном ответе выполняется одна последовательность команд, при другом — другая, и после этого работа может продолжиться общими командами. Это нужно, например, когда требуется сообщить один из двух взаимоисключающих результатов. Если не описать один из путей, для части возможных данных алгоритм не даст нужного результата.
На блок-схеме место проверки показывают ромбом, поскольку именно там алгоритм выбирает дальнейший путь. Из ромба выходят стрелки, которые подписывают ответами «да» и «нет»: так видно, при каком результате выполняется каждая команда. В неполном ветвлении один путь содержит действие, а другой его обходит; в полном оба пути содержат свои действия. После завершения ветвей стрелки обычно соединяют, чтобы показать общее продолжение алгоритма.
Сравнивай виды ветвления по тому, какое действие выполняется при каждом ответе условия. Если для одного ответа отдельной команды нет, это неполное ветвление; если действие задано в обоих случаях — полное. При чтении блок-схемы проследи обе стрелки от ромба и проверь, куда они ведут.
| Свойство | Неполное ветвление | Полное ветвление |
|---|---|---|
| Какие ответы условия учитываются | Оба ответа проверяются, действие предусмотрено для одного | Оба ответа, для каждого предусмотрено действие |
| Что выполняется при ответе «да» | Указанное действие, если оно связано с ответом «да» | Действие, заданное для ответа «да» |
| Что выполняется при ответе «нет» | Действие пропускается, алгоритм идёт дальше | Действие, заданное для ответа «нет» |
| Как выглядят пути алгоритма на блок-схеме | Одна стрелка проходит через действие, другая его обходит | Каждая стрелка ведёт к своей последовательности команд |
Нужно составить алгоритм: если число больше нуля, вывести сообщение «Положительное». Отрицательное число и ноль не требуют отдельного сообщения, поэтому достаточно неполного ветвления. Проверку следует выполнить до команды вывода, чтобы сообщение появлялось только при нужном значении.
Ответ: алгоритм проверяет число и выводит сообщение только при положительном значении. Это неполное ветвление, поскольку отдельное действие для ответа «нет» не задано.
Нужно сообщить, является ли введённое число чётным или нечётным. Вспомним, что чётное число делится на 2 без остатка, поэтому именно это свойство можно проверить условием. Для ясного результата нужно предусмотреть команды для обоих ответов.
Ответ: сначала проверяется делимость на 2, а затем выполняется соответствующая команда. Это полное ветвление, потому что обработаны оба возможных ответа.
Нужно выбрать стоимость доставки: если заказ достиг заданной суммы, доставка бесплатная, иначе её стоимость прибавляется к заказу. Пусть сумма заказа равна S, порог бесплатной доставки — P, а цена доставки — D. Чтобы затем получить итоговую сумму в обоих случаях, сперва определим, начислять ли D.
Ответ: при достижении порога покупатель платит только за заказ, а иначе — за заказ вместе с доставкой. Это полное ветвление; общая команда вывода выполняется после соединения путей.
Условие бывает сформулировано неоднозначно и не сводится к ответам «да» или «нет». Так происходит, когда в вопросе оставляют слова вроде «достаточно» и не задают точный критерий. Проверь себя: попробуй подставить разные значения и дать на каждый вопрос один из двух ответов, не прибегая к догадкам.
В полном ветвлении иногда забывают действие для одного из ответов, потому что сосредотачиваются только на привычном или ожидаемом случае. Тогда алгоритм не определяет, как обработать остальные данные. Пройди мысленно обе стрелки от условия: для каждой должна найтись команда или последовательность команд.
Можно перепутать действия для ответов «да» и «нет», особенно если условие сформулировано отрицательно. Причина часто в том, что проверяют не сами ответы, а ожидаемый результат задачи. Для проверки подставь один пример, при котором условие истинно, и один, при котором оно ложно, затем проследи, какое сообщение или действие выполняется.
После ветвей пути иногда соединяют неверно или продолжают алгоритм только по одной из них. Это может привести к тому, что общие вычисления выполняются не для всех случаев. Проверь схему: оба допустимых пути должны приводить к нужному продолжению, если оно предусмотрено задачей, а ни одна ветвь не должна обрываться случайно.
Для работы с ветвлением нужно понимать, что такое алгоритм и исполнитель: алгоритм задаёт порядок команд, а исполнитель выполняет их. Также важно уметь записывать последовательность действий, чтобы ясно показать, где находится проверка и что следует за ней. Это связывает новую конструкцию с уже знакомым описанием алгоритмов.
Ветвление можно использовать вместе с повторениями: например, внутри цикла проверять очередное значение и выбирать действие. Оно также помогает создавать программы, которые реагируют на разные входные данные, а не выдают одинаковый результат для всех случаев. Сочетание этих конструкций позволяет строить более гибкие алгоритмы.
Зачем в алгоритме нужно ветвление?
Ветвление позволяет алгоритму выбирать действия в зависимости от ситуации. Благодаря ему программа может по-разному обработать разные входные данные.
Каким должно быть условие для ветвления?
Условие должно быть сформулировано однозначно и допускать только ответы «да» или «нет». Тогда можно точно определить, по какой ветви продолжится алгоритм.
Чем неполное ветвление отличается от полного?
В неполном ветвлении действие задано только для одного ответа на условие. В полном ветвлении предусмотрено отдельное действие для каждого ответа.
Что происходит, если условие ложно?
В неполном ветвлении алгоритм пропускает указанное действие и продолжает работу. В полном ветвлении он выполняет действие, предназначенное для ответа «нет».
Как обозначают ветвление на блок-схеме?
Условие изображают ромбом. Из него выходят стрелки, подписанные ответами «да» и «нет», которые показывают возможные пути выполнения.
§ 3. Ветвление