Оператор ветвления: изучаем if-else с примерами
Здравствуйте, дорогие друзья! Сложно представить себе полноценную программу, которая будет работать одинаково при любых обстоятельствах. Довольно часто приходится выбирать, между несколькими вариантами развития событий в зависимости от поступающих данных. Решением данной проблемы в C++ занимается оператор ветвления.
Что такое оператор ветвления?
Давайте представим, что мы пришли в магазин. У нас есть одна цель - купить товар. Однако есть одно ограничение. Его цена не должна превышать определенную сумму. В нашем случае условие следующие: our_money >= price
. Если это условие выполняется, то у нас все замечательно и мы счастливые направляемся к кассе. В противном случае нам придется искать более дешевый вариант данного товара.
Думаю у вас в голове уже сложилось понимание основных концептов ветвления в C++.
Оператор if
Чтобы указать условие при выполнении которого будет выполняться определенный код, тогда вам потребуется прибегнуть к следующей структуре:
-
набрать ключевое слово
if
в своей программе; -
после него, в круглых скобках, вы должны указать логическое выражение:
if ( <ваше выражение> )
Здесь вместо
<ваше выражение>
нужно указать требуемое условие, при котором будет выполняться требуемый нам код. -
инструкции, которые будут выполнятся, мы оборачиваем в фигурные скобки сразу после круглых скобок с условием:
if ( <условие> ) { <выполняемый код> }
Подобная структура, для обрамления кода, также используется в стандартной функции main (подробнее об этом можете почитать здесь).
Также можно вовсе пренебречь фигурными скобками. Однако это можно сделать только в том случае, если в качестве исполняемого кода будет указана лишь одна инструкция (или один оператор, в том числе другой оператор ветвления, который уже может содержать любое количество инструкций):
if (a > 7) // никаких скобок нет
if (a < 9) { // вложенный оператор if
cout << "A = 8" << endl; // выводим сообщение
return 0; // завершаем работу программы
}
// или
if (a < 7)
cout << "Yes!" << endl;
Код с вложенным оператором if
считается абсолютно корректным. Конечно, можно было использовать фигурные скобки в обоих случаях. Это никак не повлияло бы на работы программы.
Я же предпочитаю вариант со скобками, поскольку в случае написания реальных программ никогда не знаешь когда и куда придется добавить еще одну инструкцию. Также это способствует лучшему восприятию кода. Однако в наших уроках буду использовать сокращенный вариант для экономия места.
Поэтому, какой именно способ выбрать зависит только от вас.
Оператор else
Оператор else
выполняется в том случае, если условие указанное в if ложно. В таком случае будет проигнорирован код в блоке if
, и программа сражу перейдет к выполнению кода в блоке else
.
Данный оператор нужно прописывать после закрывающей фигурной скобки блока кода if
или после единственной инструкции оператора if:
if (a < b) {
a = b;
} else {
b = a + 1;
}
// или так
if (c < b)
c = 7;
else
cout << "C >= b" << endl;
Как видите, правила к коду внутри оператора else ровно такие же как и к коду внутри оператора if. Теперь давайте попробуем создать более сложную программу, которая будет использовать конструкцию ветвления.
Комбинация нескольких операторов
Довольно часто возникает необходимость в указании сразу нескольких вариантов действий. В таком случае нам не сможет помочь помочь всего один оператор ветвления if-else.
Вот небольшой пример комбинированной конструкции сразу с несколькими условиями:
if (err == 1) // начальное условие
return 1;
else if (err == 2) // второе условие
return 2
else if (err == 3) // третье условие
return 3;
else // если ничто не подошло
return 0;
Теперь давайте более подробно разберем данную структуру:
- Сначала мы указываем начальное условие.
- Далее прописываем второй вариант при помощи
else if ( <второе условие> )
. - Подобных вариантов может быть сколь угодно много. Например, можно прописать условие для каждой буквы алфавита.
- В самом конце, после
else
, мы указыванием тот код, который должен выполнится в том случае, если ни одно из условий не соответствует нашим требованиям.
С помощью подобных условий можно создавать сложные варианты развития программы. Вы также можете вкладывать одни условия в другие, тем самым создавая еще более сложные и развернутые решение поставленных перед вами задач.
Пример
В качестве примера давайте напишем программу, которая будет эмулировать поведение продавца магазина. Для создания подобной программы давайте воспользуемся структурой if-else:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
setlocale(0, ""); // устанавливаем локаль
bool b; // создаем переменную типа bool
cout << "Хотите купить машину? "; // выводим сообщение
cin >> b; // узнаем ответ покупателя
if (b) { // проверяем, что ответил пользователь
cout << "Хотите Audi? "; // опять сообщение
cin >> b; // и снова узнаем ответ
if (b) // очередная проверка
cout << "Пройдемте со мной." << endl;
else // предлагаем альтернативное решение
cout << "Тогда вам в соседний отдел." << endl;
} else
cout << "Так зачем вы сюда пришли?" << endl;
return 0;
}
Хотите купить машину? 1
Хотите Audi? 1
Пройдемте со мной.
Process returned 0 (0x0) execution time : 6.327 s
Press any key to continue.
Разбор кода
Здесь все должно быть вам понятным, однако давайте еще разок быстренько пробежимся по написанному нами коду:
- В строке 6 мы используем функцию, для вывода русских символов в консоль.
- В строке 14 начинается ветвление в C++. Тут у нас стандартный оператор ветвления if, а также оператор else.
- Внутри блока if у нас есть дополнительное условие.
Вот собственно и все. В качестве домашнего задания, попытайтесь создать собственного продовца, который сможет продать мороженное. Удачи!
Если хотите всегда быть в курсе последних новостей в мире программирования и IT, подписываетесь на мой Telegram-канал, где я делюсь свежими статьями, новостями и полезными советами. Буду рад видеть вас среди подписчиков!
Обсуждение