Операторы ветвления
Операторы
ветвления используются для выполнения того или иного блока кода в зависимости от
некоторого условия. К таким операторам в языке C относятся if-else и switch-case.
Компилятор
может интерпретировать ноль, как " ложно ", и не ноль, как
"истину ".
Логические
операции могут объединять несколько проверяемых условий. Например:
if((выражение1)&&((выражение2)||(выражение3)))
{
/* Код программы здесь будет выполняться если:
Выражение1 "Истина" (значит не ноль), и
хотя бы одно из выражений 2 и 3 тоже "Истина" (значит не ноль).*/
};
Подробнее о
логических операциях обязательно
прочитайте по
линку в низу 2-й части этой страницы!
Оператор if-else
В
простейшем случае оператор if-else имеет
следующую структуру:
if (условное_выражение)
{
блок_кода_1;
}
else
{
блок__кода_2;
}
Если
условное выражение истинно, то выполняется блок кода 1, в противном случае —
блок кода 2. При этом в качестве блока кода 2 допускается использовать
последовательность операторов else-if:
if
(выражение1)
{
блок_кода_1;
}
else
{
if
(выражение2)
{
блок_кода_2;
}
else
{
if (выражениеЗ)
{
блок_кода_3;
}
else
{
блок_кода_4;
}
}
}
В
данном случае каждое выражение будет вычисляться поочередно до тех пор, пока не
будет найдено выражение, давшее истинный результат. Если же результаты вычислений
всех выражений окажутся ложными, то будет выполнен блок кода 4.
В
тех случаях, когда при ложных результатах всех условных выражений не требуется
выполнять никаких действий, можно опустить завершающий блок кода вместе с
последней ветвью else.
Вместо
оператора if-else можно
использовать условные выражения. Так, конструкцию вида
if
(условие) блок_кода_1; else блок_кода_2;
можно
заменить следующим условным выражением:
условие
? блок_кода_1 : блок_кода 2;
Например:
(а == 1) ? b
= а*3 : b = 0; //Если а=1, то b = а*3, иначе b = 0.
Оператор switch-case
В
оператора if-else можно
использовать только выражения, которые сводятся к значению TRUE или FALSE. В тех случаях, когда необходимо применять
выражения, дающие произвольный числовой результат, удобнее воспользоваться
оператором switch-case. Этот
оператор позволяет с помощью некоторой переменной выбирать одно из выражений,
соответствующее заданной константе. Его синтаксис:
switch (выражение)
{
case константа-выражение1 : блок_кода
case константа-выражение2 : блок_кода
case константа-выражениеЗ :
блок кода
default: блок_кода
}
Например
код
If (а == 1) b
= а*3; else b = 0; //Если а=1, то b = а*3, иначе b = 0
можно заменить
кодом:
switch (a)
{
case 1 : b = a * 3; break;
case 2 : b = a + 10; break;
case 3 : b = 0; break;
default;
}
Оператор
break приводит к немедленному выходу из блока switch. Если по каким-то причинам необходимо продолжить проверку
соответствия выражения выбора тем константам, которые указаны в ветвях case, следует убрать операторы break.
Ко
всему прочему, ветви case можно каскадировать. Такой прием особенно удобен в тех случаях,
когда нужно, например, проверить введенный символ, не заботясь о том,
представляет ли он прописную букву или строчную, или когда нужно получить одну
и ту же реакцию на несколько разных чисел. Рассмотрим это на примере фрагмента
некоторой абстрактной программы:
switch (input)
{
case
'a'
: case
'A'
:
DoA();
break;
case
'b'
: case
'B'
:
DoB();
break;
case
'0'
: case
'1'
:
case
'2' : case '3' : Do0123(); break;
case
'4'
: case
'5'
:
case
'6' : case '7' : D04567(); break;
default : DoDefault(); break;