Информатика, 6 классВетвление5 минут чтения
Ветвление
Пока в алгоритме нет вопросов, он идёт одним путём. Стоит появиться проверке, и путей становится два. Такую развилку называют ветвлением.
6классЕсли, то, иначе
Ветвление записывают тремя словами. Если условие истинно, то делаем одно, иначе делаем другое.
Условие это высказывание, которое либо истинно, либо ложно. Ничего третьего не бывает, поэтому веток ровно две.
После развилки пути снова сходятся, и алгоритм продолжается общим стволом.
Пускать ли гулять
Начало
Узнай температуру за окном
- Температура ниже минус двадцати?
даОстанься дома
нетОдевайся и иди гулять
Скажи родителям, куда идёшь
Конец
Условие и данные
Ветвление появляется там, где алгоритм должен подстроиться под данные. Пока числа известны заранее, развилка не нужна.
Именно поэтому программы с ветвлениями умеют работать с чем угодно, а линейные годятся для одного случая.
Неполная форма
Иногда при ответе «нет» делать нечего. Тогда вторую ветку оставляют пустой.
«Если идёт дождь, возьми зонт» это неполная форма. В сухую погоду ничего не происходит.
На схеме такая ветка идёт прямо вниз, минуя действие. Пропускать её вовсе нельзя: путь должен быть нарисован.
Полная форма
Неполная
Есть действия для да и для нет
Действие только для «да»
Если холодно, надень шапку, иначе кепку
Если холодно, надень шапку
Обе ветки заняты
Одна ветка пустая
Сложные условия
Условие может состоять из нескольких проверок, соединённых связками. Тогда работают правила из урока про «и», «или», «не».
«Если тепло и сухо» требует обеих частей. «Если снег или мороз» довольствуется одной.
Сложное условие проверяют таблицей всех случаев. Их четыре при двух частях, восемь при трёх.
Условие «тепло и сухо»
| Тепло | Сухо | Условие | Что делает программа |
|---|---|---|---|
| истина | истина | истина | идёт по ветке «да» |
| истина | ложь | ложь | идёт по ветке «нет» |
| ложь | истина | ложь | идёт по ветке «нет» |
| ложь | ложь | ложь | идёт по ветке «нет» |
Вложенные ветвления
Внутри ветки бывает новая развилка. Так строится выбор из нескольких вариантов.
Сначала спрашиваем про погоду, потом внутри ветки про температуру. Получается дерево решений.
Глубина растёт быстро: три вложенных вопроса дают восемь путей. Поэтому глубже трёх уровней стараются не заходить.
Что надеть по погоде
Начало
- Идёт дождь?
даВозьми дождевик и сапоги
нетПосмотри на градусник
- Теплее пятнадцати градусов?
даНадень футболку
нетНадень куртку
Конец
Ветвление и таблица истинности
Проверяя сложное условие, полезно выписать все случаи в таблицу. Строк столько, сколько сочетаний истины и лжи.
Напротив каждой строки пишут, какая ветка сработает. Сразу видно, не осталось ли случая, о котором забыли.
Пять минут с таблицей избавляют от часа поисков потом.
Ошибки в условиях
Самая частая ошибка это перепутанные ветки: действия для «да» стоят под «нет».
Вторая по частоте это граница. Условие «больше пяти» не включает саму пятёрку, а «не меньше пяти» включает.
Третья это забытый случай равенства. Сравнивая два числа, помни, что они могут оказаться одинаковыми.
Выбор из многих
Когда вариантов больше двух, вложенные ветвления становятся громоздкими. Для таких случаев есть отдельная конструкция выбора.
Она сравнивает одно значение с несколькими и выполняет подходящую ветку. День недели, номер месяца, код клавиши.
Обязательно предусматривают ветку «во всех остальных случаях». Иначе неожиданное значение проскочит мимо всех проверок.
Порядок проверок важен
При нескольких условиях подряд порядок решает многое. Проверку, которая отсекает большинство случаев, ставят первой.
Так экономят работу: остальные проверки просто не выполнятся. В длинных списках это заметно ускоряет программу.
Есть и другая причина: неверный порядок иногда делает часть веток недостижимой, и они не выполнятся никогда.
Условие как значение
Результат проверки можно сохранить и использовать позже. Например, посчитать один раз, взрослый ли пользователь, и дальше опираться на этот ответ.
Хранится он как истина или ложь, то есть один бит. Такие величины называют логическими.
Программа от этого становится понятнее. Вместо длинного условия в ромбе стоит короткое имя.
Ветвление в жизни
Любая инструкция с вопросами это ветвление. Памятка при пожаре, правила игры, дерево определителя растений.
Компьютер выполняет такие развилки миллионы раз в секунду, и почти всё поведение программы состоит из них.
Про повтор действий читай урок «Цикл». Про связки условий есть урок «И, или, не».
Проверь себя: Условие «если число больше 10, вывести «много», иначе вывести «мало»». Что выведет алгоритм при числе 10?
«Мало». Десятка не больше десяти, значит условие ложно, и работает ветка «иначе». Это и есть та самая ошибка границы.
Короткие ответы
- Чем полная форма ветвления отличается от неполной?
- В полной есть действия и для «да», и для «нет». В неполной при ответе «нет» просто ничего не происходит.
- Сколько условий можно вложить друг в друга?
- Технически сколько угодно, но после трёх уровней схему уже трудно читать. Тогда условия объединяют связками или разбивают алгоритм на части.