Цикл while
Представьте, что нужно вывести числа от 1 до 100. Можно написать std::cout сто раз, но это заняло бы целую вечность, а менять что-то потом было бы ещё хуже. Программы постоянно повторяют такую работу: перебирают всех учеников класса, проверяют каждый товар в магазине или перерисовывают экран игры 60 раз в секунду. Для этого и нужны циклы. Цикл — это фрагмент кода, который выполняется снова и снова.
Самый простой цикл — while («пока»). Он повторяет блок кода, пока его условие истинно:
int number = 1;
while (number <= 5) {
std::cout << number << std::endl;
number++;
}Он выводит:
1
2
3
4
5Цикл while похож на if: ключевое слово, условие в круглых скобках и блок кода в фигурных. Разница в том, что if выполняет свой блок не более одного раза, а while снова и снова возвращается к условию. Шаг за шагом:
- Программа создаёт
numberсо значением1. - Она проверяет условие
number <= 5. Оно истинно, поэтому программа выполняет блок: выводит1, аnumber++увеличиваетnumberдо2. - Программа возвращается к условию.
2 <= 5всё ещё истинно, поэтому она выводит2и увеличиваетnumberдо3. - И так далее, пока
numberне станет равно6. Тогда условие ложно, цикл заканчивается, и программа продолжает работу с кода после закрывающей скобки цикла}.
Каждое выполнение блока называется итерацией. В этом цикле пять итераций. Чтобы вывести числа до 100, достаточно заменить 5 на 100.
Код после цикла выполняется только один раз, когда цикл закончился:
int number = 1;
while (number <= 3) {
std::cout << number << std::endl;
number++;
}
std::cout << "Готово" << std::endl;1
2
3
ГотовоОбратите внимание на строку number++. Что-то в блоке должно менять переменную из условия, чтобы в какой-то момент условие стало ложным. Без этого цикл никогда бы не закончился. Что тогда будет, вы увидите в следующем упражнении.
Задание
- 1
Удалите три строки, которые выводят 1, 2 и 3. На их месте создайте переменную
numberтипаintсо значением10. Цикл будет считать с её помощью. - 2
Под ней напишите цикл
while, который выполняется, покаnumberменьше или равно20. Внутри цикла выведитеnumberв отдельной строке, а затем увеличьте его на 1. Программа выводит числа от 10 до 20, каждое в своей строке. - 3
После цикла, под его закрывающей скобкой
}, выведитеПосле цикла:и значениеnumber. Последняя строка вывода —После цикла: 21. Переменная оказывается равна 21, а не 20, потому что цикл останавливается, только когда условие ложно.