В языке C++ существует три вида циклов: цикл while c предусловием, цикл while с постусловием,
цикл for.
while ("пока") с предусловиемЦикл while с предусловием позволяет выполнить одну
и ту же последовательность действий пока проверяемое условие истинно.
При этом условие записывается до тела цикла и проверяется до выполнения
тела цикла.
При выполнении цикла while сначала проверяется условие.
Если оно ложно, то цикл не выполняется и управление передается
на следующую инструкцию после тела цикла while.
Если условие истинно, то выполняется инструкция, после чего
условие проверяется снова и снова выполняется инструкция.
Так продолжается до тех пор, пока условие будет истинно.
Как только условие станет ложно, работа цикла завершится и управление передастся следующей инструкции
после цикла.
Синтаксис цикла while ("пока") c предусловием такой:
while (условие)
{
блок инструкций
}
Например, следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10:
int i=1;
while (i <= 10)
{
cout << i * i << endl;
++i;
}
В этом примере переменная i внутри цикла изменяется от 1 до 10. Такая переменная,
значение которой меняется с каждым новым проходом цикла, называется счетчиком.
Заметим, что после выполнения этого фрагмента значение переменной i будет равно 11,
поскольку именно при i==11 условие i<=10 впервые перестанет выполняться.
В следующем примере цикл используется для того, чтобы найти
количество знаков в десятичной записи целочисленной
переменной i.
int Ndigits (int n)
{
int result = 0;
while (n != 0)
{
result = result + 1;
n = n / 10;
}
return result;
}
Внутри цикла значение переменной n уменьшается в 10 раз до тех пор, пока она не станет равна 0.
Уменьшение целочисленной переменной в 10 раз (с использованием целочисленного деления) эквивалентно отбрасыванию
последней цифры этой переменной.
while ("пока") с постусловиемЦикл "пока" с постусловием отличается от цикла с предусловием тем, что сначала выполняется блок цикла, а потом проверяется условие. Если условие истинно, то цикл будет выполнен еще раз, и так до тех пор, пока условие будет истинно. Синтаксис цикла с постусловием такой (обратите внимание на обязательную точку с запятой после условия):
do
{
Блок инструкций
}
while (условие);
Поскольку условие проверяется после выполнения тела цикла, то блок цикла с постусловием всегда будет
выполнен хотя бы один раз, независимо от истинности условия. Это может привести к ошибкам, поэтому
использовать цикл while с постусловием следует только тогда, когда это действительно упрощает
алгоритм.