while ( условие )
{
/* Этот код выполняется повторно, пока условие остаётся истинно */
}
Сначала проверяется условие. Условием могут быть выражения вида var > 10 , var1 == var2 или любые другие. Если условие истинно, выполняются инструкции в скобках. Дойдя до закрывающей скобки, компилятор передаёт управление в начало цикла, и всё повторяется вновь. Таким образом, смысл оператора while в том, что программный код в скобках повторно выполняется до тех пор, пока не нарушится условие ( этот процесс напоминает мне утренние прогулки с собакой вокруг дома, пока она не... ну а потом мы возвращаемся ).
Если условие сначала было справедливо, тогда что может заставить его стать ложным? Рассмотрим следующий пример программы:
/* WhileDemo — введите счётчик цикла. Программа выводит количество выполненных циклов while */
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std ;
int main( int argc , char* pszArgs[ ] )
{
setlocale ( LC_ALL , ".1251" ) ; /* печать русских текстов */
_________________
68 стр. Часть 1. Первое знакомство с С++
/* Ввод счётчика цикла */
int loopCount ;
cout << "Введите loopCount: " ;
cin >> loopCount ;
/* Теперь в цикле выводим значения */
while ( loopCount > 0 )
{
loopCount = loopCount - 1 ;
cout << "Осталось выполнить "
<< loopCount << " циклов( a )\n" ;
}
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ; return 0 ;
}
Программа WhileDemo получает от пользователя значение счётчика цикла, которое сохраняется в переменной loopCount. Затем программа выполняет цикл while. Сначала проверяется значение переменной loopCount. Если оно больше нуля, программа входит в тело цикла ( телом цикла называется код между скобками ), где loopCount уменьшается на 1, и результат выводится на экран. Затем программа возвращается к началу цикла и проверяет, осталась ли переменная loopCount положительной.
Ниже представлены результаты выполнения программы, выведенные на экран. Нетрудно догадаться, что введённый мною счётчик цикла равен 5. Программа пять раз выполнила цикл, каждый раз выводя результат на экран:
Введите loopCount: 5
Осталось выполнить 4 циклов( а )
Осталось выполнить 3 циклов( а )
Осталось выполнить 2 циклов( а )
Осталось выполнить 1 циклов( а )
Осталось выполнить 0 циклов( а )
Press any key to continue...
Если пользователь введёт отрицательное значение для счётчика цикла, условие окажется ложным и тело цикла не будет выполнено ни разу. Если пользователь введёт очень большое число, на выполнение программы уйдёт очень много времени.
Реже используется другая версия цикла while, известная как do ... while. Она работает аналогично, но условие завершения проверяется в конце, после выполнения тела цикла.
do
{
// Тело цикла
}
while ( условие ) ;
Поскольку условие проверяется только в конце, тело оператора do ... while выполняется всегда хотя бы один раз.
«Условие завершения цикла проверяется только в начале оператора while или в конце оператора do . . . while. Даже если в какой-то момент оно перестанет быть справедливым, программа продолжит выполнение цикла до следующей проверки условия.»
[Атас!]
_________________
69 стр. Глава 5. Операторы управления программой