C++

Вложенный условный оператор

Вложенный условный оператор позволяет нам сделать программу более гибкой. Мы можем навесить дополнительные действия с частично правильными условиями, но в то же время нам придется писать больше кода, что не так и хорошо. Однако опустить эту тему, было бы совсем неправильно.

Структура вложенного условного оператора

Вложенный условный оператор c++

Почему мы называем вложенный условный оператор? Потому что мы взяли условный оператор и положили в него еще один. Поэтому и говорят. Вложенный условный оператор. Это как матрешка. Взяли матрешку и положили в нее еще одну. Взяли еще одну матрешку и положили еще глубже. И так далее.

Какая вложенность может быть?

Сколько угодно. Ходит такая легенда, что какие-то студенты, умудрились вложить 256 операторов. Но так делать не стоит. В промышленном программировании есть стандарт. Не более трех условных операторов. И если вы написали 3 и испытываете необходимость сделать четвертую вложенность. Остановитесь. Что-то вы делаете неправильно.

Сравнение двух путей

Вложенный условный оператор сравнение

Посмотрите на изображение сверху и снизу. И подумайте, будут ли они тождественными (равными)? В принципе будут. С точки зрения реализации, они не совсем одинаковы. Но с точки зрения работы программы, они будут работать одинаково.

Сложный условный оператор

Давайте проверим так ли это. Посмотрите на изображение 1. Если a больше b и условие выполнилось, мы заходим внутрь нашей программы и проверяем следующее условие. Если c меньше d и условие выполнилось, мы заходим внутрь и выполняем тот набор действий, который нам необходим.

Давайте теперь проверим изображение 2. Если a больше b и c меньше d, только при выполнении обоих этих условиях, мы заходим внутрь этого условия и выполняем тот же самый набор действий.

У каждой формы записи есть свои плюсы и минусы.

Вложенный if

Плюсы:
Вложенный if позволяет проявлять определенную гибкость. Мы не проверяем сразу все условия. Мы проверили первое условие, если оно выполнилось, тогда мы переходим к проверке второго условия. А если не выполнилось, мы второе тогда даже проверять не будем.

Минусы:
Посмотрите на первое изображение и посмотрите на второе изображение. Первая запись кажется немного громоздкой. Не сразу можно понять, что происходит в первой записи. При этом кода нам придется писать больше.

Сложный условный оператор

Плюсы:
Код читается наглядно и он более краток.

Минусы:
Мы ограничиваем себя в действиях. Иногда, некоторые вещи при помощи подобного условия написать невозможно.

Решение задач

Подробный разбор задачи

По правилам этикета при приветствии «Доброе утро» говорят только с 6:00 до 10:59, «Добрый день» — с 11:00 до 17:59, «Добрый вечер» — с 18:00 и до 22:59.

Вам дан номер текущего часа h. Требуется вывести

  1. Good morning, если нужно сказать «Доброе утро»;
  2. Good day, если нужно сказать «Добрый день»;
  3. Good evening, если нужно сказать «Добрый вечер».

С клавиатуры вводится целое число h (8 <= h <= 22). Решение:

Урок назад мы бы решили нашу задачу вот таким способом:

Задача

Но мы можем пойти другим путем. Более изящным, если поставим себе задачу – уменьшить количество условий.

Как мы можем это сделать?

Мы же можем записать так?
if (t < 11) {
    Тогда утро;
} else {
    А что сюда?
}

Вполне можем, так как знаем, что первое значение, которое нам могут задать – это 6. И любая цифра от 6 до 11 будет означать утро. А в противном случае…

И вот в else, мы можем задать другие условия, которые ставятся перед нами.

Значит в else мы можем вписать два других наших условия. И выглядеть будет примерно так:

if (t < 11) {
    cout << “Good morning” << endl;
} else {
    if (t < 18) { // t >= 11;
        cout << “Good day” << endl;
    } else { // t >= 18;
        cout << “Good evening” << endl;
    }
}

Почему это происходит? Мы с вами знаем, что не попали в первое условие, значит идем по программе дальше и записываем 2 других условия внутри выражения «иначе».

Високосный год

Дан номер года. Требуется определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный –— 366 дней. Високосным считается год, делящийся на 4, но не делящийся на 100, либо делящиеся на 400 (например, годы 700, 1400 и 1800 не являются високосными, а 1600 и 2000 –— являются).

Формат входных данных
Вводится неотрицательное целое число y (0 <= y <= 231−1) — номер года.

Формат выходных данных
Выведите количество дней в данном году.
Примеры
входные данные
3
16
выходные данные
365
366

Решение задачи Високосный год

Видео по теме урока

Tags

Related Articles

Leave a Reply

Back to top button
Close