Программы, рассмотренные ранее, обладают одним свойством: в них какая-либо команда или блок команд выполняются один раз, либо вообще не выполняются (при ветвлении один из наборов команд выполняется один раз, а другой не выполняется ни разу).
В окружающем мире можно наблюдать много ситуаций, при которых различные действия, процессы и события повторяются. Некоторые повторяются несколько раз и завершаются. Другие могут повторяться очень долго (например, круговорот воды в природе, движение планет в космическом пространстве, смена времен года, месяцев и дней недели и т. д.). Человеку тоже регулярно приходится выполнять повторяющиеся действия: умываться, одеваться, посещать парикмахерскую, завтракать, ходить на работу.
В программах также часто необходимо повторять определённые действия. Например, запрашивать пароль, пока не будет введен верный; увеличивать сумму, пока не будет достигнуто необходимое значение; перемещать объект, пока на пути не встретится препятствие.
Для этих целей используется такая форма организации действий, которая получила название цикл.
Алгоритмическая конструкция повторение (цикл) определяет последовательность действий, выполняемых многократно. Эту последовательность действий называют телом цикла.
В языке С++ есть три вида циклов для различных целей: while, for и do while. На этом занятии мы рассмотрим оператор цикла с предусловием while (while – пока). В цикле с предварительным условием условие цикла проверяется перед выполнением тела цикла.
Оператор цикла с предусловием while
Общий вид оператора цикла while:
Пока условие истинно, выполняются команды (тело цикла).
Пример. Алгоритм поднятия стульев (необходимо все стулья, стоящие на полу, поставить на парты).
while (Есть стулья на полу) {
взять стул с пола;
поставить стул на парту;
}
Блок-схема для цикла while:
Рассмотрим работу оператора while на примерах.
Пример 1. Дано натуральное число n. Вывести через пробел числа: 1 2 3 4 …n.
Программа:
Работа цикла while в данной программе рассмотрена в видеоуроке.
Пример 2. Дано натуральное число n (кратное 5). Найти сумму S = 10 + 15 + … + n.
Программа:
Рассмотрим работу цикла while в данном примере.
Предположим, пользователь ввёл n = 20.
Вначале s = 0, i = 10; условие 10 <= 20 – истинно, и тело цикла выполняется:
Условие 15 <= 20 – истинно, поэтому тело цикла выполняется во второй раз:
Условие 20 <= 20 – истинно, поэтому тело цикла выполняется в третий раз:
Условие 25 <= 20 – ложно, поэтому выполнение цикла завершится. В итоге, s = 45 (10 + 15 + 20 = 45).
В окне ниже можно проверить работу программы, используя онлайн-компилятор.