Программа разветвляющейся структуры обязательно содержит условия, в зависимости, от которых предусматривают выбор одной из нескольких последовательностей операторов (ветвей). Для организации разветвлений в программах используются операторы перехода, условий и выбора. Рассмотрим их конструкции и применение.
3.2Оператор безусловного перехода
Оператор безусловного перехода вызывает передачу управления оператору, которому предшествует метка. Общий вид такой:
goto метка;
Метка должна быть описана в разделе label. Объявление метки имеет вид: label метка;
Допускается объявить список меток:
label метка1, метка2, метка3;
Между меткой и данным оператором можно включить один или несколько пробелов.
label 10, М2
goto М2;
Оператор, следующий непосредственно после оператора goto, всегда должен иметь метку (иначе он никогда не будет выполнен).
Между словами go и tо пробел не допускается.
При использовании элементов перехода должны соблюдаться следующие правила:
C++ | Разветвляющийся алгоритм (оператор условия if)
Все метки, используемые в блоке, должны быть описаны, причем каждая не более одного раза.
Метка, указанная в операторе перехода, должна помечать оператор, находящийся в том же блоке, что и сам оператор перехода. Т.е. не допускаются переходы из внешних процедур во внутренние и наоборот.
Переход внутрь структурного оператора может вызвать непредсказуемые эффекты, хотя компилятор не выдает сообщения об ошибке. Использование безусловных передач управления в программе считается теоретически избыточным и подвергается серьезной критике, так как поощряет создание малопонятных и трудно модифицируемых программ, которые вызывают большие сложности при отладке и сопровождении. При использовании операторов перехода рекомендуется соблюдать следующие правила:
следует стремиться применять операторы перехода (если кажется невозможным обойтись без них) для передачи управления только ВНИЗ по тексту программы (вперед); при необходимости передачи управления “назад” следует использовать операторы цикла.
расстояние между меткой и оператором перехода на нее не должно превышать одной страницы текста (или высоты экрана дисплея).
Оператор условного перехода IF
Полная форма условного оператора имеет вид:
if < логическое_выражение >then оператор_1 [ else оператор_2];
Если логическое выражение истинно, то выполняется оператор 1; иначе выполняется оператор 2. Квадратные скобки в записи полной формы условного оператора означают, что конструкция else с оператором 2 может отсутствовать. В этом случае имеем краткую форму условного оператора:
if логическое выражение_ then оператор 1.
if A>25 then Y: =X-6;
В этом фрагменте представлено два независимых оператора. Один из них условный, другой оператор присваивания. Если условие А>25 истинно, то вычисляется значение Y и происходит передача управления на вычисления значения Z.
Если условие А>25 ложно, т. е. А? 25, то сразу выполняется оператор присваивания Z=SUM+1.
разветвляющиеся программы
Целесообразно при написании программ использовать следующую форму записи оператора if:
if логическое выражение then
Else
Следует помнить, что перед else точка с запятой не ставится.
Оператор 1,2-это простые или составные операторы. Если логическое выражение истинно, то выполняется оператор 1, иначе — оператор 2 (или следующий за if оператор, если else отсутствует). В качестве операторов 1,2 могут использоваться другие операторы if. В этом случае каждое else относится к ближайшему слева if, не имеющему else.
Условные операторы имеют вложенную конструкцию, когда после then или else используется также условный оператор. При этом справедливо следующее правило: else всегда относится к ближайшему слева оператору if.
Действие условного оператора можно расписать путем использования составного оператора. В этом случае после слов then и else могут быть составные операторы;
if < логическое_выражение>then
Begin
End
Else
Begin
End
Перед служебным словом else не ставится знак точки с запятой. Внутри составных операторов могут быть также условные операторы, содержащие простые или составные операторы.
Для программной реализации этих вычислений можно использовать вложенную конструкцию условного оператора.
if x>0 then
if x>=1 then
Else
Else
if X>=1 then
Else
if X>0 then
Else
Второй вариант записи более предпочтителен с точки зрения удобства чтения и наглядности программы.
Пример 2. Запишем оператор if для следующей алгебраической схемы:
if A=B then
Else
Else
Заметим, что точка с запятой ставится в конце оператора. Этот же оператор можно записать с использованием трех операторов if:
if (A=B) and (Cthen X: =1;
if (A=B) and (C>=D) then X: =2;
if A<>B then X: =3;
В этом примере наличие скобок в логических выражениях операторов if является обязательным, так как операции сравнения имеют более низкий приоритет, чем логические операции. Ввиду этого следующий оператор if не приведет к желаемой цели
if A=B and C=D then
В состав условного оператора может входить только один оператор. Если в какую либо ветвь требуется вставить несколько операторов, то они объединяются в один составной оператор, для чего в начале записывается слово begin (начало), а в конце служебное слово end (конец).
Пример 3. Составить программу для вычисления следующего выражения:
где a=2, 34*10; b=17, 2
program raz1;
Const
Var
K, K1, K2: real;
Begin
if A>B then
if (A>1) and (A<=B) then
Writeln (‘ Результат не определен ‘)
Else
Write (‘ K=’, k)
end.
Другой менее удачный вариант этой же программы:
Program raz2;
label 10;
Const
Var
K: real;
Begin
if A>B then
if (A>1) and (A<=B) then
Begin
write (‘ Результат не определен’);
goto 10;
end;
Write(‘ K=’, K);
end.
Оператор выбора CASE
2. Ветвление
Ветвлением называется алгоритмическая структура, в которой выбирается один из возможных путей выполнения алгоритма с непременным выходом на общее продолжение.
Каждый путь называется ветвью алгоритма .
Существует полное и неполное ветвление.
Программный код в Pascal и Python
Язык программирования Pascal
Полное ветвление
Неполное ветвление
if then
else
if then
Язык программирования Python
Полное ветвление
Неполное ветвление
if :
else:
if :
Алгоритмическая структура «Выбор»
В алгоритмической структуре «Выбор» выполняется одна из нескольких последовательностей команд при истинности соответствующего условия.
Существуют следующие алгоритмические структуры «Выбор».
Рис. (3). Структура «Выбор»
Рис. (4). Структура Case
Программный код в Pascal и Python
Источник: www.yaklass.ru