Книга: C# 4.0: полное руководство
Применение оператора break для выхода из цикла
Применение оператора break для выхода из цикла
С помощью оператора break
можно специально организовать немедленный выход из цикла в обход любого кода, оставшегося в теле цикла, а также минуя проверку условия цикла. Когда в теле цикла встречается оператор break
, цикл завершается, а выполнение программы возобновляется с оператора, следующего после этого цикла. Рассмотрим простой пример программы.
// Применить оператор break для выхода из цикла.
using System;
class BreakDemo {
static void Main() {
// Использовать оператор break для выхода из этого цикла,
for(int i= -10; i <= 10; i++) {
if(i > 0) break; // завершить цикл, как только значение
// переменной i станет положительным
Console.Write(i + " ");
}
Console.WriteLine("Готово ! ") ;
}
}
Выполнение этой программы дает следующий результат.
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 Готово!
Как видите, цикл for
организован для выполнения в пределах от -10 до 10, но, несмотря на это, оператор break
прерывает его раньше, когда значение переменной i становится положительным.
Оператор break
можно применять в любом цикле, предусмотренном в С#. В качестве примера ниже приведена версия предыдущей программы, переделанная с целью использовать цикл do-while.
// Применить оператор break для выхода из цикла do-while.
using System;
class BreakDemo2 {
static void Main() {
int i;
i = -10;
do {
if (i > 0) break;
Console.Write(i + " ") ;
i++ ;
} while (i <= 10);
Console.WriteLine("Готово!");
}
}
А теперь рассмотрим более практический пример применения оператора break
. В приведенной ниже программе выявляется наименьший множитель числа.
// Выявить наименьший множитель числа.
using System;
class FindSmallestFactor {
static void Main() {
int factor = 1;
int num = 1000;
for (int i=2; i <= num/i; i++) {
if((num%i) == 0) {
factor = i;
break; // прервать цикл, как только будет
// выявлен наименьший множитель числа
}
}
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
Подсчет во внутреннем цикле: 0 1 2 3 4 5 6 7 8 9
Подсчет во внешнем цикле: 1
Подсчет во внутреннем цикле: 0 1 2 3 4 5 б 7 8 9
Подсчет во внешнем цикле: 2
Подсчет во внутреннем цикле: 0 1 2 3 4 5 6 7 8 9
Циклы завершены
Как видите, оператор break
из внутреннего цикла вызывает прерывание только этого цикла, а на выполнение внешнего цикла он не оказывает никакого влияния.
В отношении оператора break
необходимо также иметь в виду следующее. Во-первых, в теле цикле может присутствовать несколько операторов break
, но применять их следует очень аккуратно, поскольку чрезмерное количество операторов break
обычно приводит к нарушению нормальной структуры кода. И во-вторых, оператор break
, выполняющий выход из оператора switch
, оказывает воздействие только на этот оператор, но не на объемлющие его циклы.
- Оператор цикла foreach
- Применение функции scanf( )
- Применение PHP-технологий в программе HtmlPad
- 17.6 Применение агентов новостей для настольных систем
- 2.3. Эмпирическая модель обучения Дэвида Колба и ее применение в практике бизнес-тренинга
- Применение основного потока
- Применение пользовательских атрибутов
- Применение peristaltic.py к арматуре
- Применение лямбда-выражения в качестве задачи
- Проблемы в команде и применение к ним принципов осознанной практики
- Пример 12-39. Использование seq для генерации списка аргументов цикла for
- The break and exit Statements