C функция if: Ветвление в C++ — условные операторы «if» и «else»
Условные операторы: if…else if…else, switch
Представим ситуацию в игре: персонаж под управлением искусственного интеллекта решает что делать, он может атаковать игрока или он может сбежать, и это зависит от здоровья персонажа. Давайте создадим переменную, которая будет контролировать здоровье врага:
int enemyHealth = 100;
Теперь нам нужно решить что делать. Для этого мы можем использовать условия (операторы ветвления). Условия есть во всех языках программирования, в том числе и в C++.
Выражение if в C++
Создадим условие: если здоровье врага больше 50, то он атакует игрока (здоровье игрока уменьшается):
int enemyHealth = 100;
int playerHealth = 100;
if (enemyHealth > 50) {
playerHealth -= 10;
}
Выражение if состоит из ключевого слова if (если), затем в круглых скобках пишется условие, а затем в фигурные скобки помещается код, который будет выполнен если условие истинно. Условие всегда булево значение: может быть только true или false.
Итак, если здоровье врага больше 50, враг атакует игрока. Но сейчас ничего не происходит, если здоровье меньше 50. Давайте исправим это.
else
Выражение if может иметь дополнительные блоки. Один из них: else (иначе, в противном случае). Данный блок выполняется если условие всех предыдущих блоков ложно:
int enemyHealth = 100;
int playerHealth = 100;
if (enemyHealth > 50) {
playerHealth -= 10;
}
else {
enemyHealth += 10;
}
Если здоровье врага меньше 50 (условие ложно), то выполняется блок else. В данном случае мы увеличиваем здоровье врага (представим, что он находит аптечку).
Это очень простой случай, мы знаем что здоровье всегда 100 и мы можем написать что делать сразу после инициализации. Но когда наши программы станут больше, мы не сможем сказать какое значение у здоровья в данный момент времени. Когда мы научимся как работать с функциями в C++, мы сможем построить более интересные примеры.
else if
Условие if может иметь несколько блоков else if (в противном случае, если). Они используются, если нужны дополнительные условия:
if (enemyHealth > 80) {
playerHealth -= 10;
}
else if (enemyHealth > 50 {
// действие 1
}
else if (enemyHelath > 20) {
// действие 2
}
else {
enemyHealth += 10;
}
Полное условие выглядит так: если здоровье больше 80, мы уменьшаем здоровье игрока. Если это не так (здоровье меньше 80), мы проверяем следующий блок: если здоровье больше 50. Если это так (здоровье между 50 и 80) мы вуполняем действие 1, в противном случае проверяем следующее условие: если здоровье больше 20. Если ни одно из условий не выполняется, то происходит переход к блоку else. Он будет выполнен если здоровье меньше 20.
Весь этот код принадлежит к одному оператору if. Только один блок данного оператора будет выполнен.
Выражение switch в С++
В C++ есть ещё один условный оператор — switch (переключатель). Он используется в ситуациях, когда известно какие значения может принимать условие. Например, давайте прочитаем ввод пользователя и проверим, какую клавишу он нажал:
char i;
cin >> i;
switch (i) {
case ‘i’:
cout
Вначале мы помещаем ключевое слово switch. Затем, пишем в круглых скобках переменную, которую нужно проверить. После этого идёт тело switch в фигурных скобках. Тело switch состоит из проверок отдельных значений переменной (case — пример, ситуация, вариант). Обратите внимание, что после каждой проверки мы помещаем break. Этот оператор пропускает проверку остальных вариантов. Также есть вариант default — он выполняется если все остальные блоки ложны.
Вывод
Условия — одна из главных частей любого языка, включая C++. В C++ есть два условных оператора: if…else if…else и switch. Мы можем пользоваться только операторм if, но иногда switch бывает более удобен.
Комментарии:
19 августа 2020 г. 16:42
2
Guest
11 августа 2020 г. 7:33
1
Guest
Изучаем C++. Ветвление и условные конструкции
Условная конструкция if позволяет выполнять инструкции только в том случае, если данное логическое утверждение верно. Записывается эта конструкция так:
После того как программа проверит утверждение, она выполнит (или не выполнит) всё, что написано внутри фигурных скобок. Вот пример программы с ветвлением:
int a = 5; int b = 6; if (a > b) { std::cout << "a is bigger than b \n"; } if (a < b) { std::cout << "b is bigger than a \n"; } if (a == b) { std::cout << "a equals b \n"; }
Программа работает корректно, но такой код сложно читать из-за большого количества условных конструкций. Чтобы упростить запись, можно использовать оператор else (иначе).
if (a > b) { std::cout << "a is bigger than b \n"; } else { std::cout << "a is not bigger than b \n"; }
Else используется, чтобы сказать компьютеру, какие инструкции нужно выполнить, если проверяемое утверждение было ложным.
Если нужно проверить несколько условий, то воспользуемся оператором else if.
Программа сначала проверит первое условие и, если оно ложно, будет проверять следующие за ним else if. Если ни одно из условий не было верным, выполняются инструкции внутри else, поэтому оно всегда должно стоять в конце.
Вы можете размещать условные конструкции внутри других условных конструкций:
if(a > b) { if(a > 100) { } else { } }
Есть и более короткие варианты записи. Например, если должна быть выполнена только одна инструкция, то фигурные скобки лучше опустить:
if(a == 5) std::cout << "a == 5 \n"; else std::cout << "a != 5 \n";
Запись можно сократить ещё сильнее, если вы используете условие, чтобы указать значение для переменной:
int result = 2 > 1 ? 1 : 0;
Получается запись вида:
переменная = условие ? значение, если условие истинно : значение, если условие ложно;
Задание Попробуйте написать как можно больше условных конструкций, перед тем как продолжать чтение статьи, — эта тема очень важна.
Прекратите использовать оператор If-else / Блог компании SkillFactory / Хабр
Вы просмотрели бесчисленные учебные пособия, использующие операторы If-else. Вы, вероятно, также читали книги по программированию, пропагандирующие использование If-else в качестве фактического метода ветвления.
Возможно, это даже ваш режим по умолчанию, чтобы использовать If-else. Но давайте покончим с этим прямо сейчас, заменив If-else объектами состояния.
Обратите внимание, что этот подход можно использовать, если вы пишете класс с методами, которые нуждаются в изменении его реализаций в зависимости от текущего состояния. Вы бы применили другой подход, если бы не имели дело с изменяющимся состоянием объекта.
Даже если вы слышали о шаблоне состояния, вы можете задаться вопросом, как он реализован в готовом к продакшену коде.
Для тех, кто все еще находится в неведении, вот очень краткое введение.
Вы увеличите сложность с любым новым условным требованием, реализованным с помощью If-else.
Применяя шаблон состояния, вы просто изменяете поведение объектов, используя специализированные объекты состояния вместо операторов If-else.
Прошли те дни, когда код выглядел примерно так, как показано ниже.
Вы, конечно, писали более сложные ветвления раньше. Несколько лет назад я был уверен в этом.
Приведенная выше логика ветвления даже не очень сложна — но попробуйте добавить новые условия, и вы увидите, что она усложняется в разы.
Кроме того, если вы думаете, что создание новых классов вместо простого использования ветвящихся операторов звучит раздражающе, подождите, пока вы не увидите это в действии. Этот способ лаконичен и элегантен.
Даже лучше, это сделает вашу кодовую базу более SOLID, за исключением буквы ”D».
«Хорошо, я поверил, что if-else — это зло, теперь покажите мне, как избежать беспорядочного ветвящегося кода»
Мы рассмотрим, как я заменяю If-else в готовом к продакшену коде. Это выдуманный пример, но подход тот же, что я использовал в кодовых базах для крупных клиентов.
Давайте создадим очень простой класс Booking
, который имеет несколько состояний. Он также будет иметь два паблик метода: Accept()
и Cancel()
.
Я нарисовал диаграмму в меру своих возможностей, которая отображает различные состояния, в которых может находиться бронирование.
Рефакторинг ветвящейся логики из нашего кода представляет собой трехэтапный процесс:
- Создать абстрактный класс базового состояния
- Реализовать каждое состояние как отдельный класс, наследующийся от базового состояния
- Пусть класс
Booking
имеет приватный или внутренний метод, который принимает класс базового состояния в качестве параметра
Реализация
Во-первых, нам нужен класс базового состояния, который унаследуют все состояния.
Обратите внимание, что этот класс также имеет два метода, Accept и Cancel — хотя здесь они помечены как внутренние.
Кроме того, базовое состояние имеет ”специальный» метод EnterState(Booking booking)
. Он вызывается всякий раз, когда объекту бронирования присваивается новое состояние.
Во-вторых, мы создаем отдельные классы для каждого состояния, которое хотим представлять.
Обратите внимание, как каждый класс представляет состояние, описанное на красивой диаграмме выше. Кроме того, CancelledState не позволит нашему бронированию перейти в новое состояние. Этот класс очень похож по духу на шаблон нулевого объекта.
Наконец, сам класс бронирования.
Посмотрим, класс бронирования — это просто делегирование полномочий осуществления принятия и отклонения?
Это позволяет нам устранить большую часть условной логики и позволяет каждому состоянию сосредоточиться только на том, что важно для него самого — текущее состояние также имеет возможность перевести бронирование в новое состояние.
Как бороться с новыми условиями
Если новая функция обычно была реализована с помощью некоторой условной проверки, то теперь вы можете просто создать новый класс состояния.
Это очень просто. Вам больше не придется иметь дело с громоздким оператором if-else.
Как сохранить объект состояния в базе данных
Объект состояния не имеет значения при сохранении объекта, например, в базе данных SQL или NoSQL. Важно только знать состояние объекта и то, как оно должно быть отображено в столбце.
Вы можете сопоставить состояние с читаемым именем, перечислением или целым числом. Все, что вам удобно, пока у вас есть какой-то способ преобразовать сохраненное значение обратно в объект состояния.
Но ты все еще используешь «if»
Да, он очень важен. Особенно при использовании в качестве проверочных точек. Именно сочетание If-else является основной причиной головных болей поддержки кода.
Это же куча дополнительных классов
Действительно. Как я уже упоминал в другой статье, сложность возникает не из количества классов, которые у вас есть, а из обязанностей, которые эти классы берут на себя.
Наличие большого количества специализированных классов сделает ваш код более читаемым, поддерживаемым и просто более приятным для работы.
Узнайте подробности, как получить востребованную профессию с нуля или Level Up по навыкам и зарплате, пройдя платные онлайн-курсы SkillFactory:
Читать еще
синтаксис, блоки else/elif и примеры
При изучении программирования в качестве практики часто приходится создавать «идеальные программы», которые в реальном мире работают совсем не так.
Иногда, например, нужно исполнить ряд инструкций только в том случае, если соблюдаются определенные условия. Для обработки таких ситуаций в языках программирования есть операторы управления. В дополнение к управлению потоком выполнения программы эти операторы используются для создания циклов или пропуска инструкций, когда какое-то условие истинно.
Операторы управления бывают следующих типов:
- Оператор-выражение if
- Оператор-выражение if-else
- Оператор-выражение if-elif-else
- Цикл while
- Цикл for
- Оператор-выражение break
- Оператор-выражение continue
В этом уроке речь пойдет о первых трех операторах управления.
Оператор if
Синтаксис оператора if следующий:
if condition:
<indented statement 1>
<indented statement 2>
<non-indented statement>
Первая строчка оператора, то есть if condition
: — это условие if, а condition
— это логическое выражение, которое возвращает True
или False
. В следующей строке блок инструкций. Блок представляет собой одну или больше инструкций. Если он идет следом за условием if, такой блок называют блоком if.
Стоит обратить внимание, что у каждой инструкции в блоке if одинаковый отступ от слова if. Многие языки, такие как C, C++, Java и PHP, используют фигурные скобки ({}
), чтобы определять начало и конец блока, но в Python используются отступы.
Каждая инструкция должна содержать одинаковое количество пробелов. В противном случае программа вернет синтаксическую ошибку. В документации Python рекомендуется делать отступ на 4 пробела. Такая рекомендация актуальная для и для этого .
Подписывайтесь на телеграм каналы
Как это работает:
Когда выполняется инструкция if, проверяется условие. Если условие истинно, тогда все инструкции в блоке if выполняются. Но если условие оказывается неверным, тогда все инструкции внутри этого блока пропускаются.
Инструкции следом за условием if, у которых нет отступов, не относятся к блоку if. Например, <non-intenden statement>
— это не часть блока if, поэтому она будет выполнена в любом случае.
Например:
number = int(input("Введите число: "))
if number > 10:
print("Число больше 10")
Первый вывод:
Введите число: 100
Число больше 10
Второй вывод:
Введите число: 5
Стоит обратить внимание, что во втором случае, когда условие не истинно, инструкция внутри блока if пропускается. В этом примере блок if состоит из одной инструкции, но их может быть сколько угодно, главное — делать отступы.
Рассмотрим следующий код:
number = int(input("Введите число: "))
if number > 10:
print("первая строка")
print("вторая строка")
print("третья строка")
print("Выполняется каждый раз, когда вы запускаете программу")
print("Конец")
Первый вывод:
Введите число: 45
первая строка
вторая строка
третья строка
Выполняется каждый раз, когда вы запускаете программу
Конец
Второй вывод:
Введите число: 4
Выполняется каждый раз, когда вы запускаете программу
Конец
Здесь важно обратить внимание, что только выражения на строках 3, 4 и 5 относятся к блоку if. Следовательно, они будут исполнены только в том случае, когда условие if будет истинно. Но инструкции на строках 7 и 8 выполнятся в любом случае.
Консоль Python реагирует иначе при использовании операторов управления прямо в ней. Стоит напомнить, что для разбития выражения на несколько строк используется оператор продолжение (\
). Но в этом нет необходимости с операторами управления. Интерпретатор Python автоматически активирует мультистрочный режим, если нажать Enter после условия if. Например:
>>>
>>> n = 100
>>> if n > 10:
...
После нажатия Enter на строке с условием if командная строка преобразуется с >>>
на …
. Консоль Python показывает …
для многострочных инструкций. Это значит, что начатая инструкция все еще не закончена.
Чтобы закончить инструкцию if, нужно добавить еще одну инструкцию в блок if:
>>>
>>> n = 100
>>> if n > 10:
... print("n v 10")
...
Python не будет автоматически добавлять отступ. Это нужно сделать самостоятельно. Закончив ввод инструкции, нужно дважды нажать Enter, чтобы исполнить инструкцию. После этого консоль вернется к изначальному состоянию.
>>>
>>> n = 100
>>> if n > 10:
... print("n больше чем 10")
...
n больше чем 10
>>>
Все эти программы заканчиваются внезапно, не показывая ничего, если условие не истинно. Но в большинстве случаев пользователю нужно показать хотя бы что-нибудь. Для этого используется оператор-выражение if-else.
Оператор if-else
Оператор if-else исполняет одну порцию инструкций, если условие истинно и другое — если нет. Таким образом этот оператор предлагает два направления действий. Синтаксис оператора if-else следующий:
if condition:
statement 1
statement 2
and so on
else:
statement 3
statement 4
and so on:
Как это работает:
Когда оператор if-else исполняется, условие проверяется, и если оно возвращает True
, когда инструкции в блоке if исполняются. Но если возвращается False
, тогда исполняются инструкции из блока else.
Пример 1: программа для расчета площади и длины окружности круга.
radius = int(input("Введите радиус: "))
if radius >= 0:
print("Длина окружности = ", 2 * 3.14 * radius)
print("Площадь = ", 3.14 * radius ** 2)
else:
print("Пожалуйста, введите положительное число")
Первый вывод:
Введите радиус: 4
Длина окружности = 25.12
Площадь = 50.24
Второй вывод:
Введите радиус: -12
Пожалуйста, введите положительное число
Теперь программа показывает корректный ответ пользователю, даже если условие if не является истинным. Это и требуется.
В инструкциях if-else нужно следить за тем, чтобы условия if и else находились на одном уровне. В противном случае программа вернет синтаксическую ошибку. Например:
radius = int(input("Введите радиус: "))
if radius >= 0:
print("Длина окружности = ", 2 * 3.14 * radius)
print("Площадь = ", 3.14 * radius ** 2)
else:
print("Пожалуйста, введите положительное число")
Если попробовать запустить эту программу, то появится следующая ошибка:
$ python3 if_and_else_not_aligned.py
File "if_and_else_not_aligned.py", line 6
else:
^
SyntaxError: invalid syntax
$
Для исправления проблемы нужно вертикально выровнять if и else
Другой пример:
Пример 2: программа для проверки пароля, введенного пользователем.
password = input("Введите пароль: ")
if password == "sshh":
print("Добро пожаловать")
else:
print("Доступ запрещен")
Первый вывод:
Введите пароль: sshh
Добро пожаловать
Второй вывод:
Введите пароль: abc
Доступ запрещен
Вложенные операторы if и if-else
Использовать операторы if-else можно внутри других инструкций if или if-else. Это лучше объяснить на примерах:
Оператор if внутри другого if-оператора
Пример 1: программа, проверяющая, имеет ли студент право на кредит.
gre_score = int(input("Введите текущий лимит: "))
per_grad = int(input("Введите кредитный рейтинг: "))
if per_grad > 70:
if gre_score > 150:
print("Поздравляем, вам выдан кредит")
else:
print("Извините, вы не имеете права на кредит")
Здесь оператор if используется внутри другого if-оператора. Внутренним называют вложенный оператором if. В этом случае внутренний оператор if относится к внешнему блоку if, а у внутреннего блока if есть только одна инструкция, которая выводит “Поздравляем, вам выдан кредит”.
Как это работает:
Сначала оценивается внешнее условие if, то есть per_grad > 70
. Если оно возвращает True
, тогда управление программой происходит внутри внешнего блока if. Там же проверяется условие gre_score > 150
. Если оно возвращает True
, тогда в консоль выводится "Congratulations you are eligible for loan"
. Если False
, тогда программа выходит из инструкции if-else, чтобы исполнить следующие операции. Ничего при этом не выводится в консоль.
При этом если внешнее условие возвращает False
, тогда выполнение инструкций внутри блока if пропускается, и контроль переходит к блоку else (9 строчка).
Первый вывод:
Введите текущий лимит: 160
Введите кредитный рейтинг: 75
Поздравляем, вам выдан кредит
Второй вывод:
Введите текущий лимит: 160
Введите кредитный рейтинг: 60
Извините, вы не имеете права на кредит
У этой программы есть одна маленькая проблема. Запустите ее заново и введите gre_score
меньше чем 150
, а per_grade
— больше 70
:
Вывод:
Введите текущий лимит: 140
Введите кредитный рейтинг: 80
Программа не выводит ничего. Причина в том, что у вложенного оператора if нет условия else. Добавим его в следующем примере.
Пример 2: инструкция if-else внутри другого оператора if.
gre_score = int(input("Введите текущий лимит: "))
per_grad = int(input("Введите кредитный рейтинг: "))
if per_grad > 70:
if gre_score > 150:
print("Поздравляем, вам выдан кредит")
else:
print("У вас низкий кредитный лимит")
else:
print("Извините, вы не имеете права на кредит")
Вывод:
Введите текущий лимит: 140
Введите кредитный рейтинг: 80
У вас низкий кредитный лимит
Как это работает:
Эта программа работает та же, как и предыдущая. Единственное отличие — у вложенного оператора if теперь есть инструкция else. Теперь если ввести балл GRE меньше, чем 150, программа выведет: “У вас низкий кредитный лимит”
При создании вложенных операторов if или if-else, всегда важно помнить об отступах. В противном случае выйдет синтаксическая ошибка.
Оператор if-else внутри условия else
Пример 3: программа для определения оценки студента на основе введенных баллов.
score = int(input("Введите вашу оценку: "))
if score >= 90:
print("Отлично! Ваша оценка А")
else:
if score >= 80:
print("Здорово! Ваша оценка - B")
else:
if score >= 70:
print("Хорошо! Ваша оценка - C")
else:
if score >= 60:
print("Ваша оценка - D. Стоит повторить материал.")
else:
print("Вы не сдали экзамен")
Первый вывод:
Введите вашу оценку: 92
Отлично! Ваша оценка А
Второй вывод:
Введите вашу оценку: 72
Хорошо! Ваша оценка - C
Третий вывод:
Введите вашу оценку: 56
Вы не сдали экзамен
Как это работает:
Когда управление программой переходит к оператору if-else, проверяется условие на строке 3 (score >= 90
). Если оно возвращает True
, в консоль выводится “Отлично! Ваша оценка А”. Если значение неверное, управление переходит к условию else
на 5 строке. Теперь проверяется условие score >= 80
(6 строка). Если оно верное, тогда в консоли выводится “Здорово! Ваша оценка — B”.
В противном случае управление программой переходит к условию else
на 8 строке. И здесь снова имеется вложенный оператор if-else. Проверяется условие (score >= 70
). Если оно истинно, тогда в консоль выводится “Хорошо! Ваша оценка — C”. В противном случае управление переходит к блоку else
на 11 строке. В конце концов, проверяется условие (score >= 60
). Если оно возвращает True
, тогда в консоль выводится “Ваша оценка — D. Стоит повторить материал.” Если же False
, тогда в консоли будет “Вы не сдали экзамен”. На этом этапе управление переходит к следующим инструкциям, написанным после внешнего if-else.
Хотя вложенные операторы if-else позволяют проверять несколько условий, их довольно сложно читать и писать. Эти же программы можно сделать более читабельными и простыми с помощью if-elif-else.
Оператор if-elif-else
Оператор if-elif-else — это альтернативное представление оператора if-else, которое позволяет проверять несколько условий, вместо того чтобы писать вложенные if-else. Синтаксис этого оператора следующий:
if condition_1:
statement
statement
more statement
elif condition_2:
statement
statement
more statement
elif condition_3:
statement
statement
more statement
...
else
statement
statement
more statement
Примечание: …
означает, что можно писать сколько угодно условий eilf
.
Как это работает:
Когда исполняется инструкция if-elif-else, в первую очередь проверяется condition_1
. Если условие истинно, тогда исполняется блок инструкций if. Следующие условия и инструкции пропускаются, и управление переходит к операторам вне if-elif-else.
Если condition_1
оказывается ложным, тогда управление переходит к следующему условию elif
, и проверяется condition_2
. Если оно истинно, тогда исполняются инструкции внутри первого блока elif
. Последующие инструкции внутри этого блока пропускаются.
Этот процесс повторяется, пока не находится условие elif
, которое оказывается истинным. Если такого нет, тогда исполняется блок else в самом конце.
Перепишем программу с помощью if-elif-else.
score = int(input("Введите вашу оценку: "))
if score >= 90:
print("Отлично! Ваша оценка А")
elif score >= 80:
print("Здорово! Ваша оценка - B")
elif score >= 70:
print("Хорошо! Ваша оценка - C")
elif score >= 60:
print("Ваша оценка - D. Стоит повторить материал.")
else:
print("Вы не сдали экзамен")
Первый вывод:
Введите вашу оценку: 78
Хорошо! Ваша оценка - C
Второй вывод:
Введите вашу оценку: 91
Отлично! Ваша оценка А
Третий вывод:
Введите вашу оценку: 55
Вы не сдали экзамен
Такую программу намного легче читать, чем в случае с вложенными if-else.
C ++ Если … Иначе
Условия C ++ и операторы if
C ++ поддерживает обычные логические условия из математики:
- Менее: a
- Меньше или равно: a <= b
- Больше чем: a> b
- Больше или равно: a> = b
- равно a == b
- Не равно: a! = B
Эти условия можно использовать для выполнения различных действий для разных решений.
В C ++ есть следующие условные операторы:
- Используйте
, если
, чтобы указать блок кода, который будет выполняться, если заданное условие истинно - Используйте
иначе
, чтобы указать блок кода, который должен быть выполнен, если то же условие ложно - Используйте
else, если
, чтобы указать новое условие для проверки, если первое условие ложно - Используйте переключатель
Заявление if
Используйте оператор if
, чтобы указать блок
Код C ++, выполняемый, если условие истинно
.
Синтаксис
if ( condition ) {
// блок кода, который будет выполнен, если
условие верно
}
Обратите внимание, что , если
написано строчными буквами. Заглавные буквы (если или ЕСЛИ) вызовут ошибку.
В приведенном ниже примере мы проверяем два значения, чтобы выяснить, больше ли 20, чем
18. Если условие истинно
, выведите текст:
Пример
if (20> 18) {
cout << "20 больше 18";
}
Пример запуска »
Мы также можем проверить переменные:
Пример
int x = 20;
int y = 18;
if (x> y) {
cout << "x больше, чем
y ";
}
Пример запуска »
Объяснение примера
В приведенном выше примере мы используем две переменные: x и y ,
чтобы проверить, больше ли x, чем y
(с использованием оператора >
).Поскольку x равно 20, а y равно 18, и мы знаем, что 20 больше 18, мы выводим на экран, что «x больше, чем y».
.
C ++ If … else (с примерами)
В компьютерном программировании мы используем оператор if
для запуска блочного кода только при выполнении определенного условия.
Например, выставление оценок (A, B, C) на основе оценок, полученных студентом.
- , если процентное значение выше 90 , присвоить оценку A
- , если процент больше 75 , присвоить оценку B
- , если процент больше 65 , присвоить оценку C
Существует три формы if...else
операторов в C ++.
-
если
выписка -
если ... еще
выписка -
if ... else if ... else
оператор
C ++ if Заявление
Синтаксис оператора if
:
if (condition) {
// тело оператора if
}
Оператор if
оценивает условие
в круглых скобках ()
.
- Если
условие
оценивается какистинно
, код внутри тела, если
выполняется. - Если условие
false
, код внутри тела, если
, пропускается.
Примечание: Код внутри {}
является телом оператора if
.
Работа с оператором if в C ++
Пример 1: оператор if в C ++
// Программа для печати положительного числа, введенного пользователем
// Если пользователь вводит отрицательное число, оно пропускается
#include
используя пространство имен std;
int main () {
int число;
cout << "Введите целое число:";
cin >> число;
// проверяет, положительное ли число
if (число> 0) {
cout << "Вы ввели положительное целое число:" << number << endl;
}
cout << "Этот оператор выполняется всегда.";
возврат 0;
}
Выход 1
Введите целое число: 5 Вы ввели положительное число: 5 Этот оператор выполняется всегда.
Когда пользователь вводит 5
, условие число> 0
оценивается как истинно
и выражение внутри тела , если выполняется
.
Выход 2
Введите число: -5 Этот оператор выполняется всегда.
Когда пользователь вводит -5
, условие число> 0
оценивается как false
и оператор внутри тела , если
не выполняется.
C ++ если ... иначе
Оператор if
может иметь необязательное условие else
. Его синтаксис:
if (condition) {
// блок кода, если условие истинно
}
else {
// блок кода, если условие ложно
}
Оператор if..else
оценивает условие
внутри круглых скобок.
Работа C ++ if ... else
Если условие
оценивает истинно
,
- код внутри тела
, если выполняется
- код внутри тела
иначе
пропускается из выполнения
Если условие
оценивает false
,
- код внутри тела
иначе выполняется
- код внутри тела
, если
пропускается из выполнения
Пример 2: C ++ if...else Заявление
// Программа для проверки положительного или отрицательного целого числа
// Эта программа считает 0 положительным числом
#include
используя пространство имен std;
int main () {
int число;
cout << "Введите целое число:";
cin >> число;
if (число> = 0) {
cout << "Вы ввели положительное целое число:" << number << endl;
}
else {
cout << "Вы ввели отрицательное целое число:" << number << endl;
}
cout << "Эта строка всегда печатается.";
возврат 0;
}
Выход 1
Введите целое число: 4 Вы ввели положительное целое число: 4. Эта строка всегда печатается.
В приведенной выше программе у нас есть условие число> = 0
. Если мы введем число, большее или равное 0 , то условие оценивает как истинное
.
Здесь мы вводим 4 . Итак, условие истинно
. Следовательно, оператор внутри тела , если выполняется
.
Выход 2
Введите целое число: -4 Вы ввели отрицательное целое число: -4. Эта строка всегда печатается.
Здесь мы вводим -4 . Итак, условие ложно
. Следовательно, выполняется инструкция внутри тела else
.
C ++ if ... else ... else if оператор
Оператор if ... else
используется для выполнения блока кода из двух альтернатив. Однако, если нам нужно сделать выбор между более чем двумя альтернативами, мы используем if...else if ... else
statement.
Синтаксис оператора if ... else if ... else
:
if (condition1) {
// кодовый блок 1
}
else if (condition2) {
// кодовый блок 2
}
else {
// блок кода 3
}
Здесь,
- Если
condition1
оценивается какtrue
, выполняется кодовый блок1
. - Если
condition1
оценивается какfalse
, то оцениваетсяcondition2
. - Если
condition2
равноtrue
, выполняется кодовый блок - Если
condition2
равноfalse
, выполняется блок кода3
.
Как если ... else if ... else работает
Примечание: Может быть несколько операторов else if
, но только один оператор if
и else
.
Пример 3: C ++ if ... else ... else if
// Программа для проверки, является ли целое число положительным, отрицательным или нулем
#include
используя пространство имен std;
int main () {
int число;
cout << "Введите целое число:";
cin >> число;
if (число> 0) {
cout << "Вы ввели положительное целое число:" << number << endl;
}
else if (number <0) {
cout << "Вы ввели отрицательное целое число:" << number << endl;
}
else {
cout << "Вы ввели 0."<< endl;
}
cout << "Эта строка всегда печатается.";
возврат 0;
}
Выход 1
Введите целое число: 1 Вы ввели положительное целое число: 1. Эта строка всегда печатается.
Выход 2
Введите целое число: -2 Вы ввели отрицательное целое число: -2. Эта строка всегда печатается.
Выход 3
Введите целое число: 0 Вы ввели 0. Эта строка всегда печатается.
В этой программе мы берем номер у пользователя. Затем мы используем релейную схему if ... else if ... else
, чтобы проверить, является ли число положительным, отрицательным или нулевым.
Если число больше 0
, код внутри , если выполняется блок
. Если число меньше 0
, код внутри иначе, если блок
выполняется. В противном случае выполняется код внутри блока else
.
C ++ Вложенный if...else
Иногда нам нужно использовать оператор if
внутри другого оператора if
. Это называется вложенным оператором if
.
Думайте об этом как о нескольких уровнях операторов if
. Есть первый внешний оператор if
, а внутри него - другой внутренний оператор if
. Его синтаксис:
// внешний оператор if
if (condition1) {
// заявления
// внутренний оператор if
if (condition2) {
// заявления
}
}
Примечания:
- Мы можем добавить
else
иelse if
к внутреннему операторуif
по мере необходимости. - Внутренний оператор
if
также может быть вставлен во внешний операторelse
илиelse if
(если они существуют). - Мы можем вложить несколько уровней операторов
if
.
Пример 4: C ++ Вложенный, если
// Программа на C ++, чтобы определить, является ли целое число четным или нечетным или нет (0)
// использование вложенных операторов if
#include
используя пространство имен std;
int main () {
int num;
cout << "Введите целое число:";
cin >> num;
// внешнее условие if
if (число! = 0) {
// внутреннее условие if
if ((число% 2) == 0) {
cout << "Число четное."<< endl;
}
// внутреннее условие else
else {
cout << "Число нечетное." << endl;
}
}
// внешнее условие else
else {
cout << "Число 0, не четное и не нечетное." << endl;
}
cout << "Эта строка всегда печатается." << endl;
}
Выход 1
Введите целое число: 34 Число четное. Эта строка всегда печатается.
Выход 2
Введите целое число: 35 Номер нечетный.Эта строка всегда печатается.
Выход 3
Введите целое число: 0 Число 0, не четное и не нечетное. Эта строка всегда печатается.
В приведенном выше примере
- Мы берем целое число в качестве ввода от пользователя и сохраняем его в переменной num .
- Затем мы используем оператор
if ... else
, чтобы проверить, не равно ли num0
.- Если
истинно
, то внутреннийесли.Выполняется инструкция ..else
. - Если
false
, выполняется код внутри внешнегоelse
условие, которое печатает «Число равно 0 и не является ни четным, ни нечетным».
- Если
- Внутренний оператор
if ... else
проверяет, делится ли введенное число на2
.- Если
истинно
, то печатаем утверждение, что число четное. - Если
false
, печатаем, что число нечетное.
- Если
Обратите внимание, что 0
также делится на 2
, но на самом деле это не четное число. Вот почему мы сначала убеждаемся, что входной номер не равен 0
во внешнем условии , если
.
Примечание: Как видите, вложенный if ... else
усложняет вашу логику. По возможности всегда старайтесь избегать вложенных , если ... иначе
.
Тело if ... else только с одним заявлением
Если тело если...else
имеет только одну инструкцию, вы можете опустить {}
в программе. Например, можно заменить
int number = 5;
if (число> 0) {
cout << "Число положительное." << endl;
}
else {
cout << "Число отрицательное." << endl;
}
с
int number = 5;
если (число> 0)
cout << "Число положительное." << endl;
еще
cout << "Число отрицательное."<< endl;
Результат работы обеих программ будет одинаковым.
Примечание: Хотя не обязательно использовать {}
, если тело if ... иначе
имеет только один оператор, использование {}
делает ваш код более читабельным.
Подробнее о принятии решений
В определенных ситуациях тернарный оператор может заменить оператор if ... else
. Чтобы узнать больше, посетите Тернарный оператор C ++.
Если нам нужно сделать выбор между более чем одной альтернативой на основе заданного условия тестирования, можно использовать оператор switch
.Чтобы узнать больше, посетите переключатель C ++.
Посмотрите эти примеры, чтобы узнать больше:
Программа на C ++ для проверки четности числа или нечетности
Программа C ++ для проверки того, является ли символ гласным или согласным.
Программа на C ++ для поиска наибольшего числа среди трех чисел
.