ВЕТВЛЕНИЯ
Легко и просто было бы жить (и даже неинтересно), если бы удалось раз и навсегда расписать, какие поступки и в какой последовательности совершать. На самом деле нам постоянно приходится принимать решения в зависимости от создавшейся ситуации. Если идет дождь, то мы надеваем плащ. Если жарко, то идем купаться. Разумеется, встречаются и более сложные положения. когда
надо сделать выбор. Давайте рассмотрим два примера.Пример 1. Допустим, вы собрались пойти в кинотеатр на сеанс 12.00. Алгоритм покупки билетов может выглядеть так:
Подойти к кассе. Если билеты на сеанс 12.00 имеются, то купить билеты.
Отойти от кассы.
Пример 2. Представьте себе, что вам нужно проехать к автозаправочной станции (АЭС) по дороге, участок которой ремонтировался, и вам неизвестно, закончился ли ремонт. Подъезжая к этому участку, вы будете вынуждены воспользоваться следующим алгоритмом:
Уменьшить скорость.
Если ремонт участка закончен, то проехать 5 км по отремонтированному участку, иначе проехать 10 км в объезд. Остановиться у АЭС.
“Билеты на сеанс 12.00 имеются” — это условие, которое надо проверить в первом примере. Во втором примере проверяется условие “ремонт участка закончен”.
Что же происходит после проверки условия? В первом примере, если условие выполнено, совершается действие
купить билеты,
а затем — действие
отойти от кассы.
Если же условие не выполнено, то сразу совершается действие отойти от кассы.
Во втором примере в случае выполнения условия совершается действие
проехать 5 км по отремонтированному участку,
а затем — действие
остановиться у АЭС.
В противном случае совершается действие
проехать 10 км в объезд, а затем — действие
остановиться у АЭС.
Мы видим, что при выполнении каждого из этих алгоритмов наступает такой момент, когда появляется несколько направлений для продолжения. Алгоритм как бы раздваивается, разветвляется (словно дорога). В этом случае говорят, что алгоритм содержит ветвление.
В рассмотренных ветвлениях как “прямой путь”, так и “объезд” содержит только одно действие. Но так бывает далеко не всегда. Скажем, в первом примере слова “Купить билеты” предполагают выполнение нескольких действий, например, таких: протянуть кассиру деньги, назвать сеанс и количество билетов, получить билеты. Учитывая это, попробуем
записать алгоритм покупки билетов более подробно. Как и раньше, будем записывать действия в столбик:
Подойти к кассе. Если билеты на сеанс 12.00 имеются, то:
Протянуть кассиру деньги.
Назвать сеанс и количество билетов.
Получить билеты.
Отойти от кассы.
Казалось бы, все в порядке: мы лишь разъяснили, что значит “купить билеты”. Но по этой записи стало невозможно понять очередность выполнения действий, поскольку неясно, какое именно действие следует выполнять, если билетов на сеанс 12.00 нет. Значит, в записи алгоритма необходим специальный указатель, показывающий последнее действие, участвующее в ветвлении. Договоримся в качестве такого указателя употреблять слова “Конец ветвления” и писать его в строке, следующей за последним действием ветвления:
Подойти к кассе. Если билеты на сеанс 12.00 имеются, то:
Протянуть кассиру деньги.
Назвать сеанс и количество билетов.
Получить билеты.
Конец ветвления.
Отойти от кассы.
Теперь ясно: если условие не выполнено, то сразу совершается действие, записанное после слов “Конец ветвления”.
Итак, ветвление (развилка)
—это такая форма организации действий, при которой в зависимости от выполнения или невыполнения некоторого условия совершается либо одна, либо другая последовательность действий.Чтобы более наглядно представлять те или иные формы организации действий, очень полезны так называемые блок-схемы. Каждое действие алгоритма, кроме проверки условия, будем помещать в прямоугольник, а вопрос о том, выполняется ли некоторое условие,—в ромб. Блок-схемы на рисунках 13, а, б, в изображают соответственно последовательное выполнение действий, ветвления в полной и неполной формах. На рисунке 14 изображена блок-схема алгоритма покупки билетов.