Встречаются ситуации, когда программе нужно выбрать, какую операцию ей выполнить, в зависимости от определенного условия.
К примеру, мы вводим с клавиатуры целое число. Если это число больше десяти, то программа должна выполнить одно действие, иначе — другое. Реализуем этот алгоритм на C++ с помощью конструкции ветвления.
Если вы запустите эту программу, то при вводе числа, меньшего десяти, будет выводиться соответствующее сообщение.
Если введенное число окажется большим, либо равным десяти — отобразится другое сообщение.
Оператор if
Оператор if служит для того, чтобы выполнить какую-либо операцию в том случае, когда условие является верным. Условная конструкция в С++ всегда записывается в круглых скобках после оператора if .
Внутри фигурных скобок указывается тело условия. Если условие выполнится, то начнется выполнение всех команд, которые находятся между фигурными скобками.
Пример конструкции ветвления
Здесь говорится: «Если переменная num меньше 10 — вывести соответствующее сообщение. Иначе, вывести другое сообщение».
Усовершенствуем программу так, чтобы она выводила сообщение, о том, что переменная num равна десяти:
Здесь мы проверяем три условия:
- Первое — когда введенное число меньше 10-ти
- Второе — когда число равно 10-ти
- И третье — когда число больше десяти
Заметьте, что во втором условии, при проверке равенства, мы используем оператор равенства — == , а не оператор присваивания, потому что мы не изменяем значение переменной при проверке, а сравниваем ее текущее значение с числом 10.
- Если поставить оператор присваивания в условии, то при проверке условия, значение переменной изменится, после чего это условие выполнится.
Каждому оператору if соответствует только один оператор else . Совокупность этих операторов — else if означает, что если не выполнилось предыдущее условие, то проверить данное. Если ни одно из условий не верно, то выполняется тело оператора else .
Если после оператора if , else или их связки else if должна выполняться только одна команда, то фигурные скобки можно не ставить. Предыдущую программу можно записать следующим образом:
Такой метод записи выглядит более компактно. Если при выполнении условия нам требуется выполнить более одной команды, то фигурные скобки необходимы. Например:
Данная программа проверяет значение переменной num. Если она меньше 10, то присваивает переменной k значение единицы. Если переменная num равна десяти, то присваивает переменной k значение двойки. В противном случае — значение тройки. После выполнения ветвления, значение переменной k выводится на экран.
Хорошенько потренируйтесь, попробуйте придумать свой пример с ветвлением. Когда поймете, что поняли эту тему, можете смело приступать к следующему уроку.
Здравствуйте, дорогие друзья! Сложно представить себе полноценную программу, которая будет работать одинаково при любых обстоятельствах. Довольно часто приходится выбирать, между несколькими вариантами развития событий в зависимости от поступающих данных. Решением данной проблемы в C++ занимается оператор ветвления.
Что такое оператор ветвления?
Давайте представим, что мы пришли в магазин. У нас есть одна цель — купить товар. Однако есть одно ограничение. Его цена не должна превышать определенную сумму. В нашем случае условие следующие: our_money >= price . Если это условие выполняется, то у нас все замечательно и мы счастливые направляемся к кассе. В противном случае нам придется искать более дешевый вариант данного товара.
Думаю у вас в голове уже сложилось понимание основных концептов ветвления в C++.
Оператор if
Чтобы указать условие при выполнении которого будет выполняться определенный код, тогда вам потребуется прибегнуть к следующей структуре:
- набрать ключевое слово if в своей программе;
- после него, в круглых скобках, вы должны указать логическое выражение:
Управляет условным ветвлением. Controls conditional branching. Операторы в блоке if выполняются только в том случае, если параметр -Expression имеет ненулевое значение (или true). Statements in the if-block are executed only if the if-expression evaluates to a non-zero value (or TRUE). Если значение Expression не равно нулю, то оператор1 и все другие операторы в блоке выполняются, а else-Block, если он есть, пропускается. If the value of expression is nonzero, statement1 and any other statements in the block are executed and the else-block, if present, is skipped. Если значение Expression равно нулю, то параметр if-Block пропускается и выполняется else-Block, если он есть. If the value of expression is zero, then the if-block is skipped and the else-block, if present, is executed. Выражения, результатом которых является ненулевое значение, являются Expressions that evaluate to non-zero are
- true TRUE
- указатель, отличный от NULL, a non-null pointer,
- любое ненулевое арифметическое значение или any non-zero arithmetic value, or
- тип класса, определяющий однозначное преобразование к арифметическому, логическому или типу указателя. a class type that defines an unambiguous conversion to an arithmetic, boolean or pointer type. (Дополнительные сведения о преобразованиях см. в разделе стандартные преобразования.) (For information about conversions, see Standard Conversions.)
Синтаксис Syntax
Пример Example
Оператор If с инициализатором if statement with an initializer
Visual Studio 2017 версии 15,3 и более поздних версий (доступно в /std: c++ 17): Оператор If может также содержать выражение, которое объявляет и инициализирует именованную переменную. Visual Studio 2017 version 15.3 and later (available with /std:c++17): An if statement may also contain an expression that declares and initializes a named variable. Используйте эту форму оператора if, если переменная необходима только в области видимости блока if. Use this form of the if-statement when the variable is only needed within the scope of the if-block.
Пример Example
Во всех формах оператора If выражение, которое может иметь любое значение, кроме структуры, вычисляется, включая все побочные эффекты. In all forms of the if statement, expression, which can have any value except a structure, is evaluated, including all side effects. Управление передается из оператора If в следующий оператор в программе, если только одна из инструкцийне содержит прерывание, Continueили goto. Control passes from the if statement to the next statement in the program unless one of the statements contains a break, continue, or goto.
Предложение if. else else оператора связано с ближайшим предыдущим оператором if в той же области, которая не имеет соответствующей инструкции else . The else clause of an if. else statement is associated with the closest previous if statement in the same scope that does not have a corresponding else statement.
If constexpr, операторы if constexpr statements
Visual Studio 2017 версии 15,3 и более поздних версий (доступно в /std: c++ 17): В шаблонах функций можно использовать оператор If constexpr , чтобы принимать решения о ветвлении во время компиляции без необходимости прибегать к нескольким перегрузкам функций. Visual Studio 2017 version 15.3 and later (available with /std:c++17): In function templates, you can use an if constexpr statement to make compile-time branching decisions without having to resort to multiple function overloads. Например, можно написать одну функцию, которая обрабатывает распаковку параметров (без перегрузки нулевого параметра): For example, you can write a single function that handles parameter unpacking (no zero-parameter overload is needed):