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

1 ... 51 52 53 [ 54 ] 55 56 57 ... 265


counter++;

cout Looping! ;

cout \ nCounter; counter .\ n return 0;

Looping! Looping! Looping! Looping! Looping! Counter: 5.

Очевидно, что результат выполнения такого цикла в точности совпадает с результатом выполнения цикла while из листинга 7.8. В строке 8 присваивается значение переменной counter. Установки параметров цикла for, показанные в строке 10, содержат только проверку условия продолжения цикла. Операция над переменной цикла в конструкции for также опущена. Таким образом, этот цикл можно представить в виде

while (counter < 5).

Рассмотренный пример еще раз показывает, что возможности языка С++ позволяют рещить одну и ту же задачу множеством способов. Листинг 7.11 приведен скорее для иллюстрации гибкости возможностей С++, поскольку ни один опытный программист не будет использовать цикл for подобным образом. Тем не менее можно опустить даже все три параметра цикла for, а для управления циклом использовать операторы break и continue. Пример использования конструкции for без параметров приведен в листинге 7.12.

йНЕШНнг 7.1Z. Нснржьзрранне аперашора for On иарамешров

2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17

Листинг 7,12,

Использование оператора for без параметров

ffinclude <iostream.h>

int mainO {

int counter=0; установка начального значения счетчика

int max;

cout << How many hellos? ; cin max;

for (;;) задание бесконечного цикла

if (counter < max) проверка значения {

cout Hello!\ n ;

counter++; приращение значения счетчика



18: 19: 20: 21: 22: 23:

3lse

break;

roturn 0;

How many hellos?3 Hello! Hello! Hello!

В этом примере набор параметров оператора for максимально минимизирован. Опущены все три параметра - инициализация, условие и операция. Начальное значение счетчика присваивается в строке 8 еще до начала работы цикла. Условие продолжения цикла также проверяется в отдельной строке (строка 14), и, если оно истинно, выполняется операция тела цикла, после чего в строке 17 увеличивается значение счетчика. Если условие не выполняется, оператор break в строке 20 прерывает выполнение цикла.

Несмотря на то что рассмотренная программа выглядит достаточно нелепо, встречаются ситуации, когда конструкции for( ;; ) и while( true ) оказываются просто необходимыми. Более полезный пример использования таких конструкций будет приведен далее в этой главе после рассмотрения оператора switch.

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

Листинг 7.13. Нспржьзрваиие оператора for у я организации пустого цикжо

Листинг 7.13.

Использование оператора for

для организации пустого цикла

ftinclude <iostreaffl,h>

int rnainO

for (mt i = 0; i<5; cout i:

return 0: }

i++ endl)

1907



Оператор for в строке 8 содержит все три параметра. Инициализация в данном случае состоит из описания переменной i и присвоения ей значения 0. Затем проверяется условие i<5, и, если оно выполняется, в третьей части оператора for значение переменной выводится на экран и увеличивается на единицу.

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

8: for (int i = 0; i<5; i++)

9: cout i: << i endl;

Оба варианта записи равноценны, однако второй вариант гораздо читабельнее и понятнее.

Цикл, организованный в теле другого цикла, называют вложенным. В этом случае внутренний цикл полностью выполняется на каждой итерации внешнего цикла. Листинг 7.14 демонстрирует заполнение элементов матрицы с помощью вложенного цикла.

Аисшинг 7.14. Вложенные цнккы

2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23

Листинг 7.14.

Вложенные циклы с оператором for ffinclude <iostreaffl.h>

int mainO {

int rows, columns; char theChar;

cout << How many rows? ; cin >> rows;

cout << How many columns? ;

cin >> columns;

cout What character? ;

cin theChar;

for (int 1 = 0; Krows; i++)

for (int j = 0; j<columns;

cout theChar; cout << \ n ;

return 0; }

791928



1 ... 51 52 53 [ 54 ] 55 56 57 ... 265

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