🧠 Урок 6. Вложенные условия в C++
Урок 6. Вложенные условия в C++
👋 Вступление
В прошлом уроке мы научились использовать else if, чтобы проверять несколько условий подряд.
Сегодня мы расширим эти знания и разберём вложенные условия — это конструкции, при которых одно условие содержится внутри другого.
Такой подход позволяет принимать более точные решения на основе нескольких факторов 🧩
🏓 Что такое вложенные условия
Представим ситуацию: вы организуете школьный турнир по настольному теннису.
Участников нужно распределить по группам в зависимости от возраста и опыта.
Сначала проверим возраст, а затем — наличие опыта:
int age = 14;
bool hasExperience = true;

if (age >= 12) {
    if (hasExperience) {
        cout << "Вы участвуете в группе для опытных игроков!" << endl;
    } else {
        cout << "Вы участвуете в группе для новичков старше 12 лет!" << endl;
    }
} else {
    cout << "Извините, но для участия вам должно быть больше 12 лет." << endl;
}

🧪 Тестирование программы


Теперь давайте запустим программу с разными входными данными и посмотрим на результат:

🔹 Пример 1:
💬 Вывод:
Вы участвуете в группе для опытных игроков!
🔍 Объяснение: возраст ≥ 12 и есть опыт → опытная группа.
int age = 14;
bool hasExperience = true;
🔹 Пример 2:
💬 Вывод:
Вы участвуете в группе для новичков старше 12 лет!
🔍 Объяснение: возраст ≥ 12, но опыта нет → новичок.
int age = 14;
bool hasExperience = false;
🔹 Пример 3:
💬 Вывод:
Извините, но для участия вам должно быть больше 12 лет.
🔍 Объяснение: возраст < 12 — к турниру не допускается.
int age = 10;
bool hasExperience = true;

🔍 Пошаговый разбор

✅ Проверка возраста:
Программа проверяет, достаточно ли игроку лет. Если возраст ≥ 12 — продолжаем. Иначе — сразу выводим сообщение об отказе.
if (age >= 12) {
✅ Проверка опыта:
Если есть опыт — игрок в группе опытных. Если нет — в группе новичков.
if (hasExperience) {
    cout << "Вы участвуете в группе для опытных игроков!" << endl;
} else {
    cout << "Вы участвуете в группе для новичков старше 12 лет!" << endl;
}
✅ Действие по умолчанию:
Если возраст не подходит — программа завершает выполнение и сообщает об отказе.
} else {
    cout << "Извините, но для участия вам должно быть больше 12 лет." << endl;
}
❓ Когда полезно использовать вложенные условия
📌 Используйте вложенные условия:
  • Когда проверки логически зависят друг от друга;
  • Когда код можно разбить на этапы;
  • Когда нужно сделать структуру программы более понятной.
🚫 Не злоупотребляйте вложенностью:
  • Если код становится сложным для понимания;
  • Если условия вложены слишком глубоко;
  • При высоких требованиях к производительности.
💡 В таких случаях лучше использовать switch — о нём поговорим в следующем уроке!

🎬 Пример 2 — Программа "Кинотеатр"

Теперь решим другую задачу — определить тип билета в кинотеатре в зависимости от возраста и наличия пенсионного удостоверения 🎟️
#include <iostream>
using namespace std;
int main() {
    int age;
    bool hasPensionID;

    cout << "Введите ваш возраст: ";
    cin >> age;

    cout << "У вас есть пенсионное удостоверение? (1 - да, 0 - нет): ";
    cin >> hasPensionID;

    if (age < 12) {
        cout << "Детский билет" << endl;
    } else if (age > 65) {
        if (hasPensionID) {
            cout << "Скидка для пенсионеров" << endl;
        } else {
            cout << "Полный билет" << endl;
        }
    } else if (age <= 18) {
        cout << "Средний билет" << endl;
    } else {
        cout << "Полный билет" << endl;
    }
    return 0;
}

🧪 Тестирование программы

🔹 Пример 1:
💬 Вывод: Детский билет
🔍 Объяснение: возраст < 12
age = 10
hasPensionID = false
🔹 Пример 2:
💬 Вывод: Скидка для пенсионеров
🔍 Объяснение: возраст > 65 и есть пенсионное удостоверение
age = 70
hasPensionID = true
🔹 Пример 3:
💬 Вывод: Полный билет
🔍 Объяснение: пенсионного удостоверения нет
age = 70
hasPensionID = false
🔹 Пример 4:
💬 Вывод: Средний билет
🔍 Объяснение: возраст от 12 до 18
age = 15
hasPensionID = false
🔹 Пример 5:
💬 Вывод: Полный билет
🔍 Объяснение: стандартная цена
age = 30
hasPensionID = false

🔍 Пошаговый разбор

✅ Ввод возраста:
📌 Пользователь вводит свой возраст, который будет использоваться для определения категории билета.
cin >> age;
✅ Ввод пенсионного удостоверения:
📌 Спрашиваем у пользователя, есть ли пенсионное удостоверение. Это влияет на возможную скидку.
cin >> hasPensionID;
✅ Детский билет:
📌 Для детей младше 12 лет — специальная цена.
if (age < 12) {
    cout << "Детский билет" << endl;
}
✅ Проверка пенсионера:
📌 Люди старше 65 лет получают скидку при наличии удостоверения.
else if (age > 65) {
    if (hasPensionID) {
        cout << "Скидка для пенсионеров" << endl;
    } else {
        cout << "Полный билет" << endl;
    }
}
✅ Средний билет:
📌 Для подростков — средняя цена.
else if (age <= 18) {
    cout << "Средний билет" << endl;
}
✅ Полный билет:
📌 Всем остальным — обычная цена.
else {
    cout << "Полный билет" << endl;
}

🏠 Домашнее задание


✍️ Задача: создать программу, оценивающую успеваемость ученика по оценке и посещаемости:

Оценка > 85 и хорошая посещаемость → Отличный ученик!

Оценка > 60 и хорошая посещаемость → Хороший ученик

Оценка < 60 и плохая посещаемость → Нужно подтянуть знания и посещаемость

Иначе → Нормально, но можно лучше

Удачи! Ты справишься 🙌

📌 Подведение итогов


Сегодня ты узнал, как использовать вложенные условия, чтобы управлять сложной логикой в программе.
❗ Не забывай — чем глубже вложенность, тем сложнее читать и отлаживать код.
Иногда лучше заменить вложенные условия на более удобные конструкции, такие как switch.

🌐 Поддержка и сообщество


Не забудьте подписаться на наши соцсети, чтобы получать обновления и полезные советы!
🧾 Разбор домашнего задания

Урок 6 — Вложенные условия в C++
🧾 Разбор домашнего задания
Урок 6 — Вложенные условия в C++

📌 Напоминание задачи


На прошлом уроке вы получили задание:
написать программу, которая оценивает уровень успеваемости ученика по его оценке и посещаемости.

Условия задачи:

📈 Оценка > 85 и посещаемость хорошая → Отличный ученик!
👍 Оценка > 60 и посещаемость хорошая → Хороший ученик
⚠️ Оценка < 60 и посещаемость плохая → Нужно подтянуть знания и посещаемость
🟡 Во всех остальных случаях → Нормально, но можно лучше
💻 Пример решения
#include <iostream>
using namespace std;

int main() {
    int grade;
    bool goodAttendance;

    cout << "Введите вашу оценку: ";
    cin >> grade;

    cout << "Хорошая ли у вас посещаемость? (1 - да, 0 - нет): ";
    cin >> goodAttendance;

    if (grade > 85) {
        if (goodAttendance) {
            cout << "Отличный ученик!" << endl;
        } else {
            cout << "Нормально, но можно лучше" << endl;
        }
    } else if (grade > 60) {
        if (goodAttendance) {
            cout << "Хороший ученик" << endl;
        } else {
            cout << "Нормально, но можно лучше" << endl;
        }
    } else {
        if (!goodAttendance) {
            cout << "Нужно подтянуть знания и посещаемость" << endl;
        } else {
            cout << "Нормально, но можно лучше" << endl;
        }
    }

    return 0;
}

🧪 Тестирование программы


Теперь давайте проверим, как работает программа при разных комбинациях оценки и посещаемости:

🔹 Пример 1

🟢 Вывод: Отличный ученик!
📘 Объяснение: высокая оценка и хорошая посещаемость → наивысший результат.
grade = 90
goodAttendance = true

🔹 Пример 2

🟡 Вывод: Нормально, но можно лучше
📘 Объяснение: оценка высокая, но посещаемость — нет.
grade = 90
goodAttendance = false

🔹 Пример 3

🔵 Вывод: Хороший ученик
📘 Объяснение: средняя оценка и хорошая посещаемость.
grade = 75
goodAttendance = true

🔹 Пример 4

🟡 Вывод: Нормально, но можно лучше
📘 Объяснение: хорошая оценка, но слабая посещаемость.
grade = 75
goodAttendance = false

🔹 Пример 5

🔴 Вывод: Нужно подтянуть знания и посещаемость
📘 Объяснение: низкая оценка + плохая посещаемость — нужно подтянуться.
grade = 55
goodAttendance = false

🔹 Пример 6

🟡 Вывод: Нормально, но можно лучше
📘 Объяснение: посещаемость хорошая, но оценка низкая — всё ещё можно улучшить.
grade = 55
goodAttendance = true

🧠 Пошаговый разбор

🟦 Ввод оценки

📝 Пользователь вводит свою оценку. Она сохраняется в переменной grade и используется в логике условий.
cin >> grade;
🟧 Ввод посещаемости
📊 Пользователь вводит 1 (да) или 0 (нет). Результат сохраняется в переменной goodAttendance, которая влияет на итоговый вывод.
cin >> goodAttendance;
🟩 Проверка на «Отличного ученика»
🏅 Если оценка выше 85 и посещаемость хорошая — ученик получает наивысшую похвалу.
📉 При плохой посещаемости — вывод чуть скромнее.
if (grade > 85) {
    if (goodAttendance) {
        cout << "Отличный ученик!" << endl;
    } else {
        cout << "Нормально, но можно лучше" << endl;
    }
}
🟨 Проверка на «Хорошего ученика»
🙂 Оценка от 61 до 85 с хорошей посещаемостью — это уверенный уровень.
🤔 При низкой посещаемости — система осторожничает и предлагает подтянуться.
else if (grade > 60) {
    if (goodAttendance) {
        cout << "Хороший ученик" << endl;
    } else {
        cout << "Нормально, но можно лучше" << endl;
    }
}
🟥 Проверка на низкую оценку и плохую посещаемость
🛑 В этом случае всё очевидно — нужна работа над ошибками.
🔁 Если хотя бы посещаемость хорошая, шанс на прогресс остаётся!
else {
    if (!goodAttendance) {
        cout << "Нужно подтянуть знания и посещаемость" << endl;
    } else {
        cout << "Нормально, но можно лучше" << endl;
    }
}
Завершение программы
Стандартное завершение программы.
return 0;
}

✅ Заключение


Как видите, решение вполне логичное и структурированное.
Если у вас получилось — отлично! 🎉
Если нет — не страшно. Вы теперь точно знаете, как должно быть.

📲 Присоединяйтесь к Innova School


Будьте в курсе новых уроков, разборов и лайфхаков — подписывайтесь на нас в соцсетях:
мы публикуем много полезного и помогаем расти в программировании с нуля 🚀
До встречи на следующем занятии!
Made on
Tilda