- •6 Глава 1
- •12 Глава 1
- •14 Глава 1
- •16 Глава 1
- •18 Глава 1
- •20 Глава 1
- •22 Глава 1
- •24 Глава 1
- •26 Глава 1
- •31 Глава 1
- •34 Глава 2
- •36 Глава 2
- •Puc. 2.4. Дополнительные опции консольного приложения Win32
- •38 Глава 2
- •40 Глава 2
- •42 Глава 2
- •44 Глава 2
- •48 Глава 2
- •50 Глава 2
- •52 Глава 2
- •54 Глава 2
- •56 Глава 2
- •58 Глава 2
- •60 Глава 2
- •62 Глава 2
- •64 Глава 2
- •66 Глава 2
- •68 Глава 2
- •70 Глава 2
- •74 Глава 2
- •76 Глава 2
- •79 Глава 2
- •82 Глава 2
- •84 Глава 2
- •86 Глава 2
- •88 Глава 2
- •92 Глава 2
- •94 Глава 2
- •96 Глава 2
- •98 Глава 2
- •103 Глава 2
- •105 Глава 2
- •107 Глава 2
- •110 Глава 2
- •115 Глава 3
- •119 Глава 3
- •121 Глава 3
- •123 Глава 3
- •125 Глава 3
- •129 Глава 3
- •131 Глава 3
- •133 Глава 3
- •139 Глава 3
- •141 Глава 3
- •143 Глава 3
- •145 Глава 3
- •148 Глава 3
- •150 Глава 3
- •155 Глава 3
- •165 Глава 4
- •168 Глава 4
- •170 Глава 4
- •173 Глава 4
- •175 Глава 4
- •178 Глава 4
- •184 Глава 4
- •186 Глава 4
- •188 Глава 4
- •190 Глава 4
- •192 Глава 4
- •194 Глава 4
- •198 Глава 4
- •201 Глава 5
- •203 Глава 5
- •205 Глава 5
- •207 Глава 5
- •213 Глава 5
- •217 Глава 5
- •219 Глава 5
- •221 Глава 5
- •223 Глава 5
- •225 Глава 5
- •227 Глава 5
- •232 Глава 5
- •234 Глава 5
- •236 Глава 5
143 Глава 3
Цикл while
Второй тип циклов С++ — цикл while. В то время как цикл for предназначен глав- ным образом для повторения оператора или блока операторов определенное количе- ство раз, цикл while служит для выполнения оператора или блока до тех пор, пока указанное условие остается истинным. Общая форма цикла while показана ниже.
Здесь оператор_внутри_цикла выполняется повторно до тех пор, пока выра- жение условие имеет значение true. После того, как условие становится равным false, программа выходит из цикла и переходит к оператору, следующему за ним. Как всегда, единственный оператор_внутри_цикла может быть заменен блоком опе- раторов в фигурных скобках.
Логика цикла while представлена на рис. 3.5.
Вы можете переписать предыдущий пример, вычисляющий среднее группы вве- денных числовых значений, используя цикл while.
Решения
и циклы
Описание полученных результатов
При том же вводе, что и ранее, эта программа генерирует такой же вывод. Один оператор был изменен, другой добавлен — они выделены полужирным в исходном коде. Оператор цикла for заменен while, и исключена проверка indicator в if, по- скольку теперь эту функцию выполняет условие цикла while. Вы должны инициали- зировать indicator значением ' у' вместо ' п1, как было раньше. Иначе цикл while прервется немедленно. До тех пор, пока условие while возвращает true, цикл будет продолжаться.
Вы можете поместить в условие цикла while любое выражение, которое в результа- те дает true или false. Данный пример можно усовершенствовать, если сформулиро- вать условие цикла так, чтобы для продолжения цикла можно было вводить 1Y1 наряду с 1 у *. Для этого потребуется модифицировать оператор while следующим образом:
Можно также создать потенциально бесконечный цикл while, используя условие, которое всегда true. Это можно написать так:
Можно также записать управляющее выражение цикла как целочисленное значе- ние 1, которое будет преобразовано в значение true типа bool. Естественно, здесь также остается в силе то же требование, что предъявляется к бесконечным циклам for, а именно: необходимо предусмотреть какой-нибудь способ выхода из цикла вну- три его тела. Вы увидите в главе 4 другие примеры применения цикла while.
Цикл do-while
Цикл do-while подобен циклу while в том, что он выполняется до тех пор, пока указанное условие остается истинным. Главное отличие его состоит в том, что здесь условие проверяется в конце цикла — что отличает его от циклов for и while, где
145 Глава 3
оно проверяется в начале. Как следствие, оператор внутри цикла do-while всегда вы- полняется, по меньшей мере, один раз. Общая форма цикла do-while следующая:
Логика этой формы цикла показана на рис. 3.6.
Рис. 3.6. Оператор цикла do-while
Вы можете заменить цикл while в последней версии программы вычисления сред- него циклом do-while:
Между двумя последними версиями цикла нет особой разницы, за исключени- ем того, что правильная работа этой версии не зависит от начального значения indicator. До тех пор, пока вы уверены, что будет введено хотя бы одно осмыслен- ное значение, которое нужно обработать, применение данной версии цикла более предпочтительно.
Вложенные циклы
Циклы можно вкладывать друг в друга. Смысл этого станет более очевидным в гла- ве 4: такая техника обычно применяется для повторения действий на разных уровнях классификации. Примером может быть вычисление суммы оценок каждого студента в классе с повторением процесса для каждого класса школы.
Решения
и циклы
Эффект от вложения одного цикла в другой можно увидеть на примере вычисле- ния значений по простой формуле. Факториал целого числа — это произведение всех целых чисел от 1 и до заданного включительно. Поэтому факториал 3, например — это 1, умноженное на 2 и на 3, что равно 6. Следующая программа вычисляет факто- риал целых чисел, которые вводит пользователь:
Если вы скомпилируете и выполните этот пример, он будет работать примерно так:
Описание полученных результатов
Значения факториала возрастают очень быстро. Фактически, 12— наибольшее входное значение, для которого данный пример выдает правильный результат. Факториал 13 на самом деле равен 6 227 020 800, а не 1 932 053 504, как сообщает про-