"Информатика (в 2 частях)", Могилев А.В., Могилева В.Н., Цветкова М.С.
Алгоритм с ветвлением выбирает дальнейшие действия не заранее, а по результату проверки условия. Если условие истинно, выполняется одна последовательность команд, если ложно — другая или никакая. Такая конструкция нужна, когда результат зависит от исходных данных: знака числа, сравнения величин или выполнения правила. Главное — правильно сформулировать условие и предусмотреть нужные ветви.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Алгоритм с ветвлением — алгоритм, в котором дальнейшие действия выбираются в зависимости от результата проверки условия. Он нужен, когда одни и те же исходные данные могут привести к разным действиям. Например, для положительного и отрицательного числа применяются разные сообщения.
Условие ветвления — утверждение или логическое выражение, результатом проверки которого является «истина» или «ложь». Обычно условие содержит сравнение: x > 0, a = b или n ≤ 10. Благодаря ему исполнитель понимает, какую ветвь выбрать.
Неполное ветвление — конструкция, при которой действия выполняются только при истинности условия. Если условие ложно, особые команды не выполняются. Такая форма подходит, когда при отрицательном результате ничего специально делать не требуется.
Полное ветвление — конструкция, в которой предусмотрены разные действия и для истинного, и для ложного результата условия. Исполнитель выбирает ровно одну из двух ветвей. Это позволяет описать ситуацию, где ответ нужен в любом случае.
Одной последовательности команд недостаточно, если результат зависит от исходных данных. Например, нельзя заранее одной и той же командой обработать и положительное, и отрицательное число, когда для них нужны разные сообщения. Ветвление добавляет в алгоритм проверку и делает его приспособленным к разным вариантам входных данных.
Сначала исполнитель вычисляет условие, а затем получает один из двух результатов. При истине он направляется по ветви, предназначенной для выполнения условия, при лжи — по другой ветви или сразу к следующей общей команде. Поэтому ветвление можно представить как выбор дороги на перекрёстке после проверки указателя.
Истинное значение означает, что утверждение верно, а ложное — что оно неверно. Эти результаты должны определяться однозначно: для конкретных данных условие не может одновременно быть истинным и ложным. Поэтому запись «число хорошее» недостаточна, а запись x > 0 задаёт точное правило проверки.
В блок-схеме проверку помещают в ромб, из которого выходят два направления. Неполное ветвление имеет действие только на одном направлении, а второе соединяется с дальнейшим ходом алгоритма. На алгоритмическом языке используют конструкцию «если условие, то действие», а для полного варианта добавляют «иначе действие».
После выполнения выбранной ветви отдельные пути снова соединяются с общей следующей командой. Вторая ветвь при этом не выполняется, потому что результат проверки уже определил единственное направление. Такое соединение позволяет продолжить алгоритм без повторения одинаковых команд.
Сравнивайте строки таблицы с условием задачи: сначала определите, нужны ли действия при обоих результатах. Если для ложного результата ничего делать не требуется, достаточно неполной конструкции. Если каждый результат должен приводить к своему действию, выбирайте полное ветвление.
| Признак | Неполное ветвление | Полное ветвление |
|---|---|---|
| Проверяемое условие | Одно условие | Одно условие |
| Действия при истинном условии | Предусмотрены | Предусмотрены |
| Действия при ложном условии | Отсутствуют | Предусмотрены другие действия |
| Количество возможных ветвей | Одна действующая ветвь и переход дальше | Две взаимоисключающие ветви |
| Когда используется | Когда действие нужно только при истине | Когда нужно обработать оба результата |
| Общая схема записи | Если условие, то действие | Если условие, то действие, иначе другое действие |
Условие: дано число x, нужно сообщить, является ли оно положительным. Число положительно, если оно больше нуля. Сообщение требуется только в этом случае, поэтому используем неполное ветвление.
Ответ: алгоритм имеет вид «если x > 0, то вывести сообщение». При x ≤ 0 сообщение не выводится, так как число не является положительным.
Условие: даны числа a и b, требуется вывести большее. Нужно сравнить их и предусмотреть действие для каждого результата проверки. Выберем условие a > b, чтобы при его истинности результатом было a.
Ответ: используется полное ветвление «если a > b, то вывести a, иначе вывести b». Для любых двух чисел сработает только одна из ветвей.
Условие: даны a, b и c, нужно определить максимум. Удобно хранить текущего кандидата наибольшего числа в переменной m. Равенство не мешает алгоритму, потому что при нём кандидат может остаться прежним.
Ответ: после двух последовательных сравнений в m окажется наибольшее из трёх чисел. Если значения равны, дополнительная замена не нужна, и правильный максимум всё равно сохраняется.
Иногда записывают условие без сравнения или понятного логического смысла, например «если число хорошее». Так происходит, когда условие заменяют бытовым описанием. Проверьте себя: можно ли для любого конкретного значения ответить только «истина» или «ложь»?
Ветви «истина» и «ложь» могут перепутать, поэтому сообщение выводится при противоположном результате. Ошибка появляется, если не проверить пример вручную. Подставьте данные, для которых условие точно истинно, и убедитесь, что запускается нужное действие.
В задаче, где нужно обработать оба результата, иногда забывают ветвь для ложного условия. Обычно это случается после привыкания к неполному ветвлению. Спросите себя, что должен сделать алгоритм, если проверка не выполнится, и добавьте действие «иначе».
Два независимых условия могут привести к выполнению обоих действий, хотя варианты должны исключать друг друга. Причина — отсутствие связи между проверками. Проверьте граничные и обычные значения: для каждого набора данных должна срабатывать только одна подходящая ветвь.
До этой темы нужны понятия алгоритма, команды, исполнителя и блок-схемы. Также пригодятся операции сравнения, потому что именно они часто образуют условие ветвления. Без понимания порядка команд трудно проследить выбранный путь.
С математикой ветвление связано через неравенства и логические условия. Записи x > 0, a = b и n ≤ 10 позволяют точно описать проверяемое утверждение. При решении задач важно не путать знак сравнения и смысл результата.
Дальше ветвления встречаются в циклах с условием, составных условиях и программах обработки данных. Несколько проверок позволяют выбирать один вариант из многих. Тот же принцип используется при поиске максимума, фильтрации и проверке правильности данных.
Чем ветвящийся алгоритм отличается от линейного?
В линейном алгоритме команды выполняются в одном и том же порядке. В ветвящемся алгоритме порядок или набор дальнейших действий зависит от результата проверки условия.
Что может быть условием ветвления?
Условием может быть утверждение, которое принимает значение «истина» или «ложь». Например: x > 0, a = b, число делится на 2 без остатка.
Когда достаточно неполного ветвления?
Неполное ветвление подходит, если действие нужно выполнить только при истинном условии. При ложном результате алгоритм просто переходит к следующей общей команде.
Что произойдёт, если условие окажется ложным?
При неполном ветвлении специальная ветвь пропускается, и выполняется следующая команда алгоритма. При полном ветвлении запускается последовательность действий, предусмотренная для ложного результата.
Как записать выбор из нескольких возможных вариантов?
Используют несколько последовательных или вложенных ветвлений. Условия формулируют так, чтобы для одних и тех же данных выполнялась только нужная ветвь.
§ 24. Алгоритмы с ветвлением. Условия ветвления