Циклы for и while
В C# имеются четыре различных вида циклов (for, while, do...while и foreach), позволяющие выполнять блок кода повторно до тех пор, пока удовлетворяется определенное условие. В этой статье мы познакомимся с циклами for и while.
Цикл for
Цикл for в C# предоставляет механизм итерации, в котором определенное условие проверяется перед выполнением каждой итерации. Синтаксис этого оператора показан ниже:
for (инициализатор; условие; итератор) оператор (операторы)
Здесь:
- инициализатор
-
это выражение, вычисляемое перед первым выполнением тела цикла (обычно инициализация локальной переменной в качестве счетчика цикла). Инициализация, как правило, представлена оператором присваивания, задающим первоначальное значение переменной, которая выполняет роль счетчика и управляет циклом;
- условие
-
это выражение, проверяемое перед каждой новой итерацией цикла (должно возвращать true, чтобы была выполнена следующая итерация);
- итератор
-
выражение, вычисляемое после каждой итерации (обычно приращение значения счетчика цикла).
Обратите внимание на то, что эти три основные части оператора цикла for должны быть разделены точкой с запятой. Выполнение цикла for будет продолжаться до тех пор, пока проверка условия дает истинный результат. Как только эта проверка даст ложный результат, цикл завершится, а выполнение программы будет продолжено с оператора, следующего после цикла for.
Стоит отметить, что цикл for отлично подходит для повторного выполнения оператора или блока операторов заранее известное количество раз. Давайте рассмотрим практическое применение цикла for на следующем примере:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { // Данный метод выводит таблицу умножения // размерностью b x b static void tab(byte b) { Console.WriteLine("Таблица умножения {0} x {0}\n", b); // Этот цикл проходит по строкам for (int i = 1; i <= b; i++) { // Этот цикл проходит по столбцам for (int j = 1; j <= b; j++) Console.Write("{0}\t", j * i); Console.WriteLine(); } Console.WriteLine(); } static void Main(string[] args) { tab(8); // Давайте разберем нестандартные возможности цикла for // ************************************************* // // Применение нескольких переменных управления циклом for (byte i = 0, j = 20; i <= j; i += 5, j -= 5) Console.WriteLine("i = {0}, j = {1}",i,j); Console.WriteLine(); // Использование условного выражения в цикле bool b = false; for (byte i = 1, j = 100; !b; i++, j--) if (i < Math.Sqrt(j)) Console.WriteLine("Число {0} меньше квадратного корня из {1}", i, j); else b = true; // Отсутствие части цикла int k = 0; for (; k < 10; ) { k++; Console.Write(k); } Console.WriteLine("\n"); // Цикл без тела int sum = 0; for (int i = 1; i <= 10; sum += ++i); Console.WriteLine("Значение суммы: {0}",sum); Console.ReadLine(); } } }
Цикл while
Подобно for, while также является циклом с предварительной проверкой. Синтаксис его аналогичен, но циклы while включают только одно выражение:
while(условие) оператор (операторы);
где оператор — это единственный оператор или же блок операторов, а условие означает конкретное условие управления циклом и может быть любым логическим выражением. В этом цикле оператор выполняется до тех пор, пока условие истинно. Как только условие становится ложным, управление программой передается строке кода, следующей непосредственно после цикла.
Как и в цикле for, в цикле while проверяется условное выражение, указываемое в самом начале цикла. Это означает, что код в теле цикла может вообще не выполняться, а также избавляет от необходимости выполнять отдельную проверку перед самим циклом.
Пример:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { // Пример возведения числа в несколько степеней byte l = 2, i = 0; int result = 1; while (i < 10) { i++; result *= l; Console.WriteLine("{0} в степени {1} равно {2}",l,i,result); } Console.ReadLine(); } } }
Комментарии