Условный оператор

Лекция №4. РАЗВЕТВЛЕННЫЕ АЛГОРИТМЫ ПРОГРАММ

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

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

Одним из операторов, реализующих конструкции принятия решений, является условный оператор. Его формат: if (выражение) оператор;

если оператор, выполняемый при истинности условия (или выражения) –единственный или если таких операторов несколько

if (выражение) {оператор 1; ...; оператор N;} //end if,

В данном случае выражение является любым выражением, значение которого приводимо к целочисленному значению. Если его значение отлично от нуля (истинно), то оператор будет выполняться.

При необходимости сравнить выражение с некоторым значением следует использовать операторы отношения = = или != в виде

if (выражение = = значение) оператор;

или

if (выражение!=значение) оператор;

оператор; может быть как простым, так и составным.

Команда if (выражение!=0) оператор;

эквивалентна команде if (выражение) оператор;

Нельзя писать if (выражение =значение) оператор;

Это одна из наиболее распространенных и трудно обнаруживаемых ошибок. Результатом такого использования операции присваивания = будет сравнение выражения со значением с последующим присваиванием выражению значения, с которым оно сравнивалось. Однако не следует этого делать даже целенаправленно.

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

if (выражение) оператор1; else оператор2;

если после if и else следуют простые (одиночные) операторы, или

if (выражение) { оператор1; оператор2; } else { оператор3; оператор4; },

если операторы составные.

Точка с запятой после закрывающей скобки } не ставится.

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

if (выражение1) оператор1;

else if (выражение2) оператор2;

else if (выражение3) оператор3;

else if(выражениеN) операторN;

else // необязательная часть

оператор_по_умолчанию;

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

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

выражение1? выражение2: выражение3;

Программа вычисляет выражение1: если оно истинно, выполняется выражение2; если ложно, выполняется выражение3, что полностью соответствует действиям, производимым оператором if-else:

if (выражение1) выражение2;else выражение3;

Условный оператор и условное выражение в результате компиляции формируют практически идентичный код. Разница состоит в том, что в случае условного оператора обращение к переменной происходит дважды, следовательно, дважды вычисляется ее адрес, а в случае условного выражения - лишь один раз. С другой стороны, с точки зрения понимаемости программы условный оператор намного лучше.