"Информатика", Поляков К.Ю., Еремин Е.А.
Ветвление позволяет алгоритму выбирать дальнейшие действия по результату проверки условия. Это нужно, когда для разных исходных данных требуются разные решения: например, вывести сообщение о положительном числе или найти большее из двух. Условие принимает значение «истина» или «ложь», поэтому программа выбирает подходящую последовательность команд. Ветвления бывают неполными и полными, а несколько проверок можно объединять или располагать одну внутри другой.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Ветвление — алгоритмическая конструкция, в которой дальнейшие действия выбираются в зависимости от выполнения условия. Оно нужно, чтобы алгоритм мог по-разному обрабатывать разные исходные данные. Например, после проверки числа программа может вывести одно сообщение для положительного значения и другое — для неположительного.
Условие — логическое выражение, принимающее одно из двух значений: истина или ложь. Результат сравнения двух величин, например x > 0, и есть такое значение. Условие помогает программе определить, какую часть алгоритма выполнять дальше.
Неполное ветвление — конструкция, в которой команда выполняется только при истинном условии, а при ложном выполнение продолжается со следующего шага алгоритма. Иначе говоря, для ложного результата отдельное действие не задаётся. Такая форма подходит, если при невыполнении условия ничего особенного делать не требуется.
Полное ветвление — конструкция, в которой для истинного и ложного значений условия предусмотрены разные последовательности команд. Программа выбирает одну из них и выполняет её. Полная форма нужна, когда алгоритм должен обработать оба возможных результата проверки.
Ветвления нужны потому, что одна и та же задача может требовать разных действий при разных исходных данных. Например, для числа больше нуля можно вывести сообщение «положительное», а для остальных чисел — не выводить его. Без выбора алгоритму пришлось бы выполнять одинаковые команды независимо от ситуации, и он не смог бы правильно реагировать на данные.
Чтобы сделать выбор, программа проверяет условие и получает результат «истина» или «ложь». Условие может быть сравнением, например n == 0, или более сложным логическим выражением. Поскольку проверка всегда даёт один из двух результатов, алгоритму понятно, какую ветвь выбрать.
В неполном ветвлении команда связана только с истинным условием. Если проверка оказалась ложной, эта команда пропускается, а алгоритм продолжает работу после конструкции. Такая форма удобна, например, когда нужно вывести предупреждение лишь при обнаружении ошибки, а обычный ход программы менять не требуется.
В полном ветвлении для двух результатов проверки заданы две последовательности команд. При истинном условии выполняется первая последовательность, при ложном — вторая; обе сразу не выполняются. Благодаря этому можно явно описать действия для каждого из двух вариантов, например сообщить, какое из двух чисел больше, или указать, что они равны.
Сложные ветвления строят, соединяя условия логическими операциями или помещая одну проверку внутрь другой. Например, логическое «и» позволяет проверить, что число не меньше 0 и не больше 10. Вложенная проверка полезна, когда второй вопрос имеет смысл только после ответа на первый: сначала программа проверяет диапазон, а затем уточняет результат. При составлении таких алгоритмов важно определить порядок проверок и не забыть ни один возможный случай.
| Характеристика | Неполное ветвление | Полное ветвление |
|---|---|---|
| Количество вариантов действий | Один заданный вариант | Два варианта |
| Действия при истинном условии | Выполняется заданная команда или блок | Выполняется первая последовательность команд |
| Действия при ложном условии | Блок пропускается, алгоритм идёт дальше | Выполняется вторая последовательность команд |
| Схема выполнения | Проверка условия, затем команда при истине | Проверка условия, затем выбор одной из двух ветвей |
| Типичная задача | Вывести сообщение, если число положительное | Выбрать большее число или сообщить о равенстве |
Сначала определите, нужны ли действия при обоих результатах проверки. Если для ложного условия отдельная команда не требуется, выбирайте неполную форму; если требуется — полную. Таблица показывает, что в любом случае программа выполняет только те действия, которые соответствуют результату условия.
Условие задачи: программа получает число и сообщает, что оно положительное, только если это действительно так. При нуле и отрицательном значении сообщение выводить не нужно. Поэтому достаточно неполного ветвления с проверкой числа на большее значение, чем ноль.
Ответ: если n > 0, программа выводит сообщение «Число положительное». Например, для n = 5 оно появится, а для n = 0 или n = −3 команда вывода будет пропущена. Такой выбор обработки и делает ветвление неполным.
Условие задачи: вводятся числа a и b, а программа должна назвать большее или сообщить, что числа равны. Здесь нельзя ограничиться одной проверкой «a > b», потому что она не объяснит, что делать при равенстве. Удобно сначала проверить равенство, затем сравнить числа и предусмотреть оставшийся случай.
Ответ: при a = 4 и b = 4 программа сообщает о равенстве, при a = 7 и b = 2 называет a, а при a = 1 и b = 6 — b. Проверка равенства поставлена отдельно, поэтому программа не ошибается, когда числа совпадают. Для выбора результата выполняется только одна соответствующая ветвь.
Условие задачи: нужно отнести введённое число к одному из диапазонов: меньше 0, от 0 до 10 включительно или больше 10. Слова «включительно» означают, что числа 0 и 10 входят во второй диапазон. Поэтому недостаточно сравнить число только с нулём — потребуется ещё одна проверка.
Ответ: для −2 программа выбирает диапазон «меньше 0», для 0 и 10 — диапазон «от 0 до 10 включительно», а для 11 — «больше 10». Последовательные проверки здесь образуют полное разбиение всех чисел на три случая. Границы учтены благодаря тому, что проверка числа на меньшее нуля не исключает его равенство нулю, а условие «не больше 10» включает число 10.
Путают условие с командой: условие должно дать логический результат, а не выполнить действие. Ошибка возникает, когда в проверку помещают вывод сообщения или другое действие вместо сравнения. Проверьте себя: можете ли вы сказать, при каких значениях проверка истинна и при каких ложна?
Забывают двоеточие или отступ либо неверно выделяют блок команд. Тогда команда может оказаться вне ветви или относиться не к той проверке. Такая ошибка часто появляется из-за невнимательности при записи программы. Проверьте границы блока и убедитесь, что все команды нужной ветви имеют одинаковый отступ.
Используют присваивание вместо сравнения. Присваивание меняет значение переменной, а проверка равенства записывается знаком ==; эти операции выполняют разные задачи. Их легко перепутать из-за похожего знака. Перечитайте условие и спросите себя, нужно ли изменить переменную или проверить, равны ли значения.
Не учитывают отдельные случаи — например, равенство чисел или попадание значения на границу диапазона. Такое случается, если проверяют только типичные примеры и не разбирают все возможные результаты. В итоге программа может неверно ответить при a = b, x = 0 или x = 10. Проверьте крайние значения и каждую границу, а затем убедитесь, что для всех случаев предусмотрена ровно одна ветвь.
Для работы с ветвлениями нужны переменные, операции сравнения и понимание логических значений «истина» и «ложь». Эти знания позволяют записать проверку и понять, почему выбирается та или иная последовательность команд. Ветвления пригодятся в задачах, где обработка зависит от исходных данных. Их можно сочетать с циклами и функциями: цикл повторяет действия, функция объединяет команды, а ветвление помогает выбирать между ними.
Чем неполное ветвление отличается от полного?
В неполном ветвлении команда предусмотрена только для истинного условия. В полном есть отдельные команды и для истинного, и для ложного результата.
Что произойдёт, если условие окажется ложным?
В неполном ветвлении команда внутри блока будет пропущена, и алгоритм перейдёт к следующему шагу. В полном ветвлении выполнится последовательность команд для ложного условия.
Как записать несколько условий одновременно?
Условия можно соединить логическими операциями: «и», «или» и «не». Например, проверка x >= 0 и x
Можно ли помещать одно ветвление внутрь другого?
Да, такое ветвление называют вложенным. Оно удобно, когда следующий выбор зависит от результата предыдущей проверки.
Как проверить, что программа учитывает все возможные значения?
Перечислите все случаи, которые могут возникнуть, включая равенство и граничные значения. Затем проверьте, что для каждого случая выбрана ровно одна подходящая ветвь.
§ 19. Ветвления