В некоторых источниках говорится, что оператор выбора if else — самостоятельный оператор. Но это не так, if else — это всего лишь форма записи оператора выбора if . Оператор if else позволяет определить программисту действие, когда условие истинно и альтернативное действие, когда условие ложно. Тогда как if позволял определить действие при истинном условии.
Синтаксис записи оператора выбора if else :
if (/*проверяемое условие*/) < /*тело оператора выбора 1*/; >else < /*тело оператора выбора 2*/; >
Читается так: «Если проверяемое условие истинно, то выполняется тело оператора выбора 1, иначе (то есть проверяемое условие ложно) выполняется тело оператора выбора 2«. Обратите внимание на то, как записан оператор if else . Слово else специально сдвинуто вправо для того чтобы программный код был понятен и его было удобно читать.
Рассмотрим задачу с предыдущей темы, с использованием if else . Напомню условие задачи: «Даны два числа, необходимо их сравнить».
// if_else.cpp: определяет точку входа для консольного приложения. #include «stdafx.h» #include using namespace std; int main(int argc, char* argv[]) < int a, b; cout > a; cout > b; if ( a >= b) // если a больше либо равно b, то < cout = » else // иначе < cout << a << » <= » system(«pause»); return 0; >
В данном коде нас интересуют строки 14-20 . Эти строки читаются так: если a (первое число) больше либо равно b (второе число), то выполнить оператор вывода в строке 16
Функция ЕСЛИ в Excel с несколькими условиями (IF) и функция из Excel 2016 ЕСЛИМН (IFS)
cout = »
иначе выполнить оператор вывода в строке 19
cout
cout
А вот так сработала программа (см. Рисунок 1).
CppStudio.com
Vvedite pervoe chislo: 15 Vvedite vtoroe chislo: -4 15 >= -4 Для продолжения нажмите любую клавишу . . .
Рисунок 1 — Оператор выбора if else
Покажу еще один пример использования операторов выбора if else (так называемые вложенные операторы if else для множественного выбора).
Условие задачи:
Составить алгоритм находящий значение y, если у=х, при х=30;
// inif_else.cpp: определяет точку входа для консольного приложения. #include «stdafx.h» #include using namespace std; int main(int argc, char* argv[]) < int x, y; cout > x; if (x < 0) < y = x; // выполняется, если х меньше нуля >else < if ( (x >= 0) (x < 30) ) < y = 0; // выполняется, если х больше либо равно нуля и меньше 30 >else < if (x >= 30) < y = x * x; // выполняется, если х больше либо равен 30 >> > cout
В данной задаче возможны три случая:
1-й случай: х < 0 ;
2-й случай: х лежит в пределах от 0 (включая 0) до 30;
3-й случай: х больше или равен 30.
Разбор частного случая:
Допустим, пользователь ввел число 31. Начиная со строки 12, выполняется проверка условий. Читается так: «Если х (31 в нашем случае) < 0, то выполнить оператор в строке 14». Но так как 31 > 0 условие ложно мы переходим к слову else (иначе) строка 15. Дальше проверяем, входит ли число 31 в заданный интервал.
23 Функция ЕСЛИ в Excel (IF)
Читается так: если х>=0 и х то выполнить оператор в строке 19 . Но так как число 31 не входит в заданный интервал, то условие ложно. Подробно строка 17: программа сначала проверит первое простое условие х >= 0 – оно истинно, а если первое истинно, то программа перейдет к проверке второго простого условия х < 30 – оно ложно.
Следовательно всё составное условие ложно, ведь в составном условии у нас используется логическая операция , а это значит, что все составное условие истинно только в том случае, когда истинны оба простых условия. Переходим к else (иначе ), здесь у нас последний if , (строка 22).
Выполняется проверка х >= 30 . Читается так: Если х >= 30 то выполнить оператор, находящийся в строке 24 . Наконец-то условие истинно, итак выполнился оператор в строке 24. И строка 28 печатает получившееся значение. Ну, все, рассмотрели программу по мельчайшим деталям. Результат работы программы, в случае, если пользователь ввел число 31 (см. Рисунок 2)
CppStudio.com
Vvedite x: 31 y=961 Для продолжения нажмите любую клавишу . . .
Рисунок 2 — Оператор выбора if else
Источник: cppstudio.com
Оператор if-else (C++)
Оператор if-else управляет условным ветвлением. Операторы в выполняются только в if-branch том случае, если condition вычисляется как ненулевое значение (или true ). Если значение не равно нулю condition , выполняется следующая инструкция, а оператор, следующий за необязательным else , пропускается. В противном случае следующая инструкция пропускается, а если есть else оператор , то выполняется оператор, следующий за else .
condition Выражения, которые оцениваются как ненулевое:
- true
- указатель, отличный от NULL,
- любое арифметическое значение, отличное от нуля, или
- тип класса, определяющий однозначное преобразование в арифметический, логический тип или тип указателя. (Сведения о преобразованиях см. в разделе Стандартные преобразования.)
Синтаксис
init-statement :
expression-statement
simple-declaration
condition :
expression
attribute-specifier-seq Выбрать decl-specifier-seq declarator brace-or-equal-initializer
statement :
expression-statement
compound-statement
expression-statement :
expression Выбрать ;
compound-statement :
statement-seq Выбрать >
selection-statement :
if constexpr opt 17 ( init-statement opt 17 condition ) if-branch
if constexpr opt 17 ( init-statement opt 17 condition ) if-branch else else-branch
17 Этот необязательный элемент доступен начиная с C++17.
Операторы if-else
Во всех формах if оператора condition вычисляется значение , которое может иметь любое значение, кроме структуры, включая все побочные эффекты. Элемент управления передается от if оператора к следующему оператору в программе, если не выполняется if-branch или else-branch не содержит break , continue или goto .
Предложение else оператора связано с ближайшим предыдущим if оператором if. else в том же область, который не имеет соответствующего else оператора.
Пример
В этом примере кода показано несколько if операторов, используемых как с , так и без else :
// if_else_statement.cpp #include using namespace std; class C < public: void do_something()<>>; void init(C)<> bool is_true() < return true; >int x = 10; int main() < if (is_true()) < cout else < cout // no else statement if (x == 10) < x = 0; >C* c; init(c); if (c) < c->do_something(); > else < cout >
Оператор if с инициализатором
Начиная с C++17 инструкция if может также содержать init-statement выражение, которое объявляет и инициализирует именованную переменную. Используйте эту форму оператора if, если переменная требуется только в область оператора if. Для майкрософт: эта форма доступна начиная с Visual Studio 2017 версии 15.3 и требует по крайней мере параметра компилятора /std:c++17 .
Пример
#include #include #include #include #include using namespace std; map m; mutex mx; bool shared_flag; // guarded by mx void unsafe_operation() <> int main() < if (auto it = m.find(10); it != m.end()) < cout second; return 0; > if (char buf[10]; fgets(buf, 10, stdin)) < m[0] += buf; >if (lock_guard lock(mx); shared_flag) < unsafe_operation(); shared_flag = false; >string s< «if» >; if (auto keywords = < «if», «for», «while» >; any_of(keywords.begin(), keywords.end(), [ return s == kw; >)) < cout >
Операторы if constexpr
Начиная с C++17, вы можете использовать if constexpr оператор в шаблонах функций, чтобы принимать решения о ветвлениях во время компиляции, не прибегая к нескольким перегрузкам функций. Для майкрософт: эта форма доступна начиная с Visual Studio 2017 версии 15.3 и требует по крайней мере параметра компилятора /std:c++17 .
Пример
В этом примере показано, как написать одну функцию, которая обрабатывает распаковку параметров. Перегрузка с нулевыми параметрами не требуется:
template void f(T t, Rest. r) < // handle t do_something(t); // handle r conditionally if constexpr (sizeof. (r)) < f(r. ); >else < g(r. ); >>
Источник: learn.microsoft.com
infoegehelp.ru
Ниже на рисунках представлены блок-схемы, описывающие этот оператор.
Синтакис описания оператора на различных языках программирования:
if условие then begin операторы; end else begin операторы; end |
если условие то операторы иначе операторы все |
IF условие THEN операторы ELSE операторы END IF |
if(условие) операторы; > else операторы; > |
Используем оператор «если» в программе, которая определяет равны ли числа и выводит результат.
var a,b:integer; begin read(a,b); if a=b then writeln(‘ravni’) else writeln(‘ne ravni’) end. |
алг нач цел a,b ввод a,b если a=b то вывод ‘ravni’ иначе вывод ‘ne ravni’ все кон |
DIM a,b AS INTEGER INPUT a INPUT b IF a=b THEN PRINT «ravni» ELSE PRINT «ne ravni» END IF END |
#include #include void main() int a,b; scanf(«%d%d»,b); if (a==b) printf(«ravni»); else printf(«ne ravni»); getch(); > |
2.Оператор ветвления «выбор» или «выбор-иначе».
Ниже на рисунках представлены блок-схемы, описывающие этот оператор.
Синтакис описания оператора на различных языках программирования:
Используем оператор «выбор» в программе, которая по введенному номеру выводит название дня недели.
var a:integer; begin read(a); case a of 1:writeln(‘ponedelnik’); 2:writeln(‘vtornik’); 3:writeln(‘sreda’); 4:writeln(‘chetverg’); 5:writeln(‘pyatnica’); 6:writeln(‘subbota’); 6:writeln(‘voskresenie’); else writeln(‘dnya nedeli s takim nomerom net’); end; end. |
алг нач цел a ввод a выбор при a=1: вывод ‘ponedelnik’ при a=2: вывод ‘vtornik’ при a=3: вывод ‘sreda’ при a=4: вывод ‘chetverg’ при a=5: вывод ‘pyatnica’ при a=6: вывод ‘subbota’ при a=7: вывод ‘voskresenie’ иначе вывод ‘dnya nedeli s takim nomerom net’ все |
DIM a AS INTEGER INPUT a SELECT CASE a CASE 1: PRINT «ponedelnik» CASE 2: PRINT «vtornik» CASE 3: PRINT «sreda» CASE 4: PRINT «chetverg» CASE 5: PRINT «pyatnica» CASE 6: PRINT «subbota» CASE 7: PRINT «voskresenie» CASE ELSE PRINT dnya nedeli s takim nomerom net END SELECT END |
#include #include void main() int a; scanf(«%d», switch(a) 1:printf(«ponedelnik»);break; 2:printf(«vtornik»);break; 3:printf(«sreda»);break; 4:printf(«chetverg»);break; 5:printf(«pyatnica»);break; 6:printf(«subbota»);break; 7:printf(«voskresenie»);break; default: printf(«dnya nedeli s takim nomerom net»); > getch(); > |
Перейти к разбору задач на работу операторов ветвления из демо ЕГЭ:
Источник: infoegehelp.ru