Программирование сложных однооузловых ветвлений

Рассмотренные варианты ветвящихся процессов использовали проверку одного или нескольких взаимоисключающих условий, что приводило к получению в алгоритмах и программах двух и более последовательно формируемых вычислительных ветвей.

При этом проверяемые условия оформлялись любыми комбинациями логической проверки ( <, >, £, ³, =, ¹).

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

Графическая интерпретация сложного узла определяет одну исходную и некоторое количество выходных ветвей:

 
 

Рассмотрим программирование сложного одноузлового ветвления на задаче (4.4) о размере стипендии.

Постановка задачи

Рассчитать размер стипендии, выплачиваемой студентам, если известно, что не явившиеся на экзамен, получившие «неудовлетворительно» и «удовлетворительно» стипендию не получают, сдавшие на «хорошо» получают базовую стипендию, сдавшие на «отлично» – повышенную.

Формирование математической модели

Исходные данные

Баз = _ _ р. – размер базовой стипендии;

k = _,_ _ – коэффициент повышения стипендии;

Балл = _ – полученный балл;

Расчётные зависимости

Первый вариант:

размер стипендии, [р.]

Второй вариант:

размер стипендии, [р.]

размер стипендии, [р.]
Третий вариант:

Выбор метода решения

Анализ полученных математических моделей позволяет констатировать:

Первая из формулировок соответствует последовательной проверке на пять целочисленных констант (= 0, = 2, = 3, = 4, = 5). Она предписывает многократную одноузловую проверку.

Вторая объединяет все возможные варианты ниже «хорошо» в одно составное условие.

Третья соответствует традиционной форме сложного (двухузлового) ветвления на два, преобразуя множественную проверку на одну из целочисленных констант в два взаимоисключающих условия. Главное ( ), действующее на все три ветви и дополнительное ( ), действующее только в ветви , взаимоисключающей главное.

Следовательно, в качестве метода решения:

первая математическая модель требует разветвляющегося вычислительного процесса с одноузловым множественным ветвлением на пять;

вторая предписывает ветвящийся вычислительный процесс с одноузловым множественным ветвлением на три;

третья определяет стандартное двухузловое, с указанными в модели зависимостями, последовательное ветвление на два.