// не превысит 10
while (val <= 10) {
sum += val; // присвоить sum сумму val и sum
++val; // добавить 1 к val
}
Для сравнения текущего значения переменной val
и числа 10
условие цикла использует оператор меньше или равно (оператор <=
). Пока значение переменной val
меньше или равно 10
, условие истинно и тело цикла while
выполняется. В данном случае телом цикла while
является блок, содержащий два оператора.
{
sum += val; // присвоить sum сумму val и sum
++val; // добавить 1 к val
}
Блок (block) — это последовательность из любого количества операторов, заключенных в фигурные скобки. Блок является оператором и может использоваться везде, где допустим один оператор. Первым в блоке является составной оператор присвоения (compound assignment operator), или оператор присвоения с суммой (оператор +=
). Этот оператор добавляет свой правый операнд к левому операнду. Это эквивалентно двум операторам: суммы и присвоения.
sum = sum + val; // присвоить sum сумму val и sum
Таким образом, первый оператор в блоке добавляет значение переменной val
к текущему значению переменной sum и сохраняет результат в той же переменной sum
.
Следующее выражение использует префиксный оператор инкремента (prefix increment operator) (оператор ++
), который осуществляет приращение:
++val; // добавить 1 к val
Оператор инкремента добавляет единицу к своему операнду. Запись ++val
эквивалентна выражению val = val + 1
.
После выполнения тела цикл while
снова проверяет условие. Если после нового увеличения значение переменной val
все еще меньше или равно 10, тело цикла while
выполняется снова. Проверка условия и выполнение тела цикла продолжится до тех пор, пока значение переменной val
остается меньше или равно 10.
Как только значение переменной val
станет больше 10, происходит выход из цикла while
и управление переходит к оператору, следующему за ним. В данном случае это оператор, отображающий результат на экране, за которым следует оператор return
, завершающий функцию main()
и саму программу.
Упражнение 1.9. Напишите программу, которая использует цикл while
для суммирования чисел от 50 до 100.
Упражнение 1.10. Кроме оператора ++
, который добавляет 1 к своему операнду, существует оператор декремента (--
), который вычитает 1. Используйте оператор декремента, чтобы написать цикл while
, выводящий на экран числа от десяти до нуля.
Упражнение 1.11. Напишите программу, которая запрашивает у пользователя два целых числа, а затем отображает каждое число в диапазоне, определенном этими двумя числами.
1.4.2. Оператор for
В рассмотренном ранее цикле while
для управления количеством итераций использовалась переменная val
. Мы проверяли ее значение в условии, а затем в теле цикла while
увеличивали его.
Такая схема, подразумевающая использование переменной в условии и ее инкремент в теле столь популярна, что было разработано второе средство управления — оператор for
, существенно сокращающий подобный код. Используя оператор for
, можно было бы переписать код программы, суммирующей числа от 1 до 10, следующим образом:
#include <iostream>
int main() {
int sum = 0;
// сложить числа от 1 до 10 включительно
for (int val = 1; val <= 10; ++val)
sum += val; // эквивалентно sum = sum + val
std::cout << "Sum of 1 to 10 inclusive is "
<< sum << std::endl;
return 0;
}
Как и прежде, определяем и инициализируем переменную sum
нулевым значением. В этой версии мы определяем переменную val
как часть самого оператора for
.