Операторы выбора if и else.

До этого урока, изучая основы программирования для начинающих, мы с вами писали очень простые и скучноватые программы, которые как-то работали, что-то делали, но были абсолютно лишены способности выбирать, как им развиваться. Такие программы называются линейными. Они были, как трамваи: если путь прегражден — стоп. Ни в право, ни влево не свернёшь. Теперь же, хочу всех немного обрадовать — наши программы с сегодняшнего дня будут намного интересней. Мы научимся применять в нашем коде операторы логического выбора if и else и программы приобретут некую интригу, смогут «думать», анализировать и решать, как поступить и какой «дорогой» пойти. То есть теперь программа — это уже не трамвай, а Ваш автомобиль ))) Если дорогу преградили, вы легко можете объехать преграду и определиться, куда ехать дальше.

Ну что же — приступим к нашим операторам выбора (они же условные операторы, они же операторы ветвления). Мы рассмотрим несколько простых примеров, которые помогут вам познакомиться с этими операторами и применять их в дальнейшем уже в более сложных программах.

Пример: Пользователь вводит два числа и программа определяет какое их этих двух чисел большее.

#include <iostream>

using namespace std;

 

int main()

{

setlocale(LC_ALL, "rus");

 

int variable1 = 0;

int variable2 = 0;

 

cout << "Введите первое число: ";

cin >> variable1;

cout << "Введите второе число: ";

cin >> variable2;

 

// сравниваем полученные значения  

// если первое число больше второго - выводим сообщение

// если это будет не так, код в фигурных скобках не выполнится

// и программа перейдет к проверке второго условия if

if (variable1 > variable2)

{

cout << "\nРезультат сравнения: Первое число больше чем второе\n";

}

 

// если и это условие не выполняется - переход к следующему if

if (variable1 < variable2)

{

cout << "\nРезультат сравнения: Второе  число больше чем первое\n";

}

// проверяем значения на равенство. Не забывайте об операторе ==

// если написать variable1 = variable2, то значение

// variable2 запишется в переменную variable1

if (variable1 == variable2)

{

cout << "\nРезультат сравнения: Числа равны\n";

}

 

return 0;

}

До 14-й строки все понятно — пользователь ввел два числа, они записались в соответствующие переменные. Как же их теперь сравнить и показать результат сравнения? Для этого мы применим оператор if (переводится -ЕСЛИ). Пишем if, далее в круглых скобках () записываем условие — сравнение значений переменных (variable1 > variable2). И если variable1 действительно больше variable2 — это условие вернет true (истину). Тогда выполнение программы перейдет к коду, который размещен внутри фигурных скобок {} — строки 21 — 23. То есть на экране мы увидим сообщение, о том что первое число больше второго. Если же условие в круглых скобках () не выполняется (возвращает false (ложь)), то код в фигурных скобках {} будет проигнорирован и выполнение программы продолжится со следующей строки кода под блоком if — со строки 26. Там мы снова проверяем отношение переменных между собой. Все аналогично — если условие истинно — выполнится код этого блока if, если ложно — переход ниже. В строке 33 проверка последнего возможного варианта — проверка на равенство. Обязательно применяем оператор == (равно), а не = (присвоить). Иначе код этого блока if будет работать с ошибкой. Например variable1 = 3, а variable2 = 4 , то если мы ошибочно запишем в условии if (variable1 = variable2) , значение 4 запишется в variable1. Получаем if (4) . А любое значение отличное от 0, как вы помните, компилятор воспринимает как true . В итоге этот блок выполнится и мы увидим сообщение о том, что значения равны, хотя это изначально было не так. Будьте внимательны.

Этот код можно значительно сократить. Во-первых, можно добавить оператор else (посмотрим ниже). Во вторых — если блоки if или else содержат только одну строку кода в фигурных скобках {} , то эти фигурные скобки можно не писать. Посмотрим, как изменится наш код:

#include <iostream>

using namespace std;

 

int main()

{

setlocale(LC_ALL, "rus");

 

int variable1 = 0;

int variable2 = 0;

 

cout << "Введите первое число: ";

cin >> variable1;

cout << "Введите второе число: ";

cin >> variable2;

 

if (variable1 > variable2) // как и в первом примере

cout << "\nРезультат сравнения: Первое число больше чем второе\n";

else if (variable1 < variable2) // иначе если variable1 < variable2

cout << "\nРезультат сравнения: Второе  число больше чем первое\n";

else // иначе

cout << "\nРезультат сравнения: Числа равны\n";

 

return 0;

}

Вы видите, что фигурные скобки в этом примере мы уже не используем. Еще один плюс — если первое условие if выполняется, то остальные блоки if else и else, уже не проверяются (т.е. время на выполнение программы сокращается). Ну а если первое условие ложно, программа идет в следующий блок else if (иначе если), и проверяет его условие — (variable1 < variable2) — строка 18. Если и тут ложь, то выполнится последний блок else, в котором условие можно уже не проверять, так как мы до этого перебрали все возможные варианты отношения двух значений и остается только их равенство.

Результат работы этих программ одинаков. Но во втором случае и код компактней и работы компилятору меньше.

Основное, что важно запомнить:

 

  • синтаксис if:

  • синтаксис if else:

или если необходимо больше условий:

  • конструкция блоков if else — неразрывна. Если она встречается в коде, её нельзя разделять посторонним кодом. Например :

  • принцип работы оператора выбора if — если условие в круглых скобках истина (true), то код блока выполнится. Если ложь (false) — игнорируется и выполнение программы начинается со строки кода, следующей под блоком if.
  • условие оператора выбора в круглых скобках может быть обычным: if(variable > 0) или комбинированным: if (variable > 0 && variable < 100).Комбинированное условие вернёт true, если оба условия будут верными.
  • условие оператора выбора может быть арифметическим выражением: if (variable1 — variable2). Код блока if выполнится, если результат вычисления не будет равен 0. Например: if (5 — 7), if (2 + 5). А вот если if (2 -2) — код блока будет проигнорирован.
  • если блоки if , else if или else содержат только одну строку кода, фигурные скобки можно не использовать. Но для новичков, пока вы учитесь, рекомендую использовать фигурные скобки всегда.

Пожалуй и всё об условных операторах if и else.