ВЕТВЛЕНИЯ

Легко и просто было бы жить (и даже неинтересно), если бы удалось раз и навсегда расписать, какие поступки и в какой последовательности совершать. На самом деле нам постоянно приходится принимать решения в зависимости от создавшейся ситуации. Если идет дождь, то мы надеваем плащ. Если жарко, то идем купаться. Разумеется, встречаются и более сложные положения. когда надо сделать выбор. Давайте рассмотрим два примера.

Пример 1. Допустим, вы собрались пойти в кинотеатр на сеанс 12.00. Алгоритм покупки билетов может выглядеть так:

Подойти к кассе. Если билеты на сеанс 12.00 имеются, то купить билеты.

Отойти от кассы.

 

Пример 2. Представьте себе, что вам нужно проехать к автозаправочной станции (АЭС) по дороге, участок которой ремонтировался, и вам неизвестно, закончился ли ремонт. Подъезжая к этому участку, вы будете вынуждены воспользоваться следующим алгоритмом:

Уменьшить скорость.

Если ремонт участка закончен, то проехать 5 км по отремонтированному участку, иначе проехать 10 км в объезд. Остановиться у АЭС.

“Билеты на сеанс 12.00 имеются” — это условие, которое надо проверить в первом примере. Во втором примере проверяется условие “ремонт участка закончен”.

Что же происходит после проверки условия? В первом примере, если условие выполнено, совершается действие

купить билеты,

а затем — действие

отойти от кассы.

Если же условие не выполнено, то сразу совершается действие отойти от кассы.

Во втором примере в случае выполнения условия совершается действие

проехать 5 км по отремонтированному участку,

а затем — действие

остановиться у АЭС.

В противном случае совершается действие

проехать 10 км в объезд, а затем — действие

остановиться у АЭС.

Мы видим, что при выполнении каждого из этих алгоритмов наступает такой момент, когда появляется несколько направлений для продолжения. Алгоритм как бы раздваивается, разветвляется (словно дорога). В этом случае говорят, что алгоритм содержит ветвление.

В рассмотренных ветвлениях как “прямой путь”, так и “объезд” содержит только одно действие. Но так бывает далеко не всегда. Скажем, в первом примере слова “Купить билеты” предполагают выполнение нескольких действий, например, таких: протянуть кассиру деньги, назвать сеанс и количество билетов, получить билеты. Учитывая это, попробуем

записать алгоритм покупки билетов более подробно. Как и раньше, будем записывать действия в столбик:

Подойти к кассе. Если билеты на сеанс 12.00 имеются, то:

Протянуть кассиру деньги.

Назвать сеанс и количество билетов.

Получить билеты.

Отойти от кассы.

Казалось бы, все в порядке: мы лишь разъяснили, что значит “купить билеты”. Но по этой записи стало невозможно понять очередность выполнения действий, поскольку неясно, какое именно действие следует выполнять, если билетов на сеанс 12.00 нет. Значит, в записи алгоритма необходим специальный указатель, показывающий последнее действие, участвующее в ветвлении. Договоримся в качестве такого указателя употреблять слова “Конец ветвления” и писать его в строке, следующей за последним действием ветвления:

Подойти к кассе. Если билеты на сеанс 12.00 имеются, то:

Протянуть кассиру деньги.

Назвать сеанс и количество билетов.

Получить билеты.

Конец ветвления.

Отойти от кассы.

Теперь ясно: если условие не выполнено, то сразу совершается действие, записанное после слов “Конец ветвления”.

Итак, ветвление (развилка)это такая форма организации действий, при которой в зависимости от выполнения или невыполнения некоторого условия совершается либо одна, либо другая последовательность действий.

Чтобы более наглядно представлять те или иные формы организации действий, очень полезны так называемые блок-схемы. Каждое действие алгоритма, кроме проверки условия, будем помещать в прямоугольник, а вопрос о том, выполняется ли некоторое условие,—в ромб. Блок-схемы на рисунках 13, а, б, в изображают соответственно последовательное выполнение действий, ветвления в полной и неполной формах. На рисунке 14 изображена блок-схема алгоритма покупки билетов.