<< Предыдущая Оглавление Следующая >>


2.2.1. Оператор цикла while

С помощью данного оператора реализуется цикл, который выполняется до тех пор, пока истинно условие цикла. Синтаксис данного оператора следующий:

while(<условие>)
{
<тело цикла>
}

Приведем пример реализации данного цикла, в котором выполняется суммирование элементов ряда S = 0+1+2+3... пока Sint N=20, i = 0;
long S = 0L;
while(S < N)
{
S=S+i;
i++;
}

В данном примере реализуется цикл while с условием i < N. Так как начальное значение переменной i=0, а N=20, то условие истинно и выполняется тело цикла, в котором осуществляется суммирование переменной i и увеличение ее на 1. Очевидно, что на 20 итерации значение i=20, условие станет ложным и цикл будет завершен. Продемонстрируем гибкость языка С++, изменив данный пример следующим образом:

int N=20, i = 0;
long S = 0L;
while((S=S+i++) < N);

В данном случае при проверке условия сначала выполняются операторы, стоящие в скобках, где и осуществляется суммирование элементов ряда и только, затем, проверяется условие. Результат выполнения обоих вариантов программ одинаковый и S=21. Однако последняя конструкция бывает удобной при реализации опроса клавиатуры, например, с помощью функции scanf():

int num;
while(scanf(“%d”,&num) == 1)
{
printf(“Вы ввели значение %d\n”,num);
}

Данный цикл будет работать, пока пользователь вводит целочисленные значения и останавливается, если введена буква или вещественное число. Следует отметить, что цикл while можно принудительно завершить даже при истинном условии цикла. Это достигается путем использования оператора break. Перепишем предыдущий пример так, чтобы цикл завершался, если пользователь введет число 0.

int num;
while(scanf(“%d”,&mun) == 1)
{
if(num == 0) break;
printf(“Вы ввели значение %d\n”,num);
}

Цикл завершается сразу после использования оператора break, т.е. в приведенном примере, при вводе с клавиатуры нуля функция printf() выполняться не будет и программа перейдет на следующий оператор после while. Того же результата можно добиться, если использовать составное условие в цикле:

int num;
while(scanf(“%d”,&mun) == 1 && num != 0)
{
printf(“Вы ввели значение %d\n”,num);
}

Таким образом, в качестве условия возможны такие же конструкции, что и в операторе if.


<< Предыдущая Оглавление Следующая >>