уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Циклы — это конструкции языка программирования, которые позволяют выполнять определенный блок кода до тех пор, пока выполняется определенное условие. В 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 &lt;= 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 &gt; 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 &gt; 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.
купить книгу delphi на ЛитРес
Описание: Книга представляет собой сборник советов, алгоритмов и готовых примеров программ на языке C# в среде MS Visual Studio 2005/2008 из различных областей: работа с формами и элементами управления, папками и файлами, мышью и клавиатурой, мультимедиа и графикой, использование технологий WMI и WSH, взаимодействие с MS Office и другими приложениями, работа в локальной сети и Интернете, особенности использования функций Windows API и др.
купить книгу delphi на ЛитРес
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии