Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
42
Добавлен:
16.02.2016
Размер:
123.39 Кб
Скачать

Циклы while

Оператор цикла while выполняет оператор или блок до тех пор, пока проверочное условие (выражение) остается истинным. Он имеет следующий синтаксис:

while(выражение) оператор или_блок

Если выражение представляет собой константу с истинным значением, тело цикла будет выполняться всегда и, следовательно, мы имеем дело с бесконечным оператором. Цикл также окажется бесконечным, когда условие, определенное в выражении изначально, истинно и нигде далее в теле цикла не изменяется. Если же проверочное условие возвращает ложное значение, осуществится выход из цикла и тело оператора while будет пропущено.

Довольно часто в качестве выражения используется оператор присваивания. Так как при этом возвращается некоторое число, в операторе while фактически производится сравнение полученного значения с нулем (следует напомнить, что ноль — эквивалент ложного значения) с дальнейшим принятием решения о выходе из цикла либо его продолжении

Как и для оператора for, если в цикле должны синхронно изменяться несколько переменных, которые зависят от переменной цикла, вычисление их значений можно поместить в проверочное выражение оператора while, воспользовавшись оператором "запятая".

Приведенный ниже пример показывает использование оператора цикла while для представления десятичного числа в двоичном виде.

#include <iostream.h>

int main ()

{

int counter = 4;

short dec;

while(1)// Бесконечный цикл

{

cout « "Введите десятичное число ";

cout « "от 0 до 15: " ;

cin » dec;

cout « "Двоичное представление";

cout « " числа" « dec « ": "; while(counter)

{

if(dec & 8)

cout « 1; else

cout « 0; dec = dec « 1; counter--;

}

cout « ' \n'; counter = 4;

}

return 0;

}

В приведенном примере вводится десятичное число dec, и далее в цикле while осуществляется проверка четвертого бита (число от 0 до 15 может быть закодировано четырьмя битами). Если бит установлен (равен единице), на экран выводится единица, а если он находится в сброшенном состоянии - выводится ноль.

Циклы do-while

В отличие от оператора while, цикл do-while сначала выполняет тело (оператор или блок), а затем уже осуществляет проверку выражения на истинность. Такая конструкция гарантирует, что тело цикла будет обязательно выполнено хотя бы один раз.

Синтаксис оператора имеет вид:

do

оператор_или_блок_операторов ; while(выражение)

Одно из часто используемых применений данного оператора - запрос к пользователю на продолжение выполнения программы:

#include <iostream.h>

int main ()

{

char answer;

do {

// Тело программы

...

cout « "Продолжать выполнение?";

cin » answer;

}

while(answer != 'N')

return 0;

}

Таким образом, тело программы будет повторяться до тех пор, пока пользователь на вопрос "Продолжать выполнение?" не ответит символом ' N'. При этом, в качестве переменной, используемой для хранения этого значения, выступает answer.

Оператор break

Вполне вероятно, у вас уже назревает вопрос, что же делать, если нужно предусмотреть выход из оператора цикла в нескольких местах, не дожидаясь выполнения оставшейся части кода. Здесь на помощь программисту приходит оператор break. Данный оператор может встречаться в теле цикла сколько угодно раз и, как и в случае switch-case, передает управление вне тела конструкции.

В приведенном ниже примере пользователю предлагается ввести число, которое в дальнейшем тестируется на попадание в один из трех диапазонов. На самом деле, если введенное число больше трех, происходит выход из тела цикла while и запрос на ввод числа повторяется.

#include <iostream.h>

int main ()

{

int answer = 0;

do

{

while(answer)

{

if(answer <= 3)

cout«" Меньше 3-x\n"; break;

// Выход из цикла while

// В этот фрагмент кода никогда не попадем

if(answer > '3' && answer < '7')

cout«"От 3-х до 7-ми\n";

break;

if(answer >= '7')

cout«"Больше 7-ми\n";

}

// В этот фрагмент кода попадаем по

break cout « "Repeat?\n";

cin » answer;

}

while(answer != 0);

return 0;

На практике оператор break часто используют для выхода из бесконечного цикла.

for( ; ; )

{

// Условие 1:

if(...)

{

...

break; }

// Условие 2 if (...)

{

break;

}

}

В данном примере, если выполнится любой из условных операторов if, будет достигнут и соответствующий оператор break, который выведет управление из тела конструкции бесконечного цикла for.

Соседние файлы в папке ЯзыкС++Глушаков