Выбрать главу

1 if (input == 0x00)

2 {

3  output = 0x0F;

4 }

5 …………………

В этом примере переменная input проверяется на равенство 0. Если текущее значение этой переменной действительно равно 0, то выполняется оператор, записанный в строке 3. Служебное слово else в данном примере отсутствует, поэтому, если текущее значение переменной input не равно 0, то программа осуществляет переход к строке 5. В качестве первого и второго операторов в условном операторе if можно применять блоки операторов. Приведенный выше пример может быть записан в сокращенной форме, без выделения фигурными скобками блока операторов условно выполняемых операторов:

1 if (input == 0x00)

2  output = 0x0F;

Применяя конструкции с оператором if, полезно знать, что программа принимает решение о выполнении того или иного блока операторов по значению внутренней логической переменной, которая устанавливается в 0 или в 1 по результату анализа заключенного в скобки условного выражения. Поэтому в качестве выражения условия программист может записать некоторую логическую формулу. В ходе исполнения конструкции if ее значение будет вычислено, по результату вычисления (0 или 1) будет принято решение о выполнении той или иной группы операторов. Частным случаем логического выражения условия является запись:

1 if (1)

2  output = 0x0F;

Понятно, что действие output = 0x0F будет выполняться всегда, что иногда полезно на этапе отладки программы.

3.9.2. Оператор IF-ELSE

Многие алгоритмы управления требуют применения оператора if-else, который позволяет выполнить ту или иную группу операторов, в зависимости от результата анализа условия, следующего в скобках за оператором if. Допустим, встраиваемая система должна осуществлять управление кондиционером, анализируя текущее значение температуры воздуха. Эта задача может быть решена посредством записи следующего фрагмента программы:

1 if (input > 78) // если температура по шкале Фаренгейта

                  //больше 78

2  air_condision = on; // то включить кондиционер

3 else

4  air_condision = off; //иначе выключить кондиционер

В этом примере переменная input содержит в себе код температуры окружающей среды, который программа должна подвергнуть сравнению с пороговым значением 78. Учитывая, что в процессе вычисления условия оператора if, программа возвращает значение внутренней логической переменной, то же действие можно записать, используя обратную логику:

1 if (input <= 78) //если температура меньше или равна 78

2  air_condision = off; //то выключить кондиционер

3 else

4  air_condision = on; //иначе включить кондиционер

3.9.3. Оператор IF-ELSE IF-ELSE

Операторы if могут быть вложенными. В этом случае служебное слово else (если оно используется) связывается с последним оператором if, с которым ещё не было связано else. Во избежание путаницы с вложенными операторами, лучше пользоваться фигурными скобками или структурировать текст отступами для явного указания того, к какому из операторов if принадлежит слово else. Примеры применения вложенных операторов if– else приведены ниже:

1 if (input > 78)

2  air_condision = on; //включить кондиционер, если жарко

3 else

4  if (input > 58)

5   fan = on; //включить вентилятор,если душно, но

              //не жарко

6  else

7   heater = on; //включить обогреватель, если прохладно

8 …………

В этом примере программа должна различить, к какому из трех диапазонов принадлежит текущее значение температуры окружающей среды. Если температура превышает 78 градусов по Фаренгейту, то должен быть включен кондиционер. Если температура меньше 79 градусов, но больше 58, то следует оставить включенным только вентилятор, а если температура равна или ниже 58 градусов, то следует включить обогреватель.

Те же управляющие действия могут быть записаны с применением другой конструкции операторов if-else:

1 if (input > 78)

2  air_condision = on; //включить кондиционер, если жарко

3 if (input > 58)

5  fan = on; //включить вентилятор,если душно и жарко

6 else

7  heater = on; //включить обогреватель, если прохладно

Отличие этого варианта программы от предыдущего состоит в том, что оба оператора if–else стали независимыми друг от друга. А в предыдущем примере второй оператор if– else был вложен в первый. Это конструктивное изменение программы внесло коррективы в реализуемый ею алгоритм управления. Так в первом варианте при значении переменной input=80 выражение первого оператора if окажется истинным и будет включен кондиционер. И далее управление будет передано строке 8, т.е. вторая конструкция if будет пропущена из рассмотрения. Во втором случае при том же значении переменной input=80 после проверки первого условия будет также включен кондиционер, но затем управление будет передано второму оператору if. Поскольку второе условие также выполняется, то вентилятор будет также включен.