Главная страница / 24. Базовые алгоритмические структуры: 24.2. Разветвляющая алгор...

24.2. Разветвляющая алгоритмическая структура

Разветвляющая алгоритмическая структура представляет собой конструкцию, состоящую из двух или более ветвей. Наиболее простой ее вариант – бинарное ветвление (альтернатива, структура if-else, если-то-иначе). Ее блок-схема представлена на рис. 24.3, а, а псевдокод – следующим текстом:


если <логическое выражение>
то Ветвь 1
иначе Ветвь 2
все

При ее выполнении сначала вычисляется логическое выражение. Если оно имеет значение Истина, то выполняется ветвь A, если же Ложь – то ветвь B. Каждая ветвь может включать в себя одно или несколько элементарных действий. Если в ветвь входит несколько действий (операторов), то их необходимо объединить в одно составное действие с помощью служебных слов нач и кон (см. пример алгоритма решения квадратного уравнения в гл. 23). На блок-схеме бинарное ветвление изображается в виде ромбовидного графического элемента альтернатива. Направления перехода могут помечаться также 1 или да (истина) и 0 или нет (ложь).

Частным случаем бинарного ветвления является обход, при котором в случае равенства логического выражения значению Ложь не должно выполняться никакого действия – ветвь пустая.


если <логическое выражение>
то Ветвь 1
все

Блок-схема этой структуры приведена на рис. 24.3, б.

img243a img243b
a б

Рис. 24.3. Блок-схема структур «ветвление» (а) и «обход» (б)

В качестве логического выражения может быть использовано выражение отношения (условие), в котором два выражения сравниваются знаками отношения, например, k = 0 или i < n или sin(x + π/2)>=exp(-2y)-1. В более сложных случаях в логических выражениях используются знаки логических операций: инверсии not, дизъюнкции or или конъюнкции and. Например, not(k = 0 and ((i < n) or (sin(x + π/2)>=exp(-2y)-1))). При конструировании сложных логических выражений необходимо использовать правила и законы булевой алгебры.

Множественное ветвление представляет собой структуру, разветвляющуюся на более чем две ветви. С точки зрения теоретического программирования она является избыточной, так как может быть реализована с помощью бинарных ветвлений. Но практически все языки программирования имеют оператор, поддерживающий эту структуру, поэтому рассмотрим ее на примере ветвления на четыре ветви (блок-схема на рис. 24.4). Ветвлением управляет выражение-селектор s, которое может принимать предусмотренные значения a, b и c. Если s = a, то выполняется ветвь A, если s = b, то выполняется ветвь B, и если s = с, то выполняется ветвь С. В структуре также имеется ветвь X, которая будет выполняться, если селектор s примет не предусмотренное для исполнения предыдущих ветвей значение.

На рис. 24.5 показана реализация этой структуры с помощью бинарных ветвлений.

img244

Рис. 24.4. Блок-схема множественного ветвления

img245

Рис. 24.5. Реализация множественного ветвления с помощью бинарных ветвлений

На псевдокоде множественное ветвление записывается следующим образом:

выбор
при s = a: Ветвь A
при s = b: Ветвь B
при s = c: Ветвь C
иначе Ветвь X
все