
- •1. Краткие теоретические сведения
- •1.1. Операции сравнения и логические операции
- •1.1.1. Операции сравнения
- •1.1.2. Логические операции
- •1.1.3. Логические выражения
- •1.2. Приоритет операций
- •1.3. Разветвляющийся вычислительный процесс
- •1.5. Оператор перехода
- •1.6. Пустой оператор
- •1.7.1. Короткая форма условного оператора
- •1.7.2. Полная форма условного оператора
- •1.9. Понятие составного оператора (группы операторов)
- •1.10.1. Проверка двух или более условий
- •1.10.5. Обработка нескольких условий
- •1.10.6. Вложенный условный оператор
- •1.11. Рекомендации по заданию исходных значений переменным
- •1.11.1. Операторы присваивания
- •1.11.2. Операторы ввода
- •1.11.3. Инициализация переменных
- •1.11.4. Именованные константы
- •1.12. Оператор множественного выбора switch
- •1.13. Использование отступов для улучшения удобочитаемости вашей программы
- •2. Задание
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1
- •2.4.1.1. Условие задания
- •2.4.2. Задание 2
- •2.4.3. Задание 3
- •2.4.4. Задание 4
- •2.5. Задания для выполнения дома
- •2.5.1. Задание 1
- •2.5.2. Задание 2
- •3.6. Пример программы
- •3.7. Типичные ошибки при выполнении работы
- •2.5.3. Задание 3
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Операции сравнения и логические операции 2
- •1.1.1. Операции сравнения 2
1.5. Оператор перехода
Любой оператор программы на С++ может быть снабжен меткой или несколькими метками.
С помощью метки данный оператор выделяется (находится) среди других операторов.
В качестве меток могут использоваться любые идентификаторы, примеры меток: M, M1, АА, М11, FINISH, START. Метка ставится перед оператором и отделяется от него двоеточием. Пусть, например, требуется меткой М2 пометить оператор присваивания X = X + 1; Это следует записать в виде
М2: X = X + 1;
Операторы снабжаются метками обычно для того, чтобы на них можно было передать управление с помощью оператора перехода.
В С++ установлено, что операторы программы выполняются в естественной последовательности, то есть в порядке их написания слева направо и сверху вниз. Однако очень часто возникает необходимость нарушить естественный порядок выполнения операторов программы, например, пропустить группу операторов или некоторые из них выполнить повторно. Для этой цели в С++ предусмотрен специальный оператор, называемый оператором перехода (его называют также оператором безусловной передачи управления).
Синтаксис оператор перехода в С++:
[метка:] goто константа типа метки;
Ключевое слово goто пишется слитно.
Управление разрешается передавать на метки только внутри данной функции.
Оператор перехода обеспечивает безусловную передачу управления на оператор с указанной меткой, начиная с которого выполняется новая последовательность операторов.
Пример 6.1.
Требуется составить программу суммирования выражения
где
x = 0,534.
Программа может иметь вид
у = 0;
i = 1;
SUM: у = у + pow(x, i);
i = i + 1;
if i <= 10 goto SUM;
Данный пример иллюстрирует применение оператора перехода для программирования циклических процессов, являющихся разновидностью разветвляющихся вычислительных процессов.
Следует отметить, что обычно (чаще всего) оператор перехода используется совместно с условным оператором if для организации разветвляющихся и циклических вычислительных процессов.
Пример 6.2.
Описать алгоритм, представленный на рис. 6.1
Рис. 6.1. Блок-схема алгоритма примера 6.2
Фрагмент программы на языке С++, реализующий алгоритм, представлений на рис. 6.1, имеет вид:
if n >= 0 goto M1;
else goto M2;
M1: p = n + b; s = a*a +l; x = sqrt(p + s); goto M3;
M2: x = n*n – b;
M3: z = x – r*r;
Данный оператор – очень мощное и небезопасное средство управления поведением программы. Использовать его нужно крайне осторожно, так как, например, "прыжок" внутрь цикла (обход кодов инициализации) может привести к трудно локализуемым ошибкам.
Метки локализуются в сфере действия функции. Описания и определения, после которых помещен символ "точка с запятой", считаются операторами.
Перед пустым оператором также имеет право стоять метка.
Метки можно размещать во всех точках программы, где синтаксис разрешает использовать операторы.
Внимание: Использование оператора goto не было одобрено разработчиками алгоритмических языков еще в 1960-х годах. Он существенно затрудняет контроль последовательности выполнения операторов программы, а также является источником ошибок при последующих модификациях. Любая программа, в которой был использован оператор goto, может быть переписана без него.
Правило: Для оператора goto существует только одно правило – никогда не используйте оператор goto в своих программах!