|
Программирование >> Дополнительные возможности наследования
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
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |