1.4.1. Оператор >while
Оператор>while
организует итерационное (циклическое) выполнение фрагмента кода, пока его условие остается истинным. Используя оператор >while
, можно написать следующую программу, суммирующую числа от >1
до >10
включительно:
>#include
>int main() {
> int sum = 0, val = 1;
> // продолжать выполнение цикла, пока значение val
> // не превысит 10
> while (val <= 10) {
> sum += val; // присвоить sum сумму val и sum
> ++val; // добавить 1 к val
> }
> std::cout << "Sum of 1 to 10 inclusive is "
> << sum << std::endl;
> return 0;
>}
Будучи откомпилированной и запущенной на выполнение, эта программа отобразит на экране следующий результат:
>Sum of 1 to 10 inclusive is 55
Как и прежде, программа начинается с включения заголовка >iostream
и определения функции >main()
. В функции >main()
определены две переменные типа >int
— >sum
, которая будет содержать полученную сумму, и >val
, которая будет содержать каждое из значений от 1 до 10. Переменной >sum
присваивается исходное значение >0
, а переменной >val
— исходное значение >1
.
Новой частью программы является оператор >while
, имеющий следующий синтаксис.
>while (условие)
> оператор
Оператор >while
циклически выполняет >оператор
, пока >условие
остается истинным. >Условие
— это выражение, результатом выполнения которого является истина или ложь. Пока >условие
истинно, оператор выполняется. После выполнения >оператора условие
проверяется снова. Если >условие
остается истинным, >оператор
выполняется снова. Цикл >while
продолжается, поочередно проверяя >условие
и выполняя >оператор
, пока >условие
не станет ложно.
В этой программе использован следующий оператор >while
:
>// продолжать выполнение цикла, пока значение val
>// не превысит 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
Оператор инкремента добавляет единицу к своему операнду. Запись