В предыдущей статье мы разобрали работу оператора if, а в этой статье мы рассмотрим работу оператора if вместе с else.
Добавление else дает больше возможностей для принятия решений в операторе if.
Использование if-else
Если мы используем оператора if, то код в теле оператора if выполняется только тогда, когда оператор if принимает значение истина. Если значение равно ложь, выполнение программы пропускает код в теле оператора if и продолжается ниже тела оператора if.
При добавлении оператора else, код в теле оператора else будет выполняться только в том случае, если соответствующий оператор if принимает значение ложь.
В следующем коде показан синтаксис конструкции if-else:
1 2 3 4 |
if (conditional expression) { } else { } |
В приведенном ниже коде показано, как функционирование оператора if сравнивается с функционированием конструкции пары if-else:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Оператор "if" if (conditional expression) { // Код, помещенный здесь, выполняется, только если условное выражение истинно } // Независимо от того, является ли условное выражение истинным или ложным, // размещенный здесь код будет выполняться // Совместная работа if и else if (conditional expression) { // Тело оператора if между {и} // Работает как обычный оператор if, размещенный здесь код будет // выполняться только в том случае, если условное выражение оценивается как истина } else { // Тело оператора "else" между {и} // Код, помещенный здесь, всегда будет выполняться, если условное выражение // из оператора "if" принимает значение ложь } // Код, помещенный под парой if и else, всегда будет выполняться независимо от того, // было ли условное выражение оценено как истинное или ложное |
Когда условное выражение истинно :
- Код в теле оператора if выполняется.
- Код в теле оператора else не запускается.
Когда условное выражение оценивается как ложное :
- Код в теле оператора if не запускается.
- Код в теле оператора else запускается.
Пример скетча if-else
В скетче ниже показан пример использования конструкции if-else. Светодиод загорится, если символ «a» будет отправлен в Arduino с помощью окна Монитор порта. Если отправляется любой другой символ, кроме «a», тогда выражение if оценивается как ложное, и выполняется код в блоке else, который выключает светодиод.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
void setup() { Serial.begin(9600); pinMode(13, OUTPUT); // Светодиод на пине 13 } void loop() { char rx_byte; if (Serial.available() > 0) { // доступен ли символ? rx_byte = Serial.read(); if (rx_byte == 'a') { // включаем светодиод, если получен символ 'a' digitalWrite(13, HIGH); } else { // выключаем светодиод, если получен любой символ, кроме 'a' digitalWrite(13, LOW); } } } |
Примечания к примеру скетча if-else
Вложенная конструкция if-else
Конструкция if-else, в приведенном выше примере, фактически помещается в тело оператора if. Это называется «вложением», а значит мы должнв говорить, что if-else вложено внутрь первого оператора if.
Чтобы было понятнее, вот вложенная конструкция if-else:
1 2 3 4 5 6 7 8 |
if (rx_byte == 'a') { // включаем светодиод, если получен символ 'a' digitalWrite(13, HIGH); } else { // выключаем светодиод, если получен любой символ, кроме 'a' digitalWrite(13, LOW); } |
Приведенный выше код вложен в тело оператора if:
1 2 |
if ( Serial . available ()> 0) { // доступен ли символ? } |
Как это работает
Этот примерный скетч основан на скетче из предыдущей статьи. Вместо выключения светодиода при отправке только «b», светодиод отключается при отправке любого символа, кроме «a».
Символ «а» включит светодиод, как и в предыдущем скетче, т.к. условное выражение if принимает значение истина при получении «а». Любой другой полученный символ приведет к тому, что условное выражение будет оцениваться как ложное. Когда выражение оценивается как ложное, тело оператора if не запускается, но вместо этого выполняется тело оператора else, которое выключает светодиод.
Вывод
Эта статья написана как продолжение предыдущей статьи. Мы не захотели смешивать все конструкции операторов в одной статье, иначе вы просто могли бы просто запутаться. Изучать работу операторов и их взаимодействие лучше постепенно. В следующей статье мы рассмотрим работу конструкции if-else-if.
С Уважением, МониторБанк