Операторы итерации

  • Михаил
  • 12 мин. на прочтение
  • 103
  • 19 Dec 2014
  • 19 Dec 2014

Операторы итерации — это блоки кода, выполняющие инструкции в цикле.

Существует 4 типа операторов итерации

  • Для
  • Для каждого
  • Пока
  • Делать пока

Для

Цикл forпродолжает выполняться до тех пор, пока не будет выполнено определенное условие.
 

for(<initializer>; <condition>; <iterator>)
{
  // Code to be executed
}

 

Инициализатор

Создает и инициализирует переменную, которая будет использоваться внутри forцикла. Доступ к этой переменной извне невозможен.

Условие

Логическое выражение, которое должно возвращать либо истину, либо ложь. Цикл будет выполняться до тех пор, пока это выражение не вернет значение false.

Итератор

Определяет инкрементное или декрементное значение переменной Initializer.

Пример

Итератор добавляет значение к i в каждом цикле.
 

for(int i = 0; i < 10; i++)
{
    Console.WriteLine("Value of i: {0}", i);
}

 

Итератор удаляет значение iкаждого цикла.
 

for(int i = 10; i > 10; i--)
{
    Console.WriteLine("Value of i: {0}", i);
}

 

Инициализатор может быть объявлен вне цикла for.
В этом сценарии доступ к iпеременной возможен вне цикла.
 

int i = 0;
for(; i < 10; i++)
{
    Console.WriteLine("Value of i: {0}", i);
}

 

Итератором можно управлять внутри цикла
 

for(int i = 0; i < 10; )
{
    Console.WriteLine("Value of i: {0}", i);
    i++;
}

 

Итератор управляется внутри цикла, а переменная инициализатора объявлена ​​вне цикла for.
 

int i = 0
for(; i < 10; )
{
    Console.WriteLine("Value of i: {0}", i);
    i++;
}

 

Инициализатор, условие и итератор управляются вне круглых скобок.
 

int i = 0;
for(;;)
{
  if(i < 10)
  {
    Console.WriteLine("Value of i: {0}", i);
    i++;
  }
  else
    break; // force exit from loop
}

 

Работа с массивами
 

int[] array = new [] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

for(int i = 0; i < array.Count - 1; i ++)
{
  int currentItem = array[i];
  Console.WriteLine("Current value of item inside array is: " + currentItem);
}

 

В приведенном выше примере мы используем .Countсвойство массива, чтобы узнать, сколько элементов находится внутри него.
Поскольку индекс массива начинается с 0, мы используем удаление одной итерации с - 1, без него цикл for будет искать элемент, который не существует в массиве, и выдаст ошибку.

Чтобы лучше проиллюстрировать это
 

int[] array = new [] { 1, 2, 3  };
Console.WriteLine(array[0]); // Outputs 1
Console.WriteLine(array[1]); // Outputs 2
Console.WriteLine(array[2]); // Outputs 3

 

Для каждого

Цикл foreachперебирает каждый элемент коллекции.
Должен DataTypeсоответствовать типу коллекции, которую вы повторяете.
 

foreach(<DataType> <variableName> in <collection)
{
  // code
} 

 

Пример

int[] array = new [] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

foreach(int i in array)
{
  Console.WriteLine("Current value of i is: " + i);
}

 

Пока

В whileцикле блок кода будет выполняться до тех пор, пока условие не вернет значение true.
 

while(<condition>)
{
  // Code
}

 

Пример

Выполняйте инструкцию, пока не iстанет меньше 1
 

int i = 0; // initializer
while(i < 10) // condition
{
  Console.WriteLine("Value of i: " + i);
  i++; // iterator
}

 

Использование булевой переменной
 

int i = 0;
bool isBiggerThan10 = false;
while(isBiggerThan10)
{
  Console.WriteLine("Value of i: " + i);
  i++; // iterator
  isBiggerThan10 = i > 10; // Checks if i is bigger than 10 and assing the result to the variable.
}

 

Делать пока

Разница между whileи do...whileзаключается в том, whileчто условие проверяется перед выполнением и do...whileвсегда выполняется хотя бы один раз.
 

do
{
  // Code
} while(<condition>)

 

Примеры

int i = 0;
do
{
    Console.WriteLine("i = {0}", i);
    i++;

} while (i < 10);