Циклы while, do while и for
Цикл while
while проверяет условие перед каждой итерацией. Если оно изначально ложно, тело не выполнится ни разу.
int count = 0;while (count < 3) { std::cout << count << '\n'; ++count;}Важно изменять состояние, от которого зависит условие, иначе можно получить бесконечный цикл.
Цикл do while
do while проверяет условие после выполнения тела, поэтому тело запускается минимум один раз:
int number;do { std::cout << "Введите положительное число: "; std::cin >> number;} while (number <= 0);После while в конструкции do while обязательна точка с запятой.
Цикл for
for объединяет инициализацию, условие и шаг:
for (int i = 0; i < 5; ++i) { std::cout << i << '\n';}Переменная i, объявленная в заголовке цикла, доступна только внутри этого цикла.
break и continue
breakзавершает ближайший цикл.continueпропускает остаток текущей итерации и переходит к следующей.
for (int i = 0; i < 10; ++i) { if (i == 2) continue; if (i == 7) break; std::cout << i << ' ';}Цикл по диапазону
Range-based for удобно использовать для элементов контейнера:
std::vector<int> values{2, 4, 6};for (int value : values) { std::cout << value << '\n';}Чтобы изменять элементы, используй ссылку: for (int& value : values). Для чтения крупных объектов обычно подходит const auto&.
Частые ошибки
- Ошибка на единицу в границе (
i <= sizeвместоi < size). - Лишняя точка с запятой после
forилиwhile. - Изменение счётчика не в ту сторону.
- Изменение контейнера во время обхода без понимания последствий для итераторов.
Итог
while удобен, когда число повторений заранее неизвестно; for — когда есть счётчик или диапазон; do while — когда тело должно выполниться хотя бы раз.
