for (int i=2; i <= num/i;' i++) {
if((num%i) == 0) {
factor = inbreak; // прервать цикл, как только будет
// выявлен наименьший множитель числа
}
}
Console.WriteLine("Наименьший множитель равен " + factor);
}
}
Результат выполнения этой программы выглядит следующим образом.
Наименьший множитель равен 2
Операторbreakпрерывает выполнение циклаfor,как только будет выявлен наименьший множитель числа. Благодаря такому применению оператораbreakисключается опробование любых других значений после выявления наименьшего множителя числа, а следовательно, и неэффективное выполнение кода.
Если операторbreakприменяется в целом ряде вложенных циклов, то он прерывает выполнение только самого внутреннего цикла. В качестве примера рассмотрим следующую программу.
// Применить оператор break во вложенных циклах, using System;
class BreakNested { static void Main {
for(int i=0; i<3; i++) {
Console.WriteLine("Подсчет во внешнем цикле: " + i);
Console.Write(" Подсчет во внутреннем цикле: ");
int t = 0; while(t < 100) {
if(t == 10) break; // прервать цикл, если t равно 10 Console.Write(t + " "); t++;
}
Console.WriteLine ;
}
Console.WriteLine("Циклы завершены.");
}
}
Выполнение этой программы дает следующий результат.
Подсчет во внешнем цикле: 0
Подсчет во внутреннем цикле: 0123456789 Подсчет во внешнем цикле: 1
Подсчет во внутреннем цикле: 0 1 2 3 4 5 б 7 8 9 Подсчет во внешнем цикле: 2
Подсчет во внутреннем цикле: 0123456789 Циклы завершены
Как видите, операторbreakиз внутреннего цикла вызывает прерывание только этого цикла, а на выполнение внешнего цикла он не оказывает никакого влияния.
В отношении оператораbreakнеобходимо также иметь в виду следующее. Во-первых, в теле цикле может присутствовать несколько операторовbreak,но применять их следует очень аккуратно, поскольку чрезмерное количество операторовbreakобычно приводит к нарушению нормальной структуры кода. И во-вторых, операторbreak,выполняющий выход из оператораswitch,оказывает воздействие только на этот оператор, но не на объемлющие его циклы.
Применение оператора continue
С помощью оператораcontinueможно организовать преждевременное завершение шага итерации цикла в обход обычной структуры управления циклом. Операторcontinueосуществляет принудительный переход к следующему шагу цикла, пропуская любой код, оставшийся невыполненным. Таким образом, операторcontinueслужит своего рода дополнением оператораbreak.В приведенном ниже примере программы операторcontinueиспользуется в качестве вспомогательного средства для вывода четных чисел в пределах от 0 до 100.