Программирование >>  Дополнительные возможности наследования 

1 ... 49 50 51 [ 52 ] 53 54 55 ... 265


значение counter не превысит 10. Выполнение цикла прерывается оператором break в строке 14, и на экран выводится значение переменной counter (строка 16).

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

Гибкий синтаксис языка С++ позволяет решить одну и ту же задачу множеством различных способов. Поэтому важно научиться выбирать средство, наиболее подхо-дяшее в конкретной ситуации.

Организация циклив с пимищью кинструкции du...while

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

Ансшипг 7.6. Преждевремениое завертепие показ с while

2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19

Листинг 7.6.

Если условие продолжения цикла не выполняется, тело цикла пропускается.

Sinclude <iostream.h>

int main() {

int counter;

cout How many hellos?: ; cin >> counter; while (counter > 0) {

cout Hello!\ n ; counter--;

cout Counter is OutPut: counter; return 0;

How many hellos?: 2

Hello! Hello!

Counter is Output: 0

How many hellos?: 0 Counter is OutPut: 0



, в строке 10 вам предлагается ввести начальное значение счетчика, кото-

рое записывается в переменную counter. В строке 12 это значение проверяется, а затем в теле цикла уменьшается на единицу. При первом запуске программы начальное значение счетчика равнялось двум, поэтому тело цикла выполнялось дважды. Во втором случае было введено число 0. Понятно, что в этом случае условие продолжения цикла не выполнялось и тело цикла было пропущено. В результате приветствие не было выведено ни разу.

Как же поступить, чтобы сообщение выводилось по крайней мере один раз? С помощью оператора while это сделать невозможно, так как условие проверяется еще до выполнения тела цикла. Один из способов решения этой проблемы - использование оператора if для контроля начального значения переменной counter.

If (counter < 1) контроль начального значения counter = 1;

Правда, это довольно корявый выход из ситуации.

Исппльзпваннв конструкции do...wliilB

При использовании конструкции do...while условие проверяется после выполнения тела цикла. Это гарантирует выполнение операторов цикла по крайней мере один раз. В листинге 7.7 приведен измененный вариант предьщущей программы, в котором вместо оператора while используется конструкция do.. while.

ЛнЕшонг 7.7. НЕНожьзование конЕтрдкцпп do. . .while

2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18

Листинг 7. 7.

Пример использования конструкции do...while

include <iostream.h>

int main() {

int counter;

cout How many hellos? ;

cin >> counter;

cout Hello\ n ;

counter--; } while (counter >0 ); cout Counter is: counter endl; return 0;

How many hellos? 2

Hello

Hello

Counter is: 0



h <В строке 9 пользователю предлагается ввести начальное значение счетчи- ка, которое записывается в переменную counter. В конструкции do. .while условие проверяется в конце каждой итерации, что гарантирует выполнение тела цикла по меньшей мере один раз. В строке 13 на экран выводится текст приветствия, а в строке 14 значение переменной counter уменьшается на единицу. Условие продолжения цикла проверяется в строке 15. Если оно истинно, вьшолняется следующая итерация цикла (строка 13). В противном случае цикл завершается и управление передается в строку 16.

При использовании в конструкциях do.. while операторы break и continue дают тот же результат, что и при использовании с оператором while. Единственное различие этих двух методов организации циклов состоит в проверке условия продолжения цикла. В первом случае оно контролируется перед выполнением тела цикла, а во втором - после него.

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

Анстонг 7.8. Еще ogun оромвр оспоаьзовуноя onepumopa while

2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18

Листинг 7.8.

Еще один пример использования оператора while

#include <iostream.h>

int main() {

int counter = 0;

while(counter < 5) {

counter++;

cout << Looping! ;

cout << \ nCounter: << counter << \ n ;

return 0;

Looping! Looping! Looping! Looping! Looping!

Counter: 5.

В строке 8 переменная цикла counter инициализируется нулевым значе- нием. Затем в строке 10 проверяется условие продолжения цикла, а в

строке 12 значение счетчика увеличивается на единицу. В строке 13 на экран выво-

D-9C



1 ... 49 50 51 [ 52 ] 53 54 55 ... 265

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика