Инструкция if-else

Инструкция if-else производит ветвление программы в зависимости от результата провери некоторого условия на истинность и имеет следующий вид:
if (условие) 
оператор_1; 
else 
оператор_2;
Условие может быть любым выражением, но чаще всего оно содержит операторы сравнения.
Если условие принимает истинное значение (true), выполняется оператор_1. В противном случае (false) выполнение программы переходит к оператору_2.
В конструкции языка С++ операторы могут быть блочными. Это означает, что в зависимости от принятого решения выполняется не один, а целый блок операторов.
Блок начинается с открывающей фигурной скобки ({) и заканчивается закрывающей фигурной скобкой (}). Все содержимое блока расматривается компилятором, как единый оператор:
if (условие)
{ блок_1;} 
else
{ блок_2;}
Рассмотрим пример использования инструкции if для определения, является введенное с клавиатуры число положительным или отрицательным:
#include 
using namespace std; 
int main(){ 
int b; 
cin >> b;
if(b>0){ 
  //Если условие b>0 выполнено 
  cout << "b положительное" 
} 
else {
  //Если условие b>0 не выполнено 
  cout << "b отрицательнои или равно 0" 
} 
return 0; 
}

В приведенном примере объявляется целочисленная переменная b и считывается ее значение с клавиатуры, а потом следует сравнение этого значения с нулем. Если значение b больше нуля. выводится сообщение «b положительное», а если b меньше или равно нуля — «b отрицательнои или равно 0».
Одной из типичных ошибок при испольозвании инструкции if является пропуск фигурных скобок для обозначения блока выполняемых операторов:
int main(){ 
int x = 0, y = 8, z = 0; 
if(x != 0) 
z++; 
y/=x;  //Ошибка! деление на 0
cout << "y = " << y;
return 0;
}
В этом примере присутствует проверка значения переменной x на неравенство нулю. Если значение x отлично от нуля, производится увеличение на единицу значения переменной z. Однако далее вычисляется выражение y = y/x, независимо от того, какое значение имеет переменная x. Поскольку переменная x имеет нулевое значение, то оператор деления выдаст сообщение о попытке деления на ноль.
Если правильно определить блок исполняемых операторов, как показано ниже, вычисления выполнятся корректно:
int main(){
int x = 0, y = 8, z = 0;
if(x != 0){
  z++;
  y/=x;
}
cout << "y = " << y;
return 0;
}
В данном варианте вычисление выражения y = y/x будет производиться только в том случае, если значение переменной x отлично от нуля.
Прведенный пример показывает, что инструкуция выбора if может быть использована без блока else, который является необязательным.
Вместо инструкции if-else иногда удобнее использовать условное выражение ?:, если входящие в него выражения являются достаточно простыми.

Комментарии (0)

Прокомментировать