Программирование ветвлений с составными условиями

Составное – условие одновременной проверки нескольких операций отношения (логических величин).

В математике запись составных условий осуществляется символами:

– логическое умножение (И);

– логическое сложение (ИЛИ);

– отрицание (НЕ).

Например, условием нахождения точки с координатами x, y в 1-м квадранте будет: x>0 y>0, а условие нахождения точки x вне отрезка (a,b) имеет вид: x<a x>b.

Символ «отрицание» позволяет расширить возможности формулировки логических условий.

Так, запись a=b (не а равно b) позволяет сравнить операнды а и b как логические величины ИСТИНА или ЛОЖЬ. Если а и b есть ИСТИНА, то результат вычисления логического выражения есть ЛОЖЬ, т.к. левая часть (НЕ ИСТИНА) не эквивалентна правой (ИСТИНА).

Если один из операндов есть ЛОЖЬ, а другой – ИСТИНА, то результат вычисления выражения ( a=b) есть ИСТИНА, т.к. левая часть становится эквивалентной правой.

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

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

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

Определить по заданным координатам (X, Y) положение точки на плоскости – первый квадрант или любой из остальных (второй, третий, четвёртый). Начало координат из рассмотрения исключить.

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

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

X=_ _ , _ _

Y=_ _ , _ _

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

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

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

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

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

· номер каждой ветви задаётся в ней соответствующим равенством (N=1 – для первой и N=234 – для второй);

· условия

и

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

;

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

Следовательно, в качестве метода решения можно использовать простой ветвящийся процесс с проверкой одного составного условия x>0 y>0.