Программирование ветвлений

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

Для программирования по выбору ветвей процесса используется базовая структура РАЗВЕТВЛЕНИЕ. Разветвление на два пути реализуется одной базовой структурой, а на три и более путей - совокупностью базовых структур, вложенных одна в другую. Их число должно быть на единицу меньше числа возможных ветвей процесса.

В качестве примера изобразим структурограмму вычисления некоторой функции

Рис.2. Структурограмма вложенного ветвления

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

Для иллюстрации программирования в случае большого числа точек ветвления построим структурограммы вычисления функции

сначала с использованием структуры РАЗВЕТВЛЕНИЕ (рис.2 а), а затем конструкции выбора (CASE) (рис.2 б).

Рис.2. Структурограмма ветвления с большой степенью
вложенности с использованием структур:
а – РАЗВЕТВЛЕНИЯ, б – конструкции выбора (CASE)

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

Пример 3

Дан кирпич прямоугольной формы со сторонами A, B, C и прямоугольное отверстие в стене со сторонами X и Y. Определить, пройдет ли кирпич в отверстие, если допускается располагать его грани только параллельно сторонам отверстия.

Решение

Основная идея решения заключается в упорядочивании сторон кирпича и отверстия по возрастанию. Если меньшая сторона кирпича меньше меньшей стороны отверстия, а вторая по размеру сторона кирпича меньше большей стороны отверстия, то кирпич пройдет, иначе — нет. Таким образом, требуется решить подзадачи упорядочивания сторон кирпича и сторон отверстия. Поскольку цель задачи — дать ответ "пройдет" или "не пройдет", будем выполнять упорядочивание, не вводя новых переменных. Для сторон отверстия задача решается просто: если X>Y, то обменять значения X и Y. Упорядочить стороны кирпича можно за три обмена: A и B, B и C и вновь A и B. Блок-схема алгоритма решения задачи показана на рис. 1.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: