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

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


konstrukcija_logicheskogo_vybora_if_-_else

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

konstrukcija_logicheskogo_vybora_if_-_else [2010/06/08 21:11]
konstrukcija_logicheskogo_vybora_if_-_else [2020/06/13 13:46] (текущий)
Строка 1: Строка 1:
 +====== Конструкция логического выбора if else ======
 +Оператор **if** позволяет проверить какое-то утверждение (выражение) на истинность и в зависимости от полученного результата произвести то или иное действие. Для начала рассмотрим общий синтаксис данного оператора:<file>
 +if (утверждение или выражение)
 +{
 +  действие 1;
 +}
 +else 
 +{
 +  действие 2;
 +}
 +</file>
  
 +  * if(A>B&&A<C) – комбинированное утверждение, состоящее из двух частей, будет истинно, если обе части будут верными<file>
 +int A=10,B=5,C=12;
 +if(A>B&&A<C){ // истина
 + cout<<"A between B and C";// на экране Test
 +}
 +</file>
 +  * if(A-B) – арифметическое выражение, будет истинным, если А не равно B, т. к. в противном случае (если они равны) их разность даст нуль, а нуль это ложь<file>
 +int A=10,B=15;
 +if(A-B){ // -5 это истина
 + cout<<"A != В";// на экране A != В
 +}
 +</file>
 +  * if(++A) - арифметическое выражение, будет истинным, если А не равно -1, т. к. если А равно -1 увеличение на 1 даст нуль, а нуль это ложь<file>
 +int A=0;
 +if(++A){ // 1 это истина
 + cout<<"Best test!!";// на экране Best test!!
 +}
 +</file>
 +  * if(A++) - арифметическое выражение, будет истинным, если А не равно 0, т. к. в данном случае используется постфиксная форма инкремента, сначала произойдет проверка условия и будет обнаружен нуль, а потом увеличение на единицу.<file>
 +int A=0;
 +if(A++){ // 0 это ложь
 + cout<<"Best test!!";// эту фразу мы не увидим, т. к. if не выполнится
 +}
 +</file>
 +<note tip>Типичная ошибка. Очень часто вместо операции проверки на равенство ==, по невнимательности указывается операция присваивания =, и смысл выражения может радикально измениться. 
 +<file>
 +if(A==Z) - обычное утверждение, будет истинным, если A равно Z
 +if(A=Z) – операция присваивания, выражение будет истинным, если Z не равно нулю
 +</file></note>
 +
 +Конструкция **else** является необязательной. Это означает, что если нет необходимости делать что-либо при ложности утверждения, данную конструкцию можно не указывать. Если к блоку if или else относится только одна команда, то фигурные скобки можно не указывать.
 +====== Лесенка if else if ======
 +Внимательно проанализировав данный пример, вы заметите, что каждый следующий if, может выполниться только, в том случае, если не выполнился его "предшественник", так как находится внутри конструкции else последнего. **Оптимизация кода**. Если к блоку if или else относится только одна команда, то фигурные скобки можно не указывать. Дело в том, конструкция if else считается одной цельной командной структурой. Следовательно, если внутри некоторых else нет ничего кроме вложенной конструкции, фигурные скобки таких else можно опустить.
 +<file>
 +# 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";
 + }
 +
 +
 +
 +}
 +</file>