Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
shwanoff
6 лет назад

Циклы в языке программирования C#

 Что мы делаем ежедневно? Думаю, у каждого из нас свой список дел. Однако раз за разом повторяются одни и те же операции для достижения одних и тех же целей. Это и есть цикл. В программировании циклы используются при обработке множеств / файлов или же для вычисления математических выражений.Выделяют несколько видов циклов:

  • while … do (с предусловием );
  • do … while (с постусловием);
  • for (с параметром)

Цикл с параметром (цикл for)

Может использоваться в ситуациях, когда до входа в цикл известно количество итераций (повторений цикла). Имеет следующий вид:

for(<инициализация>; <условие>; <порядок выполнения>) 
{
   <действия>
}
  1. Инициализация — установка начальных параметров счетчика;
  2. Условие — условие выхода из цикла, как только оно вернет ложь — произойдет выход из цикла;
  3. Порядок выполнения — команда увеличения счетчика.

Действия, выполняемые циклически, называются телом цикла. Рассмотрим наиболее общий пример: поиск факториала числа. Факториал числа вычисляется по формуле:

N = 1 * 2 * 3 * ... * N

Как вы видите, мы заранее знаем, сколько раз  должно повториться тело цикла, потому можем использовать счетчик.

int n = Convert.ToInt32(Console.ReadLine()); // Пользователь вводит число.
int factorial = 1;
for(int i = 2; i <= n; i++) // Вычисление факториала.
{
   factorial *= i;
}

Console.WriteLine(factorial); // Выводим факториал пользователю.

Итак, пользователь вводит любое число. После чего, мы вычисляем факториал по вышеуказанной формуле. Начальное значение факториала необходимо установить в единицу. Цикл начинаем с двойки и повторяем до тех пор, пока счетчик меньше или равен введенному пользователем значению. Если использовать оператор «меньше», мы потеряем умножение на старшее число при вычислении факториала. Порядок выполнения указан как i++, это значит, что на каждой итерации цикла счетчик i увеличивается на единицу. В виде порядка управления может выступать и более сложная математическая формула.

Цикл while (цикл с предусловием)

В данном случае действия цикла повторяются до тех пор, пока выполняется указанное условие. Этот цикл функционирует по принципу: «Сперва думаем, после делаем». В общем виде выглядит так:

while(<Условие>)
{
   <Действия>
}

Рассмотрим пример вычисления факториала при помощи while.

int n = Convert.ToInt32(Console.ReadLine()); // Пользователь вводит число.
int factorial = 1;
int i = 2;
while(i <= n) // Вычисление факториала.
{
   factorial *= i;
   i++; // Увеличиваем счетчик.
}

Console.WriteLine(factorial); // Выводим факториал пользователю.

Чтобы не получить бесконечного цикла, необходимо изменять параметр, проверяемый в условии. Именно для этого мы увеличиваем i.

Цикл do…while (цикл с постусловием)

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

do
{
   <Действия>
} while(<Условие>);

И снова рассмотрим вычисление факториала.

int n = Convert.ToInt32(Console.ReadLine()); // Пользователь вводит число.
int factorial = 1;
int i = 2;
do // Вычисление факториала.
{
factorial *= i;
i++; // Увеличиваем счетчик.
} while(i <= n);

Console.WriteLine(factorial); // Выводим факториал пользователю.

Цикл foreach

Допустим, мы имеем массив значений, не важно каких: числа, строки, символы… Для перебора массива удобно использовать этот вид цикла. Выглядит он следующим образом:

foreach(var <Элемент массива> in <Массив>)
{
   <Действия>
}

Предположим, у нас есть список городов, и нужно найти все города, начинающиеся с заданного символа.

var sym = Console.ReadKey(); // Читаем символ с клавиатуры 
var cities = {"Москва", "Казань", "Петергоф", "Пермь", "Минск", "Сан-Диего", "Вызима"};
var founded = ""; // Найденные города.
foreach(var city in cities)
{
   if(city.StartsWith(sym))
   {
       founded += city + " ";
   }
}

Console.WriteLine(founded);

Пользователь вводит символ, после чего для каждого элемента массива проверяется, начинается ли он с заданного символа. И, если условие выполняется, элемент массива запоминается в результирующей строке. Главным плюсом foreach является то, что он исключает возможность выхода за границы массива.

Управление циклом. Команды break и countinue

Для управления циклом в языке C# используются два оператора: break и continue.Оператор break используется для прерывания выполнения цикла. Пусть, нам нужно найти некоторый элемент в массиве. Так, используя цикл, мы можем выйти из цикла, как только найдем искомый элемент.

int index = 0; 
var wanted = Console.ReadLine();
var array;

for(int i = 0; i < array.Length; i++)
{
   if(array[i] == wanted)
   {
       index = i;
       break;
   }
}

Так мы находим индекс искомого слова в массиве, при этом не выполняем лишних операций после того, как найдем искомый элемент.Оператор continue используется для перехода к следующей итерации цикла. Рассмотрим задачу: необходимо вычислить сумму пяти частных вида:

1 / (i - a)

Как вы видите, при i = a будет получена ошибка «Деление на ноль». В данном случае мы можем пропускать значение счетчика, которое приводит к ошибке.

var sum = 0;
for(int i = 0; i < n; i++)
{
   if (i - a == 0)
   {
       continue;
   }

   sum+= 1 / (i - a);
}

Вот мы и рассмотрели основы работы с циклами в C#. Удачных вам экспериментов, коллеги. 

Источник: Циклы C#

0
0.000 GOLOS
На Golos с April 2018
Комментарии (0)
Сортировать по:
Сначала старые