Views: 1263
Оператор 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 и более значений.