Views: 1222
Оператор if else
Мы уже много раз в примерах приводили строчки с использованием оператора IF. Настало время более подробно описать его работу и привести несколько примеров для практического использования.
Синтаксис оператора
if (Условие) { Блок инструкций 1 }
Если условие истинно выполняется блок инструкций. В качестве условий может использоваться от переменной до выражения. Блок инструкций может содержать неограниченное количество выражений.
Примеры:
// If ( too == 5) LATB=5; // если переменная = 5, то в порт LATB загрузиться значение 5. If ( too == 5 && boo == 13) // если выражение истинно { // если выражение выполнить блок команд LATB=5; LATC=9; } //
При помощи комбинации IF else можно использовать алгоритм ветвления в зависимости от условия. А используя множественные комбинации IF else/ IF else строить разветвленные логические программы.
Синтаксис оператора
if (Условие) { Блок инструкций 1 (БИ1) } else { Блок инструкций 2 (БИ2) }
Если условие истинно выполняется БИ1, если ложно БИ2.
Комбинации на 2,3,4 и более условий.
if (Условие 1) { Блок инструкций 1 (БИ1) } else if (Условие 2) { Блок инструкций 2 (БИ2) } else { Блок инструкций 3 (БИ3) } //--------------------------------------------------------- if (Условие 1) { Блок инструкций 1 (БИ1) } else if (Условие 2) { Блок инструкций 2 (БИ2) } else if (Условие 3) { Блок инструкций 3 (БИ3) } else { Блок инструкций 4 (БИ4) }
Пример это функция опроса двух кнопок и возвращающая код нажатой клавиши (только один раз в момент нажатия).
// функция обработки нажатия тактовой кнопки char KLAVA (void) { if (RA4==0) // кнопка 01 { if (KLNAJ!=1) // проверяем бит, кнопка была нажата до этого? { _delay(10000); // подождем 10 мСек. задержка для устранения "дребезга" if (RA4==0) // и еще раз проверим, кнопка нажата { // если Да KLNAJ=1; return 1; // одно нажатие } else return 0; // помеха } else return 11; // удержание кнопки } else if (RB0==0) // кнопка 02 { if (KLNAJ!=1) // проверяем бит, кнопка была нажата до этого? { _delay(10000); // подождем 10 мСек. задержка для устранения "дребезга" if (RB0==0) // и еще раз проверим, кнопка нажата { // если Да KLNAJ=1; return 2; // одно нажатие } else return 0; // помеха } else return 12; // удержание кнопки } else { KLNAJ=0; return 0; } // кнопка не нажималась сбросим бит }
Как видно из приведенных конструкций на этом принципе можно строить разнообразные ветвления программ в зависимости от создавшихся условий. Конечно комбинация IF else удобная конструкция для создания ветвлений, но иногда приводит к трудности по чтению текста программы.
Оператор множественного выбора switch case break default
Оператор switch представляет удобную альтернативу if else при работе с множественным выбором, хотя частенько комбинации из if else дают более компактный код.
Синтаксис оператора:
switch ( test ) { // загрузка значения переменной, функции или выражения case 1 : // процесс01 если test == 1 ... break; // прерывает дальнейшее выполнение процесс01 case 5 : // процесс02 если test == 5 ... break; // прерывает дальнейшее выполнение процесс02 default : // оператор может отсутствовать // процесс если ни одно условие оператора case не найдено ... }
Количество элементов case может быть много, элемент default может быть отсутствовать.
Конструкция case может иметь вид
case 1 : case 10: // процесс если значение == 1 или 10 break;
такая конструкция дает возможность выполнять условие ИЛИ для 2 и более значений.