Циклы в 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.0\n";
}
} 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 — для меню и сценариев, где нужно выполнить действие хотя бы один раз. Чем больше практики с циклами, тем легче вам будет работать с массивами, строками, алгоритмами и реальными задачами.
-
Создано 27.07.2026 17:00:43
-
Михаил Русаков

Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.