"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.
Ветвление — конструкция алгоритма, которая выбирает дальнейшие действия по результату проверки условия. Условие вычисляется как истина или ложь: в зависимости от ответа выполняется одна команда, один из двух блоков или алгоритм продолжается без дополнительных действий. Ветвления позволяют программам реагировать на разные входные данные. Разберём их виды, запись на языке программирования и применение в задачах.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Ветвление — алгоритмическая конструкция, которая выбирает дальнейшие действия в зависимости от условия. Оно нужно, когда для разных данных алгоритму требуется действовать по-разному, а не выполнять одни и те же команды всегда.
Условие — логическое выражение, результат которого равен истине или лжи. Например, x > 0 истинно для положительных чисел и ложно для нуля и отрицательных, поэтому по такому выражению программа может решить, нужно ли выполнять команду.
Неполное ветвление — форма, в которой команда выполняется только при истинном условии, а при ложном выполнение продолжается без альтернативной команды. Такая форма подходит, если при невыполнении условия ничего особенного делать не нужно.
Полное ветвление — форма, в которой для истинного и ложного результатов предусмотрены разные команды. Оно нужно, когда алгоритм обязан выбрать одно из двух действий, например сообщить, чётное число или нечётное.
Сначала программа вычисляет условие, а затем получает один из двух логических результатов: истину или ложь. Именно результат проверки задаёт путь выполнения, поэтому команда после проверки не запускается автоматически во всех случаях. Это позволяет описать разные реакции на входные данные в одном алгоритме.
В неполном ветвлении проверка управляет одним блоком команд: если условие истинно, блок выполняется, а если ложно — пропускается. После этого программа продолжает работу со следующей командой за блоком. Такая конструкция удобна, например, чтобы вывести предупреждение только при выходе значения за допустимую границу.
В полном ветвлении к первой ветви добавляют альтернативу для ложного условия. Программа не выполняет оба блока подряд: результат одной проверки не может одновременно быть истиной и ложью, поэтому запускается только подходящая ветвь. Так удобно обрабатывать два взаимоисключающих результата, например чётность и нечётность числа.
В Python условную конструкцию записывают с ключевыми словами if и else: после условия и каждого ключевого слова ставят двоеточие. Команды блока располагают на следующей строке с одинаковым отступом; отступ показывает, что они принадлежат этой ветви. После блока отступ возвращают к исходному уровню, чтобы обозначить продолжение алгоритма.
Условие часто составляют из сравнений: == проверяет равенство, != — неравенство, а <, >, <= и >= сравнивают величины. Если нужно проверить несколько требований сразу, их соединяют логическими операциями: and требует истинности всех частей, or — хотя бы одной, not меняет значение на противоположное. Выбирая связку, проверьте, что условие срабатывает для каждого нужного случая и не принимает лишние значения.
| Свойство | Неполное ветвление | Полное ветвление |
|---|---|---|
| Когда выполняется первая ветвь | Когда условие истинно | Когда условие истинно |
| Что происходит, если условие ложно | Блок пропускается, выполнение продолжается | Выполняется альтернативная ветвь |
| Количество альтернативных ветвей | Одна ветвь, без альтернативы | Две ветви для разных результатов |
| Схема записи на языке программирования | if условие: блок команд | if условие: блок 1; else: блок 2 |
| Пример подходящей ситуации | Вывести предупреждение при отрицательном балансе | Сообщить, чётное число или нечётное |
Сначала определите, требуется ли действие при ложном условии. Если нет, достаточно неполной формы; если нужно обработать оба результата, выбирайте полную. В последней строке таблицы приведены ситуации, которые помогают соотнести форму ветвления с задачей.
Задача 1. Дано целое число n. Вывести сообщение, если оно положительное. Поскольку при отрицательном числе и нуле отдельное сообщение не требуется, подходит неполное ветвление.
Ответ: использовать неполное ветвление с условием n > 0; сообщение появится только для положительного числа.
Задача 2. По введённому числу определить, чётное оно или нечётное. Нужны сообщения для обоих случаев, поэтому выбираем полное ветвление; остаток от деления на 2 у чётного числа равен нулю.
Ответ: полное ветвление с проверкой n % 2 == 0 определяет чётность числа.
Задача 3. По длинам a, b и c определить, можно ли составить треугольник. Для каждой стороны сумма двух других должна быть больше неё, значит, недостаточно проверить только одно неравенство: должны выполняться все три.
Ответ: проверить все три неравенства через and и обработать оба результата полной конструкцией.
Ошибка — записать условие как действие или как текстовое утверждение, например «вывести положительное». Условие должно быть выражением, которое программа может вычислить и оценить как истину или ложь; иначе проверка не задаёт понятного результата. Чтобы проверить себя, спросите: можно ли по заданным значениям переменных однозначно определить истинность выражения?
Присваивание и сравнение легко перепутать из-за похожей записи. Знак = присваивает переменной значение, а == проверяет, равны ли значения; в условии проверки равенства нужно использовать именно сравнение. Перед запуском программы проверьте, не пытаетесь ли вы изменить переменную там, где нужно проверить её значение.
Пропущенное двоеточие или неверный отступ нарушают запись условной конструкции. Двоеточие отмечает начало блока, а одинаковые отступы показывают, какие команды входят в него; ошибка может привести к синтаксическому сообщению или неверному составу блока. Сверьте двоеточия после if и else, а затем проверьте, что команды каждой ветви выровнены одинаково.
Неверная логическая связка может исключить нужный случай или включить лишний. Например, если для треугольника соединить три обязательных неравенства через or, условие станет истинным даже тогда, когда одно из правил нарушено. Проверьте условие на примерах, которые должны дать оба результата, и спросите, обязательно ли выполнение каждой его части.
Для записи ветвлений нужны переменные, типы данных, операции сравнения и логические значения. Переменные хранят входные данные, сравнения формируют условия, а логические операции объединяют несколько проверок. Без этих понятий нельзя надёжно задать, какой случай должен привести к выбранной команде.
Ветвления используют вместе с циклами и функциями, чтобы создавать алгоритмы, которые реагируют на входные данные. Цикл может повторять проверку, а функция — применять её внутри отдельной части программы. В результате можно описывать не только выбор одного действия, но и более сложную последовательность обработки данных.
Чем неполное ветвление отличается от полного?
В неполном ветвлении команда предусмотрена только для истинного условия, а при ложном условии алгоритм идёт дальше. В полном ветвлении есть две альтернативы: одна для истины, другая для лжи.
Что может быть условием в операторе ветвления?
Условием может быть сравнение, например x > 0, или составное выражение с логическими операциями. Оно должно вычисляться в логическое значение: истину или ложь.
Что произойдёт, если условие окажется ложным?
В неполном ветвлении команды внутри блока пропускаются, и выполнение продолжается после него. В полном ветвлении выполняется блок альтернативы, записанный после else.
Зачем нужны отступы в условной конструкции?
Отступы показывают, какие команды относятся к ветви и выполняются только при соответствующем результате проверки. Без правильных отступов программа может выдать ошибку или выполнить команды не так, как задумано.
Как объединить несколько проверок в одно условие?
Для этого используют логические операции and, or и not. Например, and требует истинности всех частей, а or — хотя бы одной; связки нужно выбирать так, чтобы условие охватывало все нужные случаи.
§ 57. Ветвления