Последовательность инструкций N
Последовательность инструкций 2
Последовательность инструкций 1
Объявления
Else
If (выражение-условие )
инструкция 1;
инструкция 2;
Если значение выражения-условия отлично от нуля, выполняется инструкция1 (блок1), при нулевом значении выражения-условия выполняется инструкция 2 (блок2).
Алгоритмическая структура, соответствующая этому оператору, показана на рис.2.3.
Рис. 2.3. Алгоритмическая структура выполнения полной формы оператора ветвления
Пример 28. Полная форма условного оператора. Вычисление корней квадратного уравнения
if (d>=0)
{
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
cout<< “\nx1=”<<x1<<“x2=”<<x2;
}
else cout<<“\nРешения нет”;
Допускается использование вложенных инструкций if. Инструкция if может быть включена в конструкцию if или в конструкцию else другой инструкции if:
Пример 29.
int main ( ) { int t = 2, b = 7, r = 3; if (t > b) { if (b < r) r = b; } else r = t; return 0; }
В результате выполнения программы перед инструкцией возврата значение переменной r станет равным 2.
2.Переключатель (инструкция выбора).
Формат инструкции следующий:
switch (выбирающее выражение)
{
case константа 1:
case константа 2:
…
case константа N:
default:
последовательность инструкций
}
Все последовательности инструкций, следующие за case, должны заканчиваться одной из инструкцией: break, return или goto; как правило, используется break. Если же удалить эту инструкцию, допустим, из последовательности инструкций 1, то после неё начнёт выполняться последовательность 2 и т. д.
Пример 30.
int i = 2; switch (i) { case 1: i += 2; case 2: i *= 3; case 0: i /= 2; case 4: i -= 5; default: ; }Последовательности инструкций (точнее, их отсутствие) без прерывающих инструкций могут использоваться для выполнения одних и тех же действий для нескольких вариантов выбора:
Пример 31.
char ch;
int aCount = 0;
int bCount = 0;
…
switch (ch)
{
case ‘a’:
case ‘A’:
++aCount;
break;
case ‘b’:
case ‘B’:
++bCount;
break;
}
Использование инструкции break позволяет в необходимый момент прервать последовательность выполняемых инструкций в теле switch путем передачи управления инструкции, следующей за switch.
Пример 32.
char OP; int x, y, z; switch (OP) { case '+': x = y + z; break; case '-': x = y - z; break; case '*': x = y * z; break; case '/': x = u / z; break; default: ; }Отметим, что в теле инструкции switch можно использовать вложенные инструкции switch, при этом с ключевыми словами case можно использовать одинаковые константные выражения.
Пример 33.
… switch (a) { case 1: b = c; break; case 2: switch (d) { case 0: f = s; break; case 1: f = 9; break; case 2: f -= 9; break; } case 3: b -= c; break; … }