Оператор ветвления: изучаем 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.

Разбор кода

Здесь все должно быть вам понятным, однако давайте еще разок быстренько пробежимся по написанному нами коду:

  1. В строке 6 мы используем функцию, для вывода русских символов в консоль.
  2. В строке 14 начинается ветвление в C++. Тут у нас стандартный оператор ветвления if, а также оператор else.
  3. Внутри блока if у нас есть дополнительное условие.

Вот собственно и все. В качестве домашнего задания, попытайтесь создать собственного продовца, который сможет продать мороженное. Удачи!

« Цикл for в C++

Инкремент и декремент в C++ »

Обсуждение