Разработка программ с ветвлениями (Лабораторная работа № 2), страница 2

Логические операции выполняются в последовательности: ! ® && ® ||. Для изменения приоритета выполнения используются круглые скобки.

Логические операции позволяют строить сложные логические выражения, например,

При использовании сложных логических выражений следует стремиться к их упрощению. При этом могут использоваться два правила де Моргана:

 - инверсия дизъюнкции равна конъюнкции инверсий и

- инверсия конъюнкции равна дизъюнкции инверсий.

3. Операторы if и if-else

Оператор if реализует в языке алгоритмическую конструкцию обход. Его синтаксис имеет вид:

if (<логическое выражение>) <оператор>;

Если логическое выражение имеет значение истина, то <оператор> языка С/С++ выполняется. Если же оно имеет значение ложь, то не выполняется.

По правилам синтаксиса <оператор> может быть либо простым, либо составным – блоком из нескольких операторов, объединенных фигурными скобками { … } .  Каждый из операторов должен заканчиваться ; - точкой с запятой. В конце всей конструкции точка с запятой не является необходимой, хотя и не будет ошибкой (пустой оператор).

При записи оператора if обычно используют следующее форматирование. Если входящий в него оператор один и не очень длинный, то его записывают в той же строке:

...

if (k<n) k++;

...

Если же  входящий оператор длинный, то записывают его в следующей строке со сдвигом на две позиции:

...

if (x>0)

       s =(2*sin(x+M_PI)+a*(b-c))/(exp(-(x*x)/(a+b)-4*(a-b));

     ...

Так же обычно поступают, если входящий оператор является составным:

...

     if (x>0)

       {

       ...

       ...

       ...

       ...

       }

     ...

В оператор if  может входить другой оператор if. Запись

     ...

if (<лв1>)

       if (<лв2>)

         if(<лв3>) <оператор>;

     ...

эквивалентна

     ...

if (<лв1>&&<лв2>&&<лв3>) <оператор>;

...

Оператор if-else реализует бинарное ветвление и имеет следующий синтаксис:

if (<логическое выражение>) <оператор A>; else <оператор B>;

Если логическое выражение истинно, то выполняется оператор A, а если ложно – то оператор B. Каждый из операторов может быть простым или составным.  Форматирование при записи обычно осуществляют следующим образом. Служебное словоelseзаписывают с новой строки под if. Если операторы A и B компактны, то их записывают в тех же соответствующих строках:

     ...

if (<логическое выражение>)   <оператор A>;

else                          <оператор B>;

     ...

При длинных операторах удобна их запись с новой строки со сдвигом на две позиции:

...

if (<логическое выражение>)  

  <оператор A>;

else

  <оператор B>;

     ...

Так же следует форматировать текст, если операторы являются составными:

     ...

if (<логическое выражение>)  

{

  ...

  ...

  ...

  }

else

{

  ...

  ...

  ...

  }

     ...

Форматирование структурных конструкций не является формальным правилом языка, но позволяет делать тексты легко читаемыми и уменьшить вероятность ошибок при их разработке.

Блок if не может быть пустым, но может содержать пустой оператор. Однако использование таких записей нецелесообразно, т.к.

     ...

if (ЛВ);

     else <оператор>

     ...

эквивалентно

     ...

if (!ЛВ) <оператор>

     ...

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