"Информатика (в 2 частях)", Нателаури Н.К., Маранин С.С.
Разветвляющийся алгоритм выбирает дальнейшие действия в зависимости от результата проверки условия. Он нужен, когда для разных исходных данных требуется разный порядок команд. Условие должно быть истинным или ложным, а выбранная последовательность команд называется ветвью. В алгоритмах используют полное ветвление с действиями для обоих результатов и неполное — только для одного.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Разветвляющийся алгоритм — алгоритм, в котором дальнейшие действия зависят от проверки условия. Он не ведёт исполнителя по единственному пути, а выбирает подходящую последовательность команд. Такой способ нужен, когда один и тот же алгоритм должен работать с разными исходными данными.
Условие — утверждение, которое можно признать истинным или ложным. Например, «число больше нуля» после подстановки значения получает один из двух результатов. Условие нужно, чтобы алгоритм мог обоснованно выбрать дальнейшую ветвь, а не действовать случайно.
Ветвь алгоритма — последовательность команд, выполняемая при определённом результате проверки условия. Одна ветвь может запускаться при ответе «да», другая — при ответе «нет». Выделение ветвей помогает понять, какие действия относятся к каждому возможному случаю.
Полное и неполное ветвление — две формы выбора команд. В полном ветвлении описаны обе ветви, а в неполном — действия только для одного результата условия. Это позволяет не записывать ненужные команды, если при одном из исходов достаточно продолжить алгоритм.
Разветвление требуется, когда алгоритм должен по-разному действовать в зависимости от исходных данных или ситуации. Например, стоимость поездки может зависеть от расстояния, а сообщение программы — от знака числа. Без выбора пришлось бы заранее составлять отдельный алгоритм для каждого случая.
Условие проверяют в точке выбора, потому что до проверки алгоритм ещё не знает, какая последовательность команд подходит. Результат сравнения определяет направление дальнейшего выполнения. Если ответ истинен, запускается одна ветвь, а если ложен — другая или ни одна из специальных ветвей.
В полной форме ветвления предусмотрены действия и для истинного, и для ложного результата условия. Это удобно, когда каждый возможный случай требует отдельного ответа, например «число положительное» или «число не является положительным». Ни один результат проверки тогда не остаётся без обработки.
В неполной форме команды записывают только для одного результата, чаще всего истинного. Если условие ложно, алгоритм пропускает эти команды и переходит к следующей общей команде. Такая форма короче, когда особые действия нужны лишь в одном случае, например вывести предупреждение при ошибке.
На блок-схеме проверку условия обозначают ромбом, чтобы отличать её от обычной команды. Из ромба выходят два направления, которые подписывают «да» и «нет»; подпись показывает результат проверки, ведущий к каждой ветви. В записи программы конструкция «если — то — иначе» задаёт полное ветвление, а «если — то» — неполное.
| Форма | Проверяемое условие | Если условие истинно | Если условие ложно |
|---|---|---|---|
| Полное ветвление | Одно логическое условие | Выполняется первая ветвь | Выполняется вторая ветвь |
| Неполное ветвление | Одно логическое условие | Выполняются указанные команды | Специальные команды пропускаются |
| Пример записи | Если число > 0 | Вывести «положительное» | Иначе вывести «не положительное» |
Сначала определите, какое условие проверяется, затем найдите действия для истинного результата и для ложного. В строке про полное ветвление должны быть заполнены обе последние графы, а в строке про неполное одна из них содержит пропуск специальных действий. Таблица помогает быстро сравнить формы и выбрать нужную для задачи.
Условие: по введённому числу определить, является ли оно положительным. Нужно получить отдельное сообщение для каждого результата проверки, поэтому здесь удобно полное ветвление.
Ответ: алгоритм сравнивает число с нулём и выбирает одно из двух сообщений. При a = 5 сработает первая ветвь, а при a = 0 или a = −3 — вторая.
Условие: по двум числам вывести большее, а при равенстве сообщить об этом. Трёх возможных случаев нельзя надёжно охватить одной проверкой, поэтому после первого сравнения нужно проверить второе или отдельно обработать равенство.
Ответ: алгоритм выдаёт большее число, а при a = b выбирает третью ситуацию. Например, для 8 и 3 сработает первая ветвь, для 2 и 7 — вторая, для 4 и 4 — сообщение о равенстве.
Условие: при расстоянии до заданного порога действует один тариф, а при превышении — другой. Пусть порог равен 10 км, а условие «расстояние ≤ 10» означает применение первого тарифа.
Ответ: расстояние 10 км относится к первой ветви, а 11 км — ко второй. Точное распределение тарифов определяется знаком в условии, поэтому граничное значение нельзя оставлять без проверки.
Условие сформулировано неоднозначно, например «число хорошее», и его нельзя уверенно признать истинным или ложным. Так происходит, когда используют бытовое описание вместо сравнения. Проверьте себя: замените переменные конкретными значениями и получите однозначный ответ «да» или «нет».
В полной форме ветвления забывают команды для одного результата условия. Ошибка возникает, если автор проверяет только привычный случай и не думает об остальных данных. Проверьте блок-схему или запись: после проверки должны быть предусмотрены действия и при истине, и при лжи.
На блок-схеме перепутаны направления «да» и «нет». Из-за этого программа выполняет правильные команды при противоположном результате проверки. Подставьте пример, для которого условие истинно, и проследите путь именно по стрелке «да», затем повторите проверку для ложного случая.
Границу относят не к той ветви, например пишут «больше 10» вместо «больше или равно 10». Такая ошибка появляется при невнимательном выборе знака сравнения. Проверьте отдельно значения меньше границы, равное ей и больше неё.
До изучения ветвления нужно понимать, что алгоритм состоит из команд, и уметь сравнивать значения знаками «<», «>», «=», «≤» и «≥». Без этого невозможно правильно составить условие и определить его результат.
Разветвляющиеся алгоритмы связаны с программированием: конструкции условий позволяют программам реагировать на введённые данные. Они применяются в задачах о сравнении чисел, выборе тарифа, проверке ошибок и принятии решений по разным ситуациям.
Чем разветвляющийся алгоритм отличается от линейного?
В линейном алгоритме команды выполняются в одном и том же порядке от начала до конца. Разветвляющийся алгоритм сначала проверяет условие и выбирает одну из возможных последовательностей действий.
Что именно можно использовать в качестве условия?
Условием может быть утверждение, которое однозначно принимает значение «истина» или «ложь». Например: «число больше нуля», «a равно b», «температура ниже 0 °C».
Чем полное ветвление отличается от неполного?
При полном ветвлении предусмотрены действия и для истинного, и для ложного результата условия. При неполном ветвлении команды записывают только для одного результата, а при другом алгоритм продолжает работу дальше.
Как на блок-схеме показать проверку условия?
Проверку условия обозначают ромбом. Из ромба выходят направления, обычно подписанные «да» и «нет», которые ведут к соответствующим ветвям.
Как проверить, правильно ли алгоритм обрабатывает граничные значения?
Нужно отдельно подставить значение, равное границе, а также значения немного меньше и немного больше неё. Так можно увидеть, к какой ветви относится граница и не допущена ли ошибка в знаке сравнения.
Разветвляющийся алгоритм