Правила записи и выполнения
1. Метка m выбирается произвольно в ряду других меток программы. 2. Оператор, помеченный меткой m в соответствии с требованиями алгоритма, может располагаться как выше, так и ниже оператора if. 3. При выполнении проверяемого условия (результат – ИСТИНА), управление передаётся оператору goto, который в свою очередь передаёт управление оператору, помеченному меткой m, нарушая естественный порядок следования операторов. 4. Если результат проверки есть ЛОЖЬ, сохраняется естественный порядок следования операторов, т.е. управление передаётся оператору, записанному непосредственно под if. Схема выполнения: ЛОЖЬ ИСТИНА
if(Р) goto m; ветвь_НЕТ m:... В качестве ветви НЕТ может использоваться один (простой, составной) или несколько операторов. Например,
В каждом из фрагментов невыполнение проверяемого условия.9>=c (например, при c=1.6) приводит к выполнению ветви «НЕТ», т.е. операторов, записанных непосредственно под if до помеченного меткой М4, а затем и его тоже. Выполнение условия (например, при c=0.4) приводит к реализации оператора goto M4;, который (минуя операторы ветви «НЕТ») передаёт управление оператору с меткой М4. В принципе, возможна реализация условно-линейного варианта полного ветвления (ветвь «НЕТ», затем ветвь «ДА») с использованием укороченного if и двух goto. Структура имеет вид: if(Р) goto m1; ветвь_НЕТ goto m2; m1: ветвь_ДА m2: В качестве ветвей НЕТ (ДА) может использоваться один (простой, составной) или несколько операторов. Например,
В каждом из фрагментов выполнение проверяемого условия (8!= b), например, при b=6 приводит к реализации оператора goto m1;, который (минуя операторы ветви «НЕТ») передаёт управление оператору (операторам) с его меткой m1. Выполняется ветвь «ДА», после чего сохраняется естественный порядок реализации операторов (вывод результатов). Невыполнение проверяемого условия (8!= b), например, при b=8 приводит к выполнению ветви «НЕТ», т.е. операторов, записанных непосредственно под if, включая goto m2; который в свою очередь передаёт управление (минуя операторы ветви «ДА») на вывод результатов (выход из ветвления). Внимание! Использование укороченного оператора условной передачи управления со структурой if(Р) goto m допускается, но не поощряется правилами программирования, т.к. создаёт сложную структуру ветвления с использованием двух меток.
|