Домашняя страница библиотеки_c AVR

Синтаксис языка C

Библиотека языка C GNU glibc

 Страницы развития библиотеки_с AVR

Главная страница

Инструкция пользователя

Содержание библиотеки_c

Часто задаваемые вопросы

Содержание по алфавиту

Демонстрационные проекты


 

Операторы ветвления

Операторы ветвления используются для выполнения того или иного блока ко­да в зависимости от некоторого условия. К таким операторам в языке 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;

Hosted by uCoz