[БЕЗ_ЗВУКА] Давайте
теперь перейдем к рассмотрению циклов.
Циклы могут нам понадобиться, если мы точно так же хотим выполнять
некоторые операции при определенном условии, но не один раз,
а до тех пор, пока это условие выполняется.
Для решения этой задачи очень хорошо подойдет цикл while.
Давайте рассмотрим на примере.
Пусть у нас есть некоторое число n, которое пользователь
сам введет с консоли.
А мы посчитаем сумму чисел от единицы до n.
Что, во-первых, можно сделать?
Можно использовать условный оператор для того, чтобы убедиться,
что пользователь ввел положительное число, потому что если число отрицательное,
то сумму от единицы до этого числа мы посчитать не сможем.
Убеждаемся, что
число больше либо равно 1.
Ставим фигурные скобки и давайте напишем цикл while.
[БЕЗ_ЗВУКА] В языке C++
цикл while записывается следующим образом: сначала идет ключевое слово while,
затем круглые скобки, в круглых скобках записывается условие,
при котором мы в очередной раз будем попадать внутрь цикла,
то есть выполнять набор некоторых операций.
По аналогии с оператором сравнения, если мы не ставим фигурные скобки,
то выполняется только одна операция.
Но как мы уже поняли на примере с оператором if,
лучше всегда ставить фигурные скобки.
В циклах то же самое.
Давайте запишем следующее условие: пока наше число больше 0,
мы будем вычислять значение суммы.
Давайте инициализируем переменную для этого,
которая будет находиться за пределами цикла,
и будем уменьшать само число n, пока оно не станет равно 0.
Давайте в том случае,
если пользователь ввел некорректные данные, мы известим его об этом следующей
фразой: Please enter positive number.
В случае же, если пользователь ввел все правильно,
мы выведем значение суммы.
Давайте посмотрим, что же у нас получилось.
Во-первых, мы видим, что программа успешно скомпилировалась — значит,
мы всё написали правильно.
Давайте введем число,
для которого мы довольно просто сами сможем посчитать сумму в уме.
Например, число 3.
Консоль показывает нам 6.
3 + 2 + 1 — действительно 6.
Все работает верно.
Давайте попробуем ввести что-то побольше и убедиться в том,
что мы все посчитали правильно и для числа 10.
Можем вспомнить, что сумма чисел от 1 до n — это арифметическая прогрессия.
Формула для вычисления арифметической прогрессии — это n * (n + 1) / 2.
(10 * 11) / 2 — как раз 55, все верно.
В дополнение к циклу while существует аналогичный цикл,
который работает несколько иным образом.
Цикл while работает по принципу,
что сначала проверяется условие, а затем мы пытаемся что-то выполнить.
Но в некоторых ситуациях нам бывает нужно обратное: мы хотим сначала что-то сделать,
а затем уже проверить условие.
И повторять подобную операцию именно по такому принципу.
Давайте сделаем небольшую интерактивную программу.
Пусть компьютер загадает число.
В нашем случае, конечно же, число загадаем мы сами,
а пользователь будет его угадывать.
Как мы это запишем?
Соответственно, аналогом цикла while является так называемый цикл do while.
Записывается он следующим образом.
Сначала следует ключевое слово do, затем открывающаяся фигурная скобка,
набор операций, закрывающаяся фигурная скобка, ключевое слово while.
В круглых скобках записывается условие, которое проверяется уже постфактум.
И нужно не забыть про точку с запятой.
И давайте мы будем просить пользователя угадать число.
[БЕЗ_ЗВУКА] Пользователь
будет его вводить, а мы будем повторять
эту операцию до тех пор, пока пользователь наше число не угадает.
И в случае, если он угадал, мы его об этом известим.
Давайте запустим нашу программу.
Так как мы заранее знаем число, попробуем повыводить другие числа.
Мы видим, что наша программа работает неверно.
Почему?
Потому что на самом деле в цикле while в условии нужно, конечно же,
не сравнивать два числа, а сравнивать их на неравенство.
Давайте попробуем вот так.
Да, теперь уже лучше.
Мы угадываем число.
И, наконец, мы его угадали.
Это был довольно простой пример на цикл do while, в котором
сначала выполняется набор инструкций, а затем мы проверяем некоторое условие.