break;
}
}
Как только сбросится флаг IsPrimeNumber, вложенный цикл сразу же прервется и выйдет в основной цикл. Таким образом, количество итераций сократится многократно, что благоприятно скажется на производительности работы программы.
Оператор continue в отличие от break не прерывает хода выполнения цикла. Он лишь приостанавливает текущую итерацию и переходит сразу к проверке условия выполнения цикла.
for (int j = 0; j < 100; j++ )
{
if (j%2 == 0)
continue;
Console.WriteLine("{0}", j);
}
Такой цикл позволит вывести на экран все нечетные числа. Работает он следующим образом: перебирает все числа от 0 до 100. Если очередное число четное — все дальнейшие операции в цикле прекращаются, наращивается число j, и цикл начинается сначала.
Вечные циклы
При написании приложений с использованием циклов вам следует остерегаться зацикливания программы. Зацикливание — это ситуация, при которой условие выполнения цикла всегда истинно и выход из цикла невозможен. Давайте рассмотрим простой пример.
using System;
class Cycles
{
public static void Main()
{
int nl, r2;
r1 = 0;
r2 = n1 + 1;
while(nl < n2)
{
Console.WriteLine("nl = {0} , n2 = {1} " , n1 , n2 );
}
}
}
Здесь условие (n1 < n2) всегда истинно. Поэтому выход из цикла невозможен. Следовательно, программа войдет в режим вечного цикла. Такие ошибки являются критическими, поэтому следует очень внимательно проверять условия выхода из цикла.
Однако иногда бывает полезно задать в цикле заведомо истинное условие. Типичным примером вечного цикла является следующая запись:
while(true)
{...}
Возможно что такая конструкция приведет к зависанию системы, если не задать в теле цикла инструкцию его прерывания. Рассмотрим пример программы:
using System;
class Cycles
{
public static void Main()
{
String Name;
while (true)
{
Console.Write("Введите ваш имя ");
Name = Console.ReadLine();
Console.WriteLine("Здравствуйте {0}", Name);
}
}
}
Такая программа не имеет выхода. Что бы не ввел пользователь, программа выдаст строку приветствия и запросит ввод имени заново. Однако все изменится, если в программу добавить условие, при выполнении которого цикл прерывается.
using System;
class Cycles
{
public static void Main()
{
string Name;
while (true)
{
Console.WriteLine("Введите ваш имя ");
Name = Console.ReadLine();
if (Name == "")
break;
Console.WriteLine("Здравствуйте {0 ) ", Name);
}
}
}
На этот раз, как только пользователь нажмет клавишу «Enter» без ввода строки данных, сработает инструкция break, и программа выйдет из цикла.
Создание вечных циклов оправдывает себя, если существует несколько условий прерывания цикла и их сложно объединить в одно выражение, записываемое в блоке условия.
Вечный цикл можно создать не только при помощи оператора while.
Любой оператор цикла может быть использован для создания вечных циклов. Вот как выглядит та же программа, но с использованием цикла for:
using System;
class Cycles
{
public static void Main()
{
string Name;
for (; ; )
{
Console.Write("Введите ваш имя ");
Name = Console.ReadLine();
if (Name == "")
break;
Console.WriteLine("Здравствуйте {0} ", Name);
}
}
}
Цикл for может не содержать ни инструкции инициализации, ни инструкции проверки, ни инструкции итерации. Два оператора (;) внутри цикла for означают вечный цикл.