Программирование сложных однооузловых ветвлений
Рассмотренные варианты ветвящихся процессов использовали проверку одного или нескольких взаимоисключающих условий, что приводило к получению в алгоритмах и программах двух и более последовательно формируемых вычислительных ветвей.
При этом проверяемые условия оформлялись любыми комбинациями логической проверки ( <, >, £, ³, =, ¹).
В некоторых реальных задачах требуется проверка специфических условий, когда выбор конкретной ветви определяется проверкой на равенство целочисленной константе. При этом количество создаваемых ветвей, а, следовательно, и проверяемых условий (констант) может изменяться в значительном диапазоне, начиная с 2 и заканчивая десятками.
Графическая интерпретация сложного узла определяет одну исходную и некоторое количество выходных ветвей:
Рассмотрим программирование сложного одноузлового ветвления на задаче (4.4) о размере стипендии.
Постановка задачи
Рассчитать размер стипендии, выплачиваемой студентам, если известно, что не явившиеся на экзамен, получившие «неудовлетворительно» и «удовлетворительно» стипендию не получают, сдавшие на «хорошо» получают базовую стипендию, сдавшие на «отлично» – повышенную.
Формирование математической модели
Исходные данные
Баз = _ _ р. – размер базовой стипендии;
k = _,_ _ – коэффициент повышения стипендии;
Балл = _ – полученный балл;
Расчётные зависимости
Первый вариант:
размер стипендии, [р.]
Второй вариант:
|
|
Выбор метода решения
Анализ полученных математических моделей позволяет констатировать:
Первая из формулировок соответствует последовательной проверке на пять целочисленных констант (= 0, = 2, = 3, = 4, = 5). Она предписывает многократную одноузловую проверку.
Вторая объединяет все возможные варианты ниже «хорошо» в одно составное условие.
Третья соответствует традиционной форме сложного (двухузлового) ветвления на два, преобразуя множественную проверку на одну из целочисленных констант в два взаимоисключающих условия. Главное ( ), действующее на все три ветви и дополнительное ( ), действующее только в ветви , взаимоисключающей главное.
Следовательно, в качестве метода решения:
первая математическая модель требует разветвляющегося вычислительного процесса с одноузловым множественным ветвлением на пять;
вторая предписывает ветвящийся вычислительный процесс с одноузловым множественным ветвлением на три;
третья определяет стандартное двухузловое, с указанными в модели зависимостями, последовательное ветвление на два.