
- •Технология программирования ветвящихся процессов
- •Программирование простых ветвлений
- •Программирование ветвления с элементарным условием
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Оператор безусловной передачи управления
- •Правила составления и использования
- •Операторы условной передачи управления
- •Укороченный оператор условного перехода
- •Правила записи и выполнения
- •Полный оператор условного перехода
- •Правила записи и использования
- •Составление программы по условно-линейной схеме варианта 1
- •Составление программы по условно-линейной схеме варианта 2
- •Программирование ветвлений с составными условиями
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Правила составления и выполнения логических выражений
- •Составление программы по условно-линейной схеме варианта 1
- •Составление программы по условно-линейной схеме варианта 2
- •Программирование сложных ветвлений
- •Программирование сложных многоузловых ветвлений
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Программа по левой условно-линейной схеме
- •Программа по правой условно-линейной схеме
- •Программирование сложных однооузловых ветвлений
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Правила составления и использования
- •Программа по левой условно-линейной схеме «множественное ветвление»
- •Программа по центральной условно-линейной схеме «множественное ветвление»
- •Программа по правой условно-линейной схеме «последовательное ветвление на два»
- •Заключение
- •Вопросы для контроля
Программирование задачи
Программирование указанных в алгоритме переходов требует использования специальных управляющих операторов Си/Си++. Таковыми являются операторы передачи управления.
Операторы передачи управления – предписатели нарушения естественного порядка выполнения операторов в программе.
По принципу действия они делятся на условные и безусловные.
Операторы условной передачи управления (условного перехода) позволяют сохранять (нарушать) естественный порядок выполнения программы в зависимости от результатов проверки условий.
Операторы безусловной передачи управления (безусловного перехода) нарушают естественный порядок реализации программы всегда (безусловно).
Рассмотрим основные операторы передачи управления.
-
Оператор безусловной передачи управления
Оператор безусловной передачи управления – предписатель для безусловного нарушения естественного хода выполнения программы в соответствии с требованием алгоритма.
Он реализует в программе указанные в алгоритме линии (стрелки) беспроверочных переходов. Например, переходы от блоков 6 к блокам 8 на условно-линейных схемах задачи об удельных нагрузках (рис. 4.4).
Структура оператора:
goto m;
, где goto – ключевое слово (идти к);
m – метка оператора, которому передаётся управление;
; – признак простого оператора.
Метка – буквенно-цифровое обозначение, позволяющее выделить (пометить) требуемый оператор в ряду других.
Правила составления и использования
-
Под меткой понимается идентификатор аналогичный имени переменной.
-
Идентификатор метки составляется пользователем произвольно, в ряду других меток программы.
-
Указанная в операторе goto метка записывается перед помечаемым оператором, отделяясь от него двоеточием.
-
Оператор, помеченный меткой m, может располагаться в соответствии с требованием алгоритма решения выше или ниже самого оператора goto, как указано в следующих фрагментах программы:
-
. . .
goto f3;
. . .
f3:v=0.36;
. . .
met2:scanf(. . .);
. . .
goto met2;
. . .
goto t;
t:x1=x;
. . .
В первом фрагменте управление передаётся от оператора goto f3 вниз – оператору v = 0.36;, перед которым проставлена его метка. При этом расположенная между ними часть программы (последовательность операторов) выполнена не будет. Во втором - управление передаётся вверх на повторный ввод переменных. В третьем - управление передаётся следующему за goto оператору, что возможно, но бессмысленно, т. к. в этом случае естественный порядок следования операторов не нарушается.
-
Оператор, записанный под goto, должен быть помечен меткой другого оператора управления, иначе участок программы, записанный ниже goto, никогда не будет выполняться:
.
. .
От
другого
goto A;
оператора
B:x1=23.;
управления . . .
A:x2=x - 15.;
. . .
-
Метка m может проставляться только перед простым оператором. При необходимости передать управление на начало (конец) составного оператора (фигурную скобку) используется специальный пустой оператор (;). Он записывается над скобкой и помечается нужной меткой. Например:
-
goto M1;
. . .
M1:;
{. . .
goto M2;
. . .
M2:;
}. . .
-
Внимание! Использование оператора безусловной передачи управления допускается, но не поощряется правилами структурного программирования, т.к. позволяет создавать нестандартные структуры с немотивированными передачами управления.