Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
интегрирование Глава 4.doc
Скачиваний:
6
Добавлен:
12.11.2018
Размер:
1.08 Mб
Скачать

Программирование задачи

Программирование указанных в алгоритме переходов требует использования специальных управляющих операторов Си/Си++. Таковыми являются операторы передачи управления.

Операторы передачи управления – предписатели нарушения естественного порядка выполнения операторов в программе.

По принципу действия они делятся на условные и безусловные.

Операторы условной передачи управления (условного перехода) позволяют сохранять (нарушать) естественный порядок выполнения программы в зависимости от результатов проверки условий.

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

Рассмотрим основные операторы передачи управления.

        1. Оператор безусловной передачи управления

Оператор безусловной передачи управленияпредписатель для безусловного нарушения естественного хода выполнения программы в соответствии с требованием алгоритма.

Он реализует в программе указанные в алгоритме линии (стрелки) беспроверочных переходов. Например, переходы от блоков 6 к блокам 8 на условно-линейных схемах задачи об удельных нагрузках (рис. 4.4).

Структура оператора:

goto m;

, где goto – ключевое слово (идти к);

m – метка оператора, которому передаётся управление;

; – признак простого оператора.

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

Правила составления и использования

  1. Под меткой понимается идентификатор аналогичный имени переменной.

  2. Идентификатор метки составляется пользователем произвольно, в ряду других меток программы.

  3. Указанная в операторе goto метка записывается перед помечаемым оператором, отделяясь от него двоеточием.

  4. Оператор, помеченный меткой m, может располагаться в соответствии с требованием алгоритма решения выше или ниже самого оператора goto, как указано в следующих фрагментах программы:

. . .

goto f3;

. . .

f3:v=0.36;

. . .

met2:scanf(. . .);

. . .

goto met2;

. . .

goto t;

t:x1=x;

. . .

В первом фрагменте управление передаётся от оператора goto f3 вниз – оператору v = 0.36;, перед которым проставлена его метка. При этом расположенная между ними часть программы (последовательность операторов) выполнена не будет. Во втором - управление передаётся вверх на повторный ввод переменных. В третьем - управление передаётся следующему за goto оператору, что возможно, но бессмысленно, т. к. в этом случае естественный порядок следования операторов не нарушается.

  1. Оператор, записанный под goto, должен быть помечен меткой другого оператора управления, иначе участок программы, записанный ниже goto, никогда не будет выполняться:

. . .

От другого goto A;

оператора B:x1=23.;

управления . . .

A:x2=x - 15.;

. . .

  1. Метка m может проставляться только перед простым оператором. При необходимости передать управление на начало (конец) составного оператора (фигурную скобку) используется специальный пустой оператор (;). Он записывается над скобкой и помечается нужной меткой. Например:

goto M1;

. . .

M1:;

{. . .

goto M2;

. . .

M2:;

}. . .

  • Внимание! Использование оператора безусловной передачи управления допускается, но не поощряется правилами структурного программирования, т.к. позволяет создавать нестандартные структуры с немотивированными передачами управления.