Циклы в C++: for, while и do while — практическое руководство для...

Циклы в C++: for, while и do while — практическое руководство для начинающих

Циклы в C++: for, while и do while — практическое руководство для начинающих

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

Что такое цикл в C++

Цикл — это конструкция, которая выполняет блок кода несколько раз, пока выполняется заданное условие. В C++ чаще всего используют три вида циклов:

  • for — когда заранее известно количество повторений;
  • while — когда повторение зависит от условия;
  • do while — когда тело цикла нужно выполнить минимум один раз.
  • Начнём с самого популярного варианта.

    Цикл for в C++

    Цикл for удобен, когда нужно выполнить код определённое количество раз. Общая форма выглядит так:

    for (инициализация; условие; изменение) {
        // код, который повторяется
    }

    Пример: выведем числа от 1 до 5.

    #include <iostream>
    
    int main() {
        for (int i = 1; i <= 5; i++) {
            std::cout << i << " ";
        }
    
        return 0;
    }

    Что здесь происходит:

  • int i = 1 — создаём счётчик;
  • i <= 5 — цикл работает, пока условие истинно;
  • i++ — после каждой итерации увеличиваем счётчик на 1.
  • Результат:

    1 2 3 4 5

    Обратный отсчёт через for

    Счётчик можно не только увеличивать, но и уменьшать:

    #include <iostream>
    
    int main() {
        for (int i = 5; i >= 1; i--) {
            std::cout << i << " ";
        }
    
        std::cout << "Старт!";
        return 0;
    }

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

    Цикл while в C++

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

    while (условие) {
        // код цикла
    }

    Например, попросим пользователя вводить положительные числа. Если он введёт 0 или отрицательное число, программа завершит цикл.

    #include <iostream>
    
    int main() {
        int number;
    
        std::cout << "Введите положительное число: ";
        std::cin >> number;
    
        while (number > 0) {
            std::cout << "Вы ввели: " << number << std::endl;
            std::cout << "Введите следующее число: ";
            std::cin >> number;
        }
    
        std::cout << "Цикл завершён.";
        return 0;
    }

    Здесь цикл зависит не от счётчика, а от пользовательского ввода. Это типичный сценарий для while.

    Цикл do while: выполнить хотя бы один раз

    Главное отличие do while от while в том, что условие проверяется после выполнения тела цикла. Поэтому код внутри выполнится минимум один раз.

    do {
        // код цикла
    } while (условие);

    Практический пример — простое меню:

    #include <iostream>
    
    int main() {
        int choice;
    
        do {
            std::cout << "nМеню:n";
            std::cout << "1. Сказать приветn";
            std::cout << "2. Показать версиюn";
            std::cout << "0. Выходn";
            std::cout << "Ваш выбор: ";
            std::cin >> choice;
    
            if (choice == 1) {
                std::cout << "Привет!n";
            } else if (choice == 2) {
                std::cout << "Версия 1.0n";
            }
        } while (choice != 0);
    
        std::cout << "До свидания!";
        return 0;
    }

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

    break: досрочный выход из цикла

    Оператор break немедленно завершает ближайший цикл. Например, найдём первое число, которое делится на 7:

    #include <iostream>
    
    int main() {
        for (int i = 1; i <= 100; i++) {
            if (i % 7 == 0) {
                std::cout << "Первое число: " << i;
                break;
            }
        }
    
        return 0;
    }

    Без break цикл продолжил бы работу до 100, хотя нужный ответ уже найден.

    continue: перейти к следующей итерации

    Оператор continue пропускает оставшуюся часть текущей итерации и переходит к следующей. Например, выведем только нечётные числа:

    #include <iostream>
    
    int main() {
        for (int i = 1; i <= 10; i++) {
            if (i % 2 == 0) {
                continue;
            }
    
            std::cout << i << " ";
        }
    
        return 0;
    }

    Если число чётное, команда вывода не выполняется.

    Вложенные циклы

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

    #include <iostream>
    
    int main() {
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= 5; j++) {
                std::cout << i * j << "t";
            }
            std::cout << std::endl;
        }
    
        return 0;
    }

    Внешний цикл отвечает за строки, внутренний — за столбцы. Важно помнить: если внешний цикл выполняется 5 раз, а внутренний тоже 5 раз, тело внутреннего цикла выполнится 25 раз.

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

  • Бесконечный цикл. Например, забыли изменить счётчик или условие никогда не становится ложным.
  • Неверный знак сравнения: вместо <= написали < и потеряли последнюю итерацию.
  • Лишняя точка с запятой после for или while, из-за которой тело цикла работает не так, как ожидается.
  • Слишком сложное условие. Если условие трудно читать, лучше вынести часть логики в отдельные переменные.
  • Пример опасной ошибки:

    int i = 1;
    while (i <= 5) {
        std::cout << i << " ";
        // забыли i++
    }

    Такой цикл будет выполняться бесконечно, потому что значение i не меняется.

    Как выбрать нужный цикл

  • Используйте for, если известно количество повторений.
  • Используйте while, если цикл зависит от условия, ввода пользователя или состояния программы.
  • Используйте do while, если действие нужно выполнить минимум один раз.
  • Используйте break, когда результат найден и продолжать цикл нет смысла.
  • Используйте continue, когда нужно пропустить отдельные случаи.
  • Практическое задание

    Попробуйте написать программу, которая запрашивает у пользователя числа и считает их сумму, пока пользователь не введёт 0. Это отличное упражнение на while:

    #include <iostream>
    
    int main() {
        int number;
        int sum = 0;
    
        std::cout << "Введите числа, 0 для выхода:n";
    
        while (true) {
            std::cin >> number;
    
            if (number == 0) {
                break;
            }
    
            sum += number;
        }
    
        std::cout << "Сумма: " << sum;
        return 0;
    }

    Если хотите не просто читать отдельные статьи, а последовательно пройти синтаксис, практику, задачи и проекты, обратите внимание на курс «Программирование на C++ с Нуля до Гуру» — понятный путь от первых программ до уверенного владения C++.

    Итоги

    Циклы в C++ — базовый инструмент, который используется почти в каждой программе. for подходит для счётчиков и диапазонов, while — для условий с неизвестным числом повторений, а do while — для меню и сценариев, где нужно выполнить действие хотя бы один раз. Чем больше практики с циклами, тем легче вам будет работать с массивами, строками, алгоритмами и реальными задачами.

    Источник

    НЕТ КОММЕНТАРИЕВ

    Оставить комментарий