
- •Технология программирования ветвящихся процессов
- •Программирование простых ветвлений
- •Программирование ветвления с элементарным условием
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Оператор безусловной передачи управления
- •Правила составления и использования
- •Операторы условной передачи управления
- •Укороченный оператор условного перехода
- •Правила записи и выполнения
- •Полный оператор условного перехода
- •Правила записи и использования
- •Составление программы по условно-линейной схеме варианта 1
- •Составление программы по условно-линейной схеме варианта 2
- •Программирование ветвлений с составными условиями
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Правила составления и выполнения логических выражений
- •Составление программы по условно-линейной схеме варианта 1
- •Составление программы по условно-линейной схеме варианта 2
- •Программирование сложных ветвлений
- •Программирование сложных многоузловых ветвлений
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Программа по левой условно-линейной схеме
- •Программа по правой условно-линейной схеме
- •Программирование сложных однооузловых ветвлений
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Правила составления и использования
- •Программа по левой условно-линейной схеме «множественное ветвление»
- •Программа по центральной условно-линейной схеме «множественное ветвление»
- •Программа по правой условно-линейной схеме «последовательное ветвление на два»
- •Заключение
- •Вопросы для контроля
-
Программирование ветвлений с составными условиями
Составное – условие одновременной проверки нескольких операций отношения (логических величин).
В математике запись составных условий осуществляется символами:
–
логическое умножение (И);
–
логическое сложение (ИЛИ);
–
отрицание (НЕ).
Например, условием
нахождения точки с координатами x, y в
1-м квадранте будет: x>0y>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>0y>0.
Составление алгоритма решения
Элементарность математической модели позволяет выполнить стандартный вариант алгоритма решения в один шаг (рис. 4.5). Для дальнейшего программирования полученная стандартная схема дополнена двумя условно-линейными вариантами алгоритма (рис. 4.6).
Программирование задачи
Программирование задачи требует предварительного овладения правилами записи составных логических выражений на конкретном языке программирования.
Вариант 1 Вариант 2
Рис. 4.5. Схема Рис. 4.6. Условно-линейные
алгоритма варианты схемы
В Си/Си++, как и в математике, существует возможность записи сложных логических выражений, при этом каждому из логических символов соответствует определённое обозначение по типу операций отношения (табл. 4.5).
Таблица 4.5
Обозначение в математике |
Обозначение в Си/Си++ |
|
&& | | ! |
Общая структура логического выражения имеет вид:
АВ
[
C
.
. .
Z]
, где А В . . . Z – логические операнды (ИСТИНА, ЛОЖЬ);
.
. .
–
логические операции (И, ИЛИ).
[ ] – признак необязательности содержимого.
Структура простейшего логического выражения аналогична приведенной для операций отношения
АВ
, где А и В – логические операнды (ИСТИНА, ЛОЖЬ);
– логическая
операция (И, ИЛИ).