Перейти к содержимому

Условия и циклы в C/C++

Условия и циклы в C/C++

В этом уроке вы познакомитесь с условными операторами if, else, тернарным оператором и циклами while, do while, for в C++. В конце вас ждут практические задачи с решениями и чек-лист для самопроверки.

Главная мысль урока: условные операторы помогают программе принимать решения, а циклы позволяют повторять действия нужное число раз. Например, if (age >= 18) проверяет условие, а for (int i = 0; i < 5; i++) повторяет код несколько раз.

Содержание

1. Цели урока

  • Понять, как работают операторы if, else, else if.
  • Научиться использовать тернарный оператор для простого выбора из двух значений.
  • Освоить циклы while, do while и for.
Что особенно важно запомнить: условия отвечают за выбор, а циклы отвечают за повторение.
↑ К оглавлению

2. Что такое условия и циклы в C++

Программа редко выполняет все команды подряд без изменений. Обычно ей нужно проверять значения переменных, выбирать один из вариантов действий и иногда повторять один и тот же код несколько раз. Для этого в C++ используются условные операторы и циклы.

Условный оператор проверяет выражение и решает, какой блок кода выполнить. Цикл повторяет блок кода, пока выполняется условие или пока не будет достигнут предел повторений.

#include <iostream>
using namespace std;

int main()
{
    int age = 20;

    if (age >= 18)
    {
        cout << "Dostup razreshen" << endl;
    }

    return 0;
}

Частая путаница

Запомните: условие ничего не повторяет само по себе, а цикл ничего не выбирает сам по себе. Это разные конструкции с разной задачей.
↑ К оглавлению

3. Условные операторы if, else, else if

База

Оператор if выполняет код только тогда, когда условие истинно. Если нужно выполнить другой код при ложном условии, добавляют else. Если вариантов несколько, используют цепочку else if.

#include <iostream>
using namespace std;

int main()
{
    int temperature = -5;

    if (temperature > 0)
    {
        cout << "Na ulitse teplo" << endl;
    }
    else
    {
        cout << "Na ulitse holodno" << endl;
    }

    return 0;
}
#include <iostream>
using namespace std;

