Откомпилируйте программу с этими тремя операторами и проверьте правильность своего ответа. Исправьте ошибки, сообщения о которых были получены.
1.4. Средства управления
Операторы обычно выполняются последовательно: сначала выполняется первый оператор в блоке, затем второй и т.д. Конечно, при последовательном выполнении операторов много задач не решить (включая проблему книжного магазина). Для управления последовательностью выполнения все языки программирования предоставляют операторы, обеспечивающие более сложные пути выполнения.
1.4.1. Оператор while
while
организует итерационное (циклическое) выполнение фрагмента кода, пока его условие остается истинным. Используя оператор while
, можно написать следующую программу, суммирующую числа от 1
до 10
включительно:
#include
int main() {
int sum = 0, val = 1;
//
//
while (val <= 10) {
sum += val; //
++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
:
//
//
while (val <= 10) {
sum += val; //
++val; //
}
Для сравнения текущего значения переменной val
и числа 10
условие цикла использует <=
). Пока значение переменной val
меньше или равно 10
, условие истинно и тело цикла while
выполняется. В данном случае телом цикла while
является блок, содержащий два оператора.
{
sum += val; //
++val; //
}
+=
). Этот оператор добавляет свой правый операнд к левому операнду. Это эквивалентно двум операторам: суммы и присвоения.
sum = sum + val; //
Таким образом, первый оператор в блоке добавляет значение переменной val
к текущему значению переменной sum и сохраняет результат в той же переменной sum
.
Следующее выражение использует ++
), который осуществляет приращение:
++val; //
Оператор инкремента добавляет единицу к своему операнду. Запись ++val
эквивалентна выражению val = val + 1
.
После выполнения тела цикл while
снова проверяет условие. Если после нового увеличения значение переменной val
все еще меньше или равно 10, тело цикла while
выполняется снова. Проверка условия и выполнение тела цикла продолжится до тех пор, пока значение переменной val
остается меньше или равно 10.