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

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


konstrukcija_logicheskogo_vybora_if_-_else

Различия

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

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

konstrukcija_logicheskogo_vybora_if_-_else [2010/06/08 13:11] (текущий)
Строка 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>​
konstrukcija_logicheskogo_vybora_if_-_else.txt · Последние изменения: 2010/06/08 13:11 (внешнее изменение)