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