"Математика (в 3-х частях)", Демидова Т.Е., Козлова С.А., Тонких А.П.
Алгоритм с условием позволяет выбирать дальнейшие действия в зависимости от результата проверки. Это нужно, когда задачу нельзя решить одной и той же последовательностью команд во всех случаях: например, при проверке чётности или сравнении чисел. Условие даёт один из двух результатов — истину или ложь. В зависимости от него алгоритм выполняет одну ветвь команд, а затем может перейти к общим действиям.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Алгоритм с условием — алгоритм, в котором дальнейшие действия зависят от результата проверки условия. Он нужен, когда для разных исходных данных требуется поступать по-разному. Например, способ обработки числа может зависеть от того, делится ли оно на 2 без остатка.
Условие — утверждение или вопрос, результатом проверки которого является «истина» или «ложь». Например, для числа 8 утверждение «число больше 5» истинно, а для числа 3 — ложно. Такая оценка помогает алгоритму однозначно выбрать дальнейший путь.
Ветвление — выбор одного из возможных вариантов действий в зависимости от условия. Само условие задаёт развилку, а команды на её путях называют ветвями. Это понятие позволяет записывать алгоритмы, в которых не все команды выполняются при каждом запуске.
Неполное и полное ветвление — конструкции, в которых действие выполняется только при истинном условии или выбирается один из двух вариантов. В первом случае для ложного результата отдельная команда не предусмотрена, во втором действие есть для каждого результата. Различие помогает решить, нужно ли описывать оба случая задачи.
Проверка условия нужна потому, что исходные данные могут отличаться, а подходящее действие — зависеть от этих отличий. Если всегда выполнять одну и ту же команду, алгоритм может дать неверный результат в одном из случаев. Например, при оплате покупки скидка может зависеть от суммы заказа, поэтому сумму сначала сравнивают с заданным порогом.
Проверив условие, алгоритм разделяет выполнение на последовательности команд: одна подходит для истинного результата, другая — для ложного. Такой выбор не случаен: он связан с тем, какое из двух утверждений о ситуации подтвердилось. Чтобы алгоритм был понятным, условие формулируют так, чтобы его истинность можно было установить однозначно.
В неполном ветвлении при истинном условии выполняется указанная команда или группа команд. Если условие ложно, эта ветвь пропускается, потому что дополнительное действие не требуется; алгоритм сразу переходит дальше. Такая конструкция удобна, когда нужно выполнить действие лишь в особом случае, например вывести сообщение, если число отрицательное.
Полное ветвление используют, когда для обоих результатов проверки нужны разные действия. Если условие истинно, выполняются команды первой ветви; если ложно — команды второй. Благодаря этому ни один возможный случай не остаётся без обработки, например при сравнении двух чисел можно выбрать первое или второе в зависимости от результата сравнения.
Внутри выбранной ветви команды выполняются одна за другой, после чего алгоритм может продолжить работу с общей последующей командой. Это устроено так, чтобы общие действия не пришлось повторять в обеих ветвях. Например, после выбора большего числа можно одной общей командой вывести найденный результат независимо от того, какая ветвь сработала.
| Вид конструкции | Проверяемое условие | Действия при истинном условии | Действия при ложном условии | Пример применения |
|---|---|---|---|---|
| Неполное ветвление | Одно условие | Выполняется заданная команда | Отдельная команда не выполняется | Вывести предупреждение, если число отрицательное |
| Полное ветвление | Одно условие | Выполняется первая команда или группа команд | Выполняется другая команда или группа команд | Выбрать большее из двух чисел |
| Последовательность команд после ветвления | Условие проверено перед ветвлением | После выбранной ветви выполняется общая команда | После выбранной ветви выполняется та же общая команда | Вывести результат после его выбора |
| Вложенное ветвление | Несколько условий, проверяемых внутри ветвей | Дальше может проверяться ещё одно условие | Дальше может проверяться другое условие или выполняться команда | Назначить скидку по сумме заказа |
Сначала найди в таблице конструкцию, которая соответствует задаче: требуется ли действие только для одного случая или нужно обработать оба. Затем проверь, что записано для истинного и ложного результатов. Последняя строка напоминает, что новый выбор можно выполнять внутри уже выбранной ветви.
Дано целое число n. Чётным называют число, которое делится на 2 без остатка, поэтому достаточно проверить делимость. Если нужно сообщить результат для любого числа, удобно применить полное ветвление.
Ответ: алгоритм проверяет делимость на 2 и сообщает «чётное» при истинном условии, иначе — «нечётное». Если требуется только найти чётное число среди нескольких, можно использовать неполное ветвление и выводить число лишь при истинном условии.
Пусть даны числа a и b. Чтобы определить большее, сравним их; для равных чисел условие a > b ложно, поэтому алгоритму нужно предусмотреть и этот случай. Если по условию задачи требуется именно большее, равенство стоит обработать отдельно или оговорить, что числа различны.
Ответ: при a > b выводим a, иначе при условии a ≠ b выводим b. Если равенство возможно, алгоритм должен дополнительно сообщить, что числа равны, иначе нельзя утверждать, что выбранное число строго больше второго.
Пусть сумма заказа равна S, а правила такие: при S меньше 1000 рублей скидки нет, от 1000 до 2999 рублей скидка 5%, а от 3000 рублей — 10%. Сначала нужно выяснить, к какой группе относится сумма, потому что от этого зависит формула итоговой стоимости. Границы диапазонов зададим так, чтобы каждая сумма попадала ровно в один случай.
Ответ: алгоритм выполняет две проверки последовательно; вторую проводят только тогда, когда заказ не попал в первую группу. Коэффициенты 0,95 и 0,90 оставляют к оплате соответственно 95% и 90% суммы. Это пример последовательных проверок, которые можно также представить как вложенное ветвление.
Выполнить действие сразу, не проверив условие, — значит не учесть, что для другого случая может понадобиться другая команда. Так поступают, когда сосредотачиваются на вычислении и забывают о выборе пути. Проверь себя вопросом: может ли измениться действие при других допустимых данных?
Путаница между «истиной» и «ложью» приводит к выбору неверной ветви. Такое бывает, если условие сформулировано с отрицанием или не проверено на примере. Подставь значения, для которых ответ очевиден, и отдельно установи, истинно ли условие и какая команда должна выполниться.
В полном ветвлении иногда забывают описать действие для ложного условия. Причина часто в том, что сначала рассматривают только ожидаемый или привычный случай. Проверь, куда попадёт алгоритм, если условие окажется ложным; для каждого результата должен быть предусмотрен путь.
Если нарушить порядок команд или поместить общую команду внутрь одной ветви, она выполнится не всегда. Это часто происходит при невнимательном чтении схемы: кажется, что все команды после выбора общие, хотя часть из них относится только к одной ветви. Проследи оба пути и проверь, достигает ли каждый нужных действий и общей команды.
Для работы с условиями нужно знать, что такое алгоритм, команда и исполнитель, а также понимать, как команды выполняются последовательно. Без этого трудно определить, где заканчивается ветвь и какая команда следует дальше. Эти знания помогают записывать алгоритм в правильном порядке.
Условия часто строятся на сравнении чисел и логических высказываниях. Знаки отношений <, > и = помогают записать проверку коротко и точно, а понимание истины и лжи — определить результат. Поэтому перед составлением алгоритма полезно проверить, однозначно ли сформулировано условие.
Дальше ветвление пригодится при составлении программ и блок-схем, а также в алгоритмах с повторяющимися действиями. В программе выбор по условию задаёт, какие команды выполнять, а повторение позволяет снова проходить нужные шаги. Вместе эти конструкции помогают описывать более сложные задачи.
Чем алгоритм с условием отличается от обычной последовательности команд?
В обычной последовательности команды выполняются в заранее заданном порядке, и выбор между ними не производится. В алгоритме с условием сначала проверяют утверждение, а затем выбирают действия по результату проверки.
Как понять, какое условие нужно записать?
Подумай, от какого факта зависит выбор дальнейших действий. Запиши этот факт так, чтобы можно было однозначно определить, истинен он или ложен, например: «число делится на 2 без остатка».
Чем неполное ветвление отличается от полного?
При неполном ветвлении команда предусмотрена только для истинного условия, а при ложном алгоритм просто идёт дальше. При полном ветвлении задано отдельное действие и для истины, и для лжи.
Что происходит, если условие оказалось ложным?
В неполном ветвлении команда внутри ветви не выполняется, и алгоритм переходит к следующей общей команде. В полном ветвлении выполняется команда, предназначенная для ложного результата.
Можно ли использовать несколько условий в одном алгоритме?
Да. Условия можно проверять по очереди или помещать одну проверку внутрь ветви другой, если следующий выбор зависит от предыдущего.
2.85. Алгоритмы с условием