Перейти к содержанию
Educora
Начальный18 мин3 / 10

Условия и циклы

Научи программу принимать решения и повторять действия: `if`, `switch`, операторы сравнения и логические операторы, `for`, `while`, `break` и `continue`.

Проверь себя
В этом уроке ты узнаешь
  • Писать if, else if и else с операторами сравнения и логическими операторами
  • Выбирать один из нескольких вариантов с помощью switch
  • Повторять действия с помощью циклов for, while и do-while
  • Управлять циклами с помощью break и continue

В игре надпись «Game over» появляется, когда здоровье персонажа падает до нуля, а экран перерисовывается в каждом кадре. Первое — это условие: программа принимает решение в зависимости от ситуации. Второе — цикл: одна и та же работа повторяется снова и снова. Без этих двух инструментов не обходится ни одна серьёзная программа.

if, else if и else

После ключевого слова if в скобках записывается условие. Если оно истинно (true), выполняется блок в фигурных скобках. else if проверяет следующее условие, а else срабатывает, когда ни одно условие не выполнено. Условия проверяются сверху вниз, и выполняется только блок первого истинного условия.

C++
#include <iostream>

int main() {
    int score = 78;

    if (score >= 90) {
        std::cout << "Excellent\n";
    } else if (score >= 70) {
        std::cout << "Good\n";
    } else if (score >= 50) {
        std::cout << "Satisfactory\n";
    } else {
        std::cout << "Try again\n";
    }
    return 0;
}
Ожидаемый результат
Good

score равно 78: первое условие (78 >= 90) ложно, второе (78 >= 70) истинно — выводится Good, а остальные условия уже не проверяются.

Операторы сравнения и логические операторы

ОператорЗначениеИстинный пример
==равно5 == 5
!=не равно5 != 3
< >меньше, больше3 < 5
<= >=меньше или равно, больше или равно5 >= 5
&&И: оба условия истинны4 > 0 && 4 < 10
||ИЛИ: истинно хотя бы одно4 < 0 || 4 > 2
!НЕ: меняет значение на противоположное!false
C++
#include <iostream>

int main() {
    int age = 15;
    bool hasTicket = true;

    if (age >= 12 && hasTicket) {
        std::cout << "Welcome to the cinema!\n";
    }
    if (age < 7 || age > 65) {
        std::cout << "Free entry\n";
    } else {
        std::cout << "Standard price\n";
    }
    if (!hasTicket) {
        std::cout << "Please buy a ticket\n";
    }
    return 0;
}
Ожидаемый результат
Welcome to the cinema!
Standard price
Интерактив
Загрузка симуляции…
Оператор && работает как логический элемент И: на выходе 1, только когда оба входа равны 1.

switch: выбор из нескольких вариантов

Когда одну переменную нужно сравнить со множеством конкретных значений, удобен switch. Каждый case проверяет одно значение, а break выходит из switch. Если забыть break, выполнение «проваливается» в следующий case — иногда так делают намеренно: ниже 6 и 7 дают одинаковый результат. default срабатывает, если не подошёл ни один case.

C++
#include <iostream>

int main() {
    int day = 6;
    switch (day) {
        case 6:
        case 7:
            std::cout << "Weekend\n";
            break;
        case 5:
            std::cout << "Almost weekend\n";
            break;
        default:
            std::cout << "Working day\n";
    }
    return 0;
}
Ожидаемый результат
Weekend

Циклы for и while

Цикл for используют, когда число повторений известно заранее. В его заголовке три части, разделённые точкой с запятой:

  1. int i = 1 — начало: переменная-счётчик создаётся один раз.
  2. i <= 5 — условие: проверяется перед каждым повторением; когда оно ложно, цикл завершается.
  3. i++ — шаг: выполняется после каждого повторения.
C++
#include <iostream>

int main() {
    for (int i = 1; i <= 5; i++) {
        std::cout << i << " x 3 = " << i * 3 << '\n';
    }
    return 0;
}
Ожидаемый результат
1 x 3 = 3
2 x 3 = 6
3 x 3 = 9
4 x 3 = 12
5 x 3 = 15

Цикл while работает, пока условие истинно, и удобен, когда число повторений заранее неизвестно. Например: у Лейлы 50 манатов, и каждый месяц она откладывает 40 манатов. Через сколько месяцев у неё будет не меньше 200 манатов?

C++
#include <iostream>

int main() {
    int savings = 50;
    int months = 0;
    while (savings < 200) {
        savings += 40;
        months++;
    }
    std::cout << "Months: " << months << '\n';
    std::cout << "Savings: " << savings << " AZN\n";
    return 0;
}
Ожидаемый результат
Months: 4
Savings: 210 AZN
Значения: 90, 130, 170, 210 — после четвёртого месяца условие становится ложным.

Есть и цикл do { ... } while (условие);: он проверяет условие после выполнения блока, поэтому тело выполняется хотя бы один раз. Это удобно, например, чтобы показать пользователю меню хотя бы однажды.

break и continue

break немедленно прекращает цикл, а continue пропускает остаток текущего повторения и переходит к следующему. Программа ниже пропускает чётные числа и завершает цикл, дойдя до числа больше 7:

C++
#include <iostream>

int main() {
    for (int n = 1; n <= 10; n++) {
        if (n % 2 == 0) {
            continue;
        }
        if (n > 7) {
            break;
        }
        std::cout << n << '\n';
    }
    return 0;
}
Ожидаемый результат
1
3
5
7

Главное

  • if, else if и else проверяют условия сверху вниз и выполняют блок первого истинного.
  • == сравнивает, = присваивает; &&, || и ! объединяют условия.
  • switch сравнивает переменную с конкретными значениями; не забывай break в конце каждого case.
  • for подходит для известного числа повторений, while работает, пока условие истинно, а do-while выполняется хотя бы раз.
  • break прекращает цикл, а continue переходит к следующему повторению.

Проверь себя

Вопросов: 10. Каждый правильный ответ приносит XP.

1 / 10
Что выведет этот код при int t = 25;? if (t > 30) { std::cout << "Hot"; } else if (t > 20) { std::cout << "Warm"; } else { std::cout << "Cold"; }