Мастерство вложенных циклов в C#: For, While и Do-While подробно
Цикл внутри другого цикла называется вложенным циклом. Вот как выглядит вложенный цикл:
Внешний-Цикл { // тело внешнего цикла Внутренний-Цикл { // тело внутреннего цикла } ... ... ... }
Как видите, внешний цикл заключает внутренний цикл. Внутренний цикл является частью внешнего цикла и должен начинаться и заканчиваться внутри тела внешнего цикла.
На каждой итерации внешнего цикла внутренний цикл выполняется полностью.
Вложенный цикл for
Цикл for внутри другого цикла for называется вложенным циклом for.
Например:
for (int i=0; i<5; i++) { // тело внешнего цикла for for (int j=0; j<5; j++) { // тело внутреннего цикла for } // тело внешнего цикла for }
Пример 1: Вложенный цикл for
using System; namespace Loop { class NestedForLoop { public static void Main(string[] args) { int outerLoop = 0, innerLoop = 0; for (int i=1; i<=5; i++) { outerLoop ++; for (int j=1; j<=5; j++) { innerLoop++; } } Console.WriteLine("Outer Loop runs {0} times", outerLoop); Console.WriteLine("Inner Loop runs {0} times", innerLoop); } } }
Когда мы запускаем программу, вывод будет:
Outer Loop runs 5 times Inner Loop runs 25 times
В этой программе внешний цикл выполняется 5 раз. Каждый раз, когда внешний цикл выполняется, внутренний цикл выполняется 5 раз, делая его выполненным 25 раз в сумме.
Пример 2: Вложенный цикл for для печати паттерна
using System; namespace Loop { class NestedForLoop { public static void Main(string[] args) { for (int i=1; i<=5; i++) { for (int j=1; j<=i; j++) { Console.Write(j + " "); } Console.WriteLine(); } } } }
Когда мы запускаем программу, вывод будет:
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
Вложенный цикл while
Цикл while внутри другого цикла while называется вложенным циклом while.
Например:
while (условие-1) { // тело внешнего цикла while while (условие-2) { // тело внутреннего цикла while } // тело внешнего цикла while }
Пример 3: Вложенный цикл while
using System; namespace Loop { class NestedWhileLoop { public static void Main(string[] args) { int i=0; while (i<2) { int j=0; while (j<2) { Console.Write("({0},{1}) ", i,j); j++; } i++; Console.WriteLine(); } } } }
Когда мы запускаем программу, вывод будет:
(0,0) (0,1) (1,0) (1,1)
Вложенный цикл do-while
Цикл do-while внутри другого цикла do-while называется вложенным циклом do-while.
Например:
do { // тело внешнего цикла while do { // тело внутреннего цикла while } while (условие-2); // тело внешнего цикла while } while (условие-1);
Пример 4: Вложенный цикл do-while
using System; namespace Loop { class NestedWhileLoop { public static void Main(string[] args) { int i=0; do { int j=0; do { Console.Write("({0},{1}) ", i,j); j++; } while (j<2); i++; Console.WriteLine(); } while (i<2); } } }
Когда мы запускаем программу, вывод будет:
(0,0) (0,1) (1,0) (1,1)
Разные внутренние и внешние вложенные циклы
Не обязательно вкладывать один и тот же тип цикла. Мы можем поместить цикл for внутри цикла while или цикл do-while внутри цикла for.
Пример 5: C# Вложенный цикл: Разные внутренние и внешние циклы
using System; namespace Loop { class NestedLoop { public static void Main(string[] args) { int i=1; while (i<=5) { for (int j=1; j<=i; j++) { Console.Write(i + " "); } Console.WriteLine(); i++; } } } }
Когда мы запускаем программу, вывод будет:
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
В вышеуказанной программе цикл for помещен внутри цикла while. Мы можем использовать разные типы циклов внутри цикла.
Язык C
- Стандартные библиотечные функции в C: практическое руководство
- Полное руководство по истории версий .NET и C#
- Освоение многомерных массивов в C++: объявление, инициализация и циклы
- Классы и объекты в C#: практическое руководство с реальными примерами
- Выражения, операторы и блоки в C#: подробное руководство с примерами
- Освоение переменных, литералов и констант в C++: подробное руководство
- Свойства в C#: полное руководство по аксессорам, автосвойствам и абстрактным свойствам
- Язык программирования C: обзор, история и области применения
- Массивы в C#: объявление, инициализация и работа с целочисленными коллекциями
- Перегрузка операторов в C#: пользовательские типы и кастомная логика