Циклы — это конструкции языка программирования, которые позволяют выполнять определенный блок кода до тех пор, пока выполняется определенное условие. В C# существуют четыре вида циклов — for, foreach, while и do while. Рассмотрим, как работают эти циклы.
Цикл for
Аналог в Delphi: цикл со счётчиком for .. to ... do.
Конструкция цикла for следующая:
for (инициализация ; условие; порядок выполнения) { Действие; }
- инициализация — начальное значение счётчика;
- условие — пока условие выдает
trueцикл будет выполняться; - порядок выполнения — команда, которая должна наращивать счётчик.
Например, нам необходимо определить является ли заданное число простым. Для этого можно использовать цикл for, например, вот так:
bool IsPrime(int number) { static bool res = true; for (int i = 2; i < number; i++) { if ((number % i) == 0) { res = false; break; } } return res; }
здесь в цикле мы инициализируем счётчик (стартуем с 2), затем задаем условие выполнения цикла (i<number), то есть, если пользователь введен значение 5, то цикл будет состоять из трех итераций (i = 2, 3, 4). И последнее — порядок выполнения цикла: после каждой итерации счётчик цикла увеличится на единицу. В цикле проверяется остаток от деления заданного числа на значение счётчика. Как видите, всего в одном цикле мы использовали и знание арифметических операторов C# и логических и потренировались использовать цикл for.
Кстати, в Delphi это была бы функция следующего содержания:
function IsPrime (n: Integer): boolean; var i: integer; begin Result:=true; for i := 2 to n - 1 do if (n mod i) = 0 then Exit(False); end;
Использовать метод IsPrime() можно, например, вот так:
int N = 4; if (IsPrime(N)) Console.WriteLine("Простое число"); else Console.WriteLine("Не простое число");
Цикл while
Аналог в Delphi: цикл while...do
Конструкция цикла while:
while (условие) { Действие; }
Цикл while выполняется пока условие возвращает истину (true).
Вернемся к нашим простым числам. Например, нам необходимо найти все простые числа в заданном диапазоне. Конечно, мы бы могли без проблем воспользоваться тем же самым циклом for, но для разнообразия рассмотрим пример с использованием while:
int max = 4000; int i = 0; while (i <= max) { if (IsPrime(i)) { Console.WriteLine(i); } i++; }
Наш цикл while будет выполняться до тех пор, пока значение i не станет равным переменной max. То есть, в примере — это значение 4000.
Цикл do…while
Аналог в Delphi: repeat...until
Конструкция цикла do..while:
do { Действие; } while (Условие)
Думаю, не стоит повторять, что значит условие или действие в описании конструкции цикла. Стоит лишь только добавить, что этот цикл, как и repeat в Delphi выполниться хотя бы один раз минимум, тогда как предыдущий цикл while может не выполниться не разу, если будет задано заведомо ложное условие.
Цикл foreach
Аналог цикла в Delphi: for .. in .. do
Конструкция цикла foreach:
foreach (тип переменная in набор данных) { Действие; }
Здесь стоит кое-что пояснить. В описании конструкции цикла грамматической ошибки нет, то есть в цикле используется тип данных переменной, и переменная через которую мы будем получать доступ к очередному значению в наборе данных. При этом, в качестве набора данных могут выступать массивы, списки и так далее.
Например, возвращаясь к теме простых чисел, используя цикл foreach попробуем найти простые числа в заданном массиве:
int[] array = { 1, 3, 7, 9, 12, 134, 145, 1345, 3456, 76, 56, 89, 123, 11 }; foreach (int value in array) { if (IsPrime(value)) Console.WriteLine("{0} простое", value); else Console.WriteLine("{0} непростое", value); }
Как видите, в цикле мы указали тип данных (целое число int), переменную (value) и набор данных — массив с именем array.
Управление циклами в C#
Как и в Delphi, управлять циклами в C# возможно с использованием всего двух операторов (а больше и не требуется):
continue— прерывает текущую итерацию цикла и переходит к следующей;break— полностью прерывает выполнение цикла.
Пример с continue
Чтобы далеко не ходить, за основу для примера возьмем предыдущий цикл foreach. Пусть теперь наша программа пропускает все числа в массиве, которые больше 100. С помощью оператора continue сделать это довольно просто:
foreach (int value in array) { if (value > 100) //число больше 100? { continue; //прерываем текущую итерацию и переходим к следующему числу из массива } if (IsPrime(value)) Console.WriteLine("{0} простое", value); else Console.WriteLine("{0} непростое", value); }
Теперь, если запустить приложение, то в консоли появится результат проверки только для чисел до 100 включительно, то есть:
1 простое 3 простое 7 простое 9 непростое 12 непростое 76 непростое 56 непростое 89 простое 11 простое
Пример с break
Как было сказано выше, этот оператор полностью прерывает выполнение цикла. Так, если в предыдущем примере мы отсеивали все числа больше 100, то в этом примере цикл прервется как только встретит число более 100:
int[] array = { 1, 3, 7, 9, 12, 134, 145, 1345, 3456, 76, 56, 89, 123, 11 }; foreach (int value in array) { if (value > 100) //число больше 100? { break; //полностью прерываем цикл } if (IsPrime(value)) Console.WriteLine("{0} простое", value); else Console.WriteLine("{0} непростое", value); }
Не трудно догадаться, что последним числом, которое будет проверено в цикле будет число 12 и на экране появится:
1 простое 3 простое 7 простое 9 непростое 12 непростое
Итог
Итак,сегодня мы разобрались с циклами в C#, посмотрели как они работают на примере поиска простых чисел, а также научились управлять циклами в нашем приложении с помощью операторов continue и break. В целом, работа с циклами в C# ни на сколько не сложнее,чем в Delphi.
Книжная полка
![]() |
Описание: практическое руководство познакомит вас с простыми рекомендациями, помогающими писать программное обеспечение, которое легко поддерживать и адаптировать. Написанная консультантами компании Software Improvement Group книга содержит ясные и краткие советы по применению рекомендаций на практике. Примеры для этого издания написаны на языке C#, но существует аналогичная книга с примерами на языке Java.
|
![]() |
![]() |
Название: C#. Советы программистам
Описание: Книга представляет собой сборник советов, алгоритмов и готовых примеров программ на языке C# в среде MS Visual Studio 2005/2008 из различных областей: работа с формами и элементами управления, папками и файлами, мышью и клавиатурой, мультимедиа и графикой, использование технологий WMI и WSH, взаимодействие с MS Office и другими приложениями, работа в локальной сети и Интернете, особенности использования функций Windows API и др.
|
![]() |



