Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Вложенные циклы

Если один цикл for выполняется внутри другого, принято говорить, что мы имеем дело с вложенным цик- лом. Внутренний цикл целиком выполняется во время каждого повторения внешнего цикла. Вложенные циклы for можно представить себе как двухмерные, а единичный— как одномерный.

В качестве иллюстрации рассмотрим следующую программу:

main()

{

int row, column;

for (row = 1; row <= 10; row++)

{

for (column = 1; column <= 10; column++)

printf("*");

putchar('\n'); /*вне внутреннего цикла, но внутри внешнего*/

}

}

Программа выводит на экран монитора 10 рядов, состоящих из 10 звездочек. Здесь используются две це- лочисленные переменные row и column. Во внешнем цикле переменная row увеличивает свое значение на единицу при каждом повторе. Кроме того, при каждом повторе внешнего цикла, внутренний цикл повто- ряется 10 раз, увеличивая значение переменной column и выводя на экран

Рис. 9.3. Внешний и внутренний циклы

ряд из десяти звездочек (обратите внимание, что имена переменным даны с таким расчетом, чтобы пояс- нить логику программы: row по-английски значит «строка», а column— «столбец» или «колонка»). На рис.9.3 продемонстрирована работа этих вложенных циклов. К инструкциям внутреннего цикла относится

for (column = 1; column <= 10; column++) printf("*");

Рис. 9.4. Значения, которые имеют переменные во время каждого повтора цикла

В результате работы программы на экране появятся 100 звездочек: 10 внутренних циклов сформируют 10 колонок, а 10 внешних циклов— 10 рядов. Значения, которые переменные приобретают при каждом по- вторе цикла, показаны на рис.9.4.

Обратите внимание на положение инструкции putchar('\n');. Она не относится к внутреннему циклу, но в то же время находится внутри фигурных скобок, ограничивающих внешний цикл. Эта инструкция выпол- няется десять раз, по одному на каждый повтор внешнего цикла, вставляя код «новая строка» после каж- дого ряда звездочек.

В Листинге 9.1 приведен другой пример использования вложенных циклов. Десять внешних и десять внутренних циклов здесь используются для того, чтобы создать таблицу умножения. Вместо того чтобы просто выводить на экран ряды звездочек, программа выводит результаты произведения значения пере- менной row на значение переменной column.

Листинг 9.1. Программа создания таблицы умножения.

/*timestab.c*/ main()

{

int row, column;

puts("\t\tТаблица Пифагора\n\n"); for(row = 1; row <= 10; row++)

¶a++ae æepcue u+uru æɵuyye+a sneuwpo++ɵu usgawenacwæou "Books-shop".

Pacupocwpa+e+ue, upogaua, uepesauuca ga++on u+uru unu ee ¬acwen 3AMPE[EHª.

O æcex +apyue+uex upoca6a coo6yawa uo agpecy piracy@books-shop.com

{

for(column = 1; column <= 10; column++) printf("%6d", row * column);

putchar('\n');

}

}

Рис. 9.5. Результат работы программы, создающей таблицу умножения

Результат работы программы, названной нами TIMESTAB.C, изображен на рис.9.5. Наконец, рассмотрим следующую программу:

main()

{

int row, column;

for (row = 1; row <= 10; row++)

{

for (column = 1; column <= row; column++) printf("*");

putchar('\n');

}

}

Она выводит на экран последовательность звездочек, показанную на рис.9.6.

Рис. 9.6. Количество повторов внутреннего циклаопределяется номером повтора внешнего цикла

Мы видим, что каждый ряд звездочек имеет разную длину. Это обусловлено тем, что количество повторов внутреннего цикла не одинаково, а возрастает с каждым следующим выполнением внешнего цикла: одна звездочка в первом ряду, две звездочки во втором ряду, три в третьем и так далее. Количество колонок совпадает с номером ряда. Мы добились такого эффекта, используя переменную row в качестве условия внутреннего цикла.

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

Будьте внимательны, когда пишете программу, содержащую два и больше вложенных циклов for. Если в программе указано 100 повторов внешнего и 100 повторов внутреннего цикла, это означает, что потребу- ется выполнить 10 тысяч повторов!