int main()
{
    int score = 82;

    if (score >= 90)
    {
        cout << "Otlichno" << endl;
    }
    else if (score >= 75)
    {
        cout << "Horosho" << endl;
    }
    else if (score >= 60)
    {
        cout << "Udovletvoritelno" << endl;
    }
    else
    {
        cout << "Nuzhno podtyanut znaniya" << endl;
    }

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

Типовые задачи

Проверка знака числа

Нужно определить, число положительное, отрицательное или равно нулю.

int number = -3;

if (number > 0)
{
    cout << "Polozhitelnoe" << endl;
}
else if (number < 0)
{
    cout << "Otricatelnoe" << endl;
}
else
{
    cout << "Nol" << endl;
}

Проверка доступа

Нужно разрешить вход только совершеннолетнему пользователю.

int age = 17;

if (age >= 18)
{
    cout << "Vhod razreshen" << endl;
}
else
{
    cout << "Vhod zapreshen" << endl;
}

Типичные ошибки

Ошибка 1: путаница между = и ==

int x = 5;

// if (x = 10)  // oshibka po smyslu: zdes prisvaivanie, a ne sravnenie

if (x == 10)
{
    cout << "x ravno 10" << endl;
}

Ошибка 2: неправильный порядок условий

int score = 95;

// Nepravilno
if (score >= 60)
{
    cout << "Sdano" << endl;
}
else if (score >= 90)
{
    cout << "Otlichno" << endl;
}

// Pravilno: snachala bolee strogoe uslovie
if (score >= 90)
{
    cout << "Otlichno" << endl;
}
else if (score >= 60)
{
    cout << "Sdano" << endl;
}
↑ К оглавлению

4. Тернарный оператор

Синтаксис и правила

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

uslovie ? znachenie1 : znachenie2;
#include <iostream>
#include <string>
using namespace std;

int main()
{
    int number = 7;
    string result = (number % 2 == 0) ? "Chetnoe" : "Nechetnoe";

    cout << result << endl;

    return 0;
}
Запомните: тернарный оператор хорош для коротких и понятных выражений, но сложную логику лучше писать через if и else.

Типовые рецепты

Выбор большего числа

int a = 10;
int b = 20;

int maxValue = (a > b) ? a : b;
cout << maxValue << endl;

Преобразование условия в текст

int age = 19;

string message = (age >= 18) ? "Sovershennoletniy" : "Nesovershennoletniy";
cout << message << endl;

Ошибки

Ошибка 1: слишком сложное выражение

int score = 80;

// Takoy kod huzhe chitaetsya
string result = (score >= 90) ? "Otlichno" : (score >= 75) ? "Horosho" : "Nuzhno uchit";

// Dlya novichka luchshe obychnyy if / else if / else

Ошибка 2: ожидание выполнения нескольких команд

int x = 5;

// Ternarnyy operator vybiraet vyrazhenie, a ne udoben dlya dlinnyh blokov koda
string text = (x > 0) ? "Polozhitelnoe" : "Ne polozhitelnoe";
cout << text << endl;
↑ К оглавлению

5. Циклы while, do while, for

Циклы нужны для повторения кода. Выбор конкретного цикла зависит от задачи. while проверяет условие перед выполнением, do while сначала выполняет код, а потом проверяет условие, а for удобен, когда число повторений известно заранее.

#include <iostream>
using namespace std;

int main()
{
    int i = 1;

    while (i <= 5)
    {
        cout << i << endl;
        i++;
    }

    return 0;
}
#include <iostream>
using namespace std;

int main()
{
    int i = 1;

    do
    {
        cout << i << endl;
        i++;
    }
    while (i <= 5);

    return 0;
}
#include <iostream>
using namespace std;

int main()
{
    for (int i = 1; i <= 5; i++)
    {
        cout << i << endl;
    }

    return 0;
}
Практический вывод: если заранее известно количество повторений, чаще всего выбирают for.

Типичные ошибки

Ошибка 1: бесконечный цикл

int i = 1;

// Oshibka: i ne menyaetsya, uslovie vsegda istinno
// while (i <= 5)
// {
//     cout << i << endl;
// }

while (i <= 5)
{
    cout << i << endl;
    i++;
}

Ошибка 2: забытая точка с запятой после while в do while

int i = 1;

do
{
    cout << i << endl;
    i++;
}
while (i <= 3);

Ошибка 3: неправильная граница цикла

// Vyvod ot 1 do 5 vklyuchitelno
for (int i = 1; i <= 5; i++)
{
    cout << i << endl;
}
↑ К оглавлению

6. Когда какой цикл и оператор выбирать

Сравнение подходов

if используют, когда нужно принять решение. Тернарный оператор выбирают, когда требуется коротко присвоить одно из двух значений. while подходит, когда количество повторений заранее неизвестно. do while нужен, когда код должен выполниться хотя бы один раз. for удобен для счетчика и известного количества шагов.

// if
if (number > 0)
{
    cout << "Polozhitelnoe" << endl;
}

// Ternarnyy operator
string text = (number > 0) ? "Plyus" : "Ne plyus";

// while
while (number > 0)
{
    number--;
}

// for
for (int i = 0; i < 10; i++)
{
    cout << i << endl;
}

Типичные ошибки

Ошибка 1: использование while там, где удобнее for

// Rabotaet, no menee udobno
int i = 0;
while (i < 5)
{
    cout << i << endl;
    i++;
}

// Dlya schetchika luchshe for
for (int j = 0; j < 5; j++)
{
    cout << j << endl;
}

Ошибка 2: использование тернарного оператора вместо понятного if

// Dlya slozhnoy logiki luchshe obychnyy if
int score = 88;

if (score >= 90)
{
    cout << "Otlichno" << endl;
}
else if (score >= 75)
{
    cout << "Horosho" << endl;
}
else
{
    cout << "Nuzhno podtyanut znaniya" << endl;
}
Что выбрать на практике: простое решение почти всегда лучше слишком короткого, но непонятного.
↑ К оглавлению

7. Практика: типовые задачи (с решениями)

Базовые задачи

Задача 1: Определить, четное число или нечетное

Программа получает число и выводит результат проверки.

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int number;
    cin >> number;

    string result = (number % 2 == 0) ? "Chetnoe" : "Nechetnoe";
    cout << result << endl;

    return 0;
}

Задача 2: Проверить знак числа

Нужно вывести, положительное число, отрицательное или ноль.

#include <iostream>
using namespace std;

int main()
{
    int number;
    cin >> number;

    if (number > 0)
    {
        cout << "Polozhitelnoe" << endl;
    }
    else if (number < 0)
    {
        cout << "Otricatelnoe" << endl;
    }
    else
    {
        cout << "Nol" << endl;
    }

    return 0;
}

Задачи на циклы и условия

Задача 3: Вывести числа от 1 до N

Используйте цикл for.

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;

    for (int i = 1; i <= n; i++)
    {
        cout << i << " ";
    }

    return 0;
}

Задача 4: Вывести только четные числа от 2 до 10

#include <iostream>
using namespace std;

int main()
{
    for (int i = 2; i <= 10; i += 2)
    {
        cout << i << endl;
    }

    return 0;
}

Задача 5: Запрашивать пароль, пока он не станет правильным

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string password;

    do
    {
        cout << "Vvedite parol: ";
        cin >> password;
    }
    while (password != "12345");

    cout << "Parol vernyy" << endl;

    return 0;
}
↑ К оглавлению

8. Чек-лист самопроверки знаний

Отметьте пункты, которые вы действительно понимаете и можете применить без подсказок.

НавыкПроверка
Оператор if Могу написать условие с if для проверки значения переменной.
Оператор else Могу добавить ветку else для случая, когда условие ложно.
Цепочка else if Могу проверить несколько вариантов подряд через else if.
Сравнение Могу объяснить разницу между = и ==.
Тернарный оператор Могу использовать условие ? значение1 : значение2 для простого выбора.
Цикл while Могу написать цикл while и изменить переменную так, чтобы цикл завершился.
Цикл do while Могу объяснить, почему do while выполняется хотя бы один раз.
Цикл for Могу использовать for для повторения кода заданное количество раз.
Выбор конструкции Могу выбрать между if, тернарным оператором, while и for в простой задаче.
↑ К оглавлению

Ссылки по теме

Вторник, 03 марта 2026
Условия и циклы в C/C++