Инструменты пользователя

Инструменты сайта


Боковая панель

Связь

konstrukcija_logicheskogo_vybora_if_-_else

Конструкция логического выбора if else

Оператор if позволяет проверить какое-то утверждение (выражение) на истинность и в зависимости от полученного результата произвести то или иное действие. Для начала рассмотрим общий синтаксис данного оператора:

if (утверждение или выражение)
{
  	действие 1;
}
else 
{
  	действие 2;
}
  • if(A>B&&A<C) – комбинированное утверждение, состоящее из двух частей, будет истинно, если обе части будут верными
    int A=10,B=5,C=12;
    if(A>B&&A<C){ // истина
    	cout<<"A between B and C";// на экране Test
    }
  • if(A-B) – арифметическое выражение, будет истинным, если А не равно B, т. к. в противном случае (если они равны) их разность даст нуль, а нуль это ложь
    int A=10,B=15;
    if(A-B){ // -5 это истина
    	cout<<"A != В";// на экране A != В
    }
  • if(++A) - арифметическое выражение, будет истинным, если А не равно -1, т. к. если А равно -1 увеличение на 1 даст нуль, а нуль это ложь
    int A=0;
    if(++A){ // 1 это истина
    	cout<<"Best test!!";// на экране Best test!!
    }
  • if(A++) - арифметическое выражение, будет истинным, если А не равно 0, т. к. в данном случае используется постфиксная форма инкремента, сначала произойдет проверка условия и будет обнаружен нуль, а потом увеличение на единицу.
    int A=0;
    if(A++){ // 0 это ложь
    	cout<<"Best test!!";// эту фразу мы не увидим, т. к. if не выполнится
    }
Типичная ошибка. Очень часто вместо операции проверки на равенство ==, по невнимательности указывается операция присваивания =, и смысл выражения может радикально измениться.
if(A==Z) - обычное утверждение, будет истинным, если A равно Z
if(A=Z) – операция присваивания, выражение будет истинным, если Z не равно нулю

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

Лесенка if else if

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

# include <iostream>
using namespace std;
void main(){
	// обявляется переменная,для хранения первоначальной суммы
	int summa;

	// запрос на ввод суммы с клавиатуры
	cout<<"Enter item of summa:\n";
	cin>>summa;

	if(summa>1000){ // если сумма больше 1000 грн., скидка 25%
		cout<<"You have 25% discount!!!\n";
		cout<<"You must pay - "<<summa-summa/100*25<<"\n";
	}

	// если сумма не больше 1000 грн. продолжаем анализ
	else if(summa>500){  // если сумма больше 500 грн., скидка 10%
			cout<<"You have 10% discount!!!\n";
			cout<<"You must pay - "<<summa-summa/100*10<<"\n";
	}

	 // если сумма не больше 500 грн. продолжаем анализ
	else if(summa>100){ // если сумма больше 100 грн., скидка 5%
				cout<<"You have 5% discount!!!\n";
				cout<<"You must pay - "<<summa-summa/100*5<<"\n";
	}
	else{  // если сумма не больше 100 грн. скидки нет
				cout<<"You have not discount!!!\n";
				cout<<"You must pay - "<<summa<<"\n";
	}
	
	

}



konstrukcija_logicheskogo_vybora_if_-_else.txt · Последние изменения: 2010/06/08 17:11 (внешнее изменение)