Цикл for в C++17: подробное руководство
Цикл for: когда нужно повторить действие много раз
Введение: зачем нужен цикл?
Представь, что тебе нужно написать на доске 100 раз фразу «Я молодец». Можно писать руками 100 раз — это долго и скучно. А можно сказать компьютеру: «Повтори эту фразу 100 раз», и он сделает это за секунду. Именно так работает цикл for — это команда, которая заставляет программу повторять одно и то же действие нужное количество раз.
Циклы встречаются везде: в играх (персонаж бежит 10 шагов), в калькуляторах (сложить 5 чисел), в банкоматах (попросить ввести пароль 3 раза). Без циклов программирование было бы очень утомительным.
Основной синтаксис цикла for
В C++17 цикл for выглядит так:
for (начало; условие; шаг) {
// код, который повторяется
}
Разберём по частям:
- начало — с чего начинаем (например,
int i = 0— счётчик равен 0) - условие — пока оно верно, цикл работает (например,
i < 5— пока i меньше 5) - шаг — что происходит после каждого повторения (например,
i++— увеличиваем i на 1)
Пример — выведем числа от 0 до 4:
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 5; i++) {
cout << i << " ";
}
return 0;
}
// Вывод: 0 1 2 3 4
Как это работает по шагам:
- Создаётся переменная
i = 0 - Проверяется условие:
0 < 5— true, заходим в тело цикла - Печатаем
0 - Выполняем шаг:
i++— теперь i = 1 - Снова проверка:
1 < 5— true, печатаем1 - И так до тех пор, пока i не станет равно 5. Тогда условие
5 < 5— false, цикл заканчивается.
Разбор типичных задач
Задача 1. Лифт. Вы зашли в лифт на нулевом этаже и нажали кнопку 7-го этажа. Дисплей показывает каждый этаж, мимо которого проезжает лифт.
#include <iostream>
using namespace std;
int main() {
int этаж;
cout << "Какой этаж вам нужен? ";
cin >> этаж;
for (int i = 0; i <= этаж; i++) {
cout << "Проезжаем этаж " << i << endl;
}
cout << "Приехали!" << endl;
return 0;
}
// Ввод: 5
// Вывод:
// Проезжаем этаж 0
// Проезжаем этаж 1
// Проезжаем этаж 2
// Проезжаем этаж 3
// Проезжаем этаж 4
// Проезжаем этаж 5
// Приехали!
Задача 2. Банкомат. Банкомат просит повторить фразу «Безопасность превыше всего» 3 раза.
#include <iostream>
using namespace std;
int main() {
int количество;
cout << "Сколько раз повторить фразу? ";
cin >> количество;
for (int i = 0; i < количество; i++) {
cout << "Безопасность превыше всего" << endl;
}
return 0;
}
// Ввод: 3
// Вывод:
// Безопасность превыше всего
// Безопасность превыше всего
// Безопасность превыше всего
Задача 3. Кибербезопасность. Нужно вывести сообщение «Проверка системы...» 5 раз, а в конце — «Система чиста!».
#include <iostream>
using namespace std;
int main() {
int вирусов;
cout << "Сколько вирусов нужно проверить? ";
cin >> вирусов;
for (int i = 1; i <= вирусов; i++) {
cout << "Проверка вируса №" << i << "... Обнаружен!" << endl;
}
cout << "Все вирусы удалены!" << endl;
return 0;
}
// Ввод: 3
// Вывод:
// Проверка вируса №1... Обнаружен!
// Проверка вируса №2... Обнаружен!
// Проверка вируса №3... Обнаружен!
// Все вирусы удалены!
Частые ошибки новичков
Ошибка 1: Бесконечный цикл. Забыли изменить счётчик — условие всегда true.
// НЕПРАВИЛЬНО!
for (int i = 0; i < 5; ) { // забыли i++
cout << i;
}
Ошибка 2: Неправильное условие. Хотели 5 раз, а написали i <= 5 — получится 6 раз (0,1,2,3,4,5).
Ошибка 3: Путаница с нумерацией. Если нужно повторить ровно N раз, удобно писать for (int i = 0; i < N; i++).
Ошибка 4: Точка с запятой после скобки.
// НЕПРАВИЛЬНО!
for (int i = 0; i < 5; i++); { // точка с запятой — тело цикла пустое!
cout << "Привет";
}
Итоговый пример: День рождения в школе
Ты принёс 20 конфет и хочешь угостить каждого одноклассника по одной конфете. Сколько конфет останется, если в классе 24 человека? Напишем программу, которая показывает, как раздаются конфеты.
#include <iostream>
using namespace std;
int main() {
int конфет = 20;
int учеников;
cout << "Сколько учеников в классе? ";
cin >> учеников;
cout << "Начинаем раздавать конфеты!" << endl;
for (int i = 1; i <= учеников; i++) {
if (конфет > 0) {
cout << "Ученик №" << i << " получает конфету. Осталось: " << конфет - 1 << endl;
конфет--;
} else {
cout << "Ученик №" << i << " не получил конфету — они закончились!" << endl;
}
}
cout << "Раздача завершена!" << endl;
return 0;
}
// Ввод: 24
// Вывод (сокращённый):
// Начинаем раздавать конфеты!
// Ученик №1 получает конфету. Осталось: 19
// ...
// Ученик №20 получает конфету. Осталось: 0
// Ученик №21 не получил конфету — они закончились!
// ...
// Ученик №24 не получил конфету — они закончились!
// Раздача завершена!
В этом примере мы видим, как цикл for помогает обработать каждого ученика по очереди. Счётчик i идёт от 1 до количества учеников, и для каждого мы проверяем, остались ли конфеты.
Подведём итоги
- Цикл for повторяет код заданное количество раз
- Состоит из трёх частей: начало, условие, шаг
- Счётчик обычно называют
i(от слова index) - Чтобы повторить N раз, пишем:
for (int i = 0; i < N; i++) - Не забывай про шаг, иначе цикл станет бесконечным
Теперь ты готов решать задачи с циклом for! Попробуй сам написать программу для лифта, банкомата или раздачи конфет — ты уже знаешь, как это работает.