Циклы в C#

Циклы в C#

Всем доброго времени суток. На связи Алексей Гулынин. В данной статье я бы хотел рассказать, как создавать циклы в C#. С созданием циклов мы уже познакомились на примере Javascript и PHP. Пришло время и C#. В данном языке программирования существуют все те же самые циклы, что и в других: итерационный цикл, цикл с предусловием, цикл с постусловием. Также существует цикл foreach, который обычно используют при работе с коллекциями, по элементам которого обычно нельзя пробежаться с помощью простого цикла for. Давайте приступим сразу к созданию примеров на C#, опять же на примере любимого мною факториала числа.

Факториал числа — это произведение натуральных чисел от 1 до самого числа(включая данное число). Обозначается факториал восклицательным знаком "!". Факториал определён только для натуральных чисел и нуля. Факториал нуля и единицы это 1. Термин факториал ввел в 1800 году французский математик Аргобаст Луи Франсуа Антуан. Обозначение n! придумал чуть позже немецкий математик Кристиан Крамп в 1808 году.

1) Итерационный цикл. Пример:

Console.Write("Введите число "); //выводит надпись на экран
string chislo = Console.ReadLine(); //chislo будет хранить то, что мы введем
int result = 1; //переменная, которая будет хранить результат факториала числа
for (int i = 1; i <= Convert.ToInt32(chislo); i++)
{
    result = result * i;
}
Console.WriteLine("Факториал числа {0} равен {1}",chislo,result);
Console.ReadLine();

В переменную chislo мы заносим число, введенное пользователем. Обращаю ваше внимание, что Console.ReadLine() возвращает строковое значение, поэтому переменная chislo тоже обязательно должна быть строковой, иначе вернется сообщение об ошибке. Конструкцией Convert.ToInt32 мы преобразуем строковый формат в числовой. Остальное, думаю, должно быть понятно.

2) Цикл с предусловием. Синтаксис следующий:

while (условие)
{
	//тело цикла
}

Пример:

Console.Write("Введите число ");
string chislo = Console.ReadLine();
int result = 1;
int i = 1;
while (i <= Convert.ToInt32(chislo))
{
	result = result * i;
	i++;
}
Console.WriteLine("Факториал числа {0} равен {1}",chislo,result);
Console.ReadLine();

3) Цикл с постусловием. Синтаксис следующий:

do 
{
	//тело цикла
}
while (условие).

Пример:

Console.Write("Введите число ");
string chislo = Console.ReadLine();
int result = 1;
int i = 1;
do
{
    result = result * i;
    i++;
}
while (i <= Convert.ToInt32(chislo));
Console.WriteLine("Факториал числа {0} равен {1}",chislo,result);
Console.ReadLine();

Думаю, проблем с пониманием этих циклов не должно возникнуть. Давайте рассмотрим ещё один вид циклов — цикл foreach. Такой пример: необходимо вывести все папки диска C и напротив них вывести дату создания. У вас сейчас должно быть понимание того, что простым циклом for данный пример не реализовать. Давайте напишем код и разберем его. Для начала необходимо подключить библиотеку System.IO (написать using System.IO сверху программы):

string localDisk = "C:/"; //задаем имя диска
Console.WriteLine("Название папки  |  Дата создания");
foreach (String papka in Directory.GetDirectories(localDisk))
{
    Console.WriteLine("{0}  |  {1}", papka.Substring(3), Directory.GetCreationTime(papka));
}
Console.ReadLine();

В данном случае, чтобы объяснить весь этот код нужно будет затронуть смежные темы, а не только циклы. Давайте по-порядку. Конструкция Directory.GetDirectories() возвращает все папки, каждая из которых имеет тип string. Конструкция foreach подразумевает (в данном случае) следующее: "для каждой папки типа String во всех папках данной директории (диска C в нашем случае) делать следующее". И здесь для каждой папки мы выводим её имя, предварительно убирая 3 первых символа из названия (иначе будет "C:\" идти вначале) и дату создания с помощью конструкции Directory.GetCreationTime().

Давайте теперь поговорим об операторах break и continue.

Оператор break используется, чтобы досрочно выйти из цикла. Пример:

for (int i = 1; i < 5; i++)
{
    if (i == 3) break;
    Console.WriteLine(i);
}
Console.ReadLine();

В данном случае на экран будут выведены числа 1 и 2.

Оператор continue используется для того, чтобы перейти к следующей итерации цикла.

for (int i = 1; i < 5; i++)
{
    if (i == 3) continue;
    Console.WriteLine(i);
}
Console.ReadLine();

В данном случае будут выведены числа 1,2,4.

Домашнее задание: необходимо протестировать работу всех трех функций, проверить, что результат получается действительно одинаковым. Также добавить проверку, что факториал нуля равен единице.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *