Читаем C# 4.0: полное руководство полностью

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, оказывает воздействие только на этот оператор, но не на объемлющие его циклы.


Применение оператора continue

С помощью оператора continue можно организовать преждевременное завершение шага итерации цикла в обход обычной структуры управления циклом. Оператор continue осуществляет принудительный переход к следующему шагу цикла, пропуская любой код, оставшийся невыполненным. Таким образом, оператор continue служит своего рода дополнением оператора break. В приведенном ниже примере программы оператор continue используется в качестве вспомогательного средства для вывода четных чисел в пределах от 0 до 100.


// Применить оператор continue,

using System;

class ContDemo {

  static void Main() {

    // вывести четные числа от 0 до 100.

    for (int i = 0; i <= 100; i++) {

      if((i%2) != 0) continue; // перейти к следующему шагу итерации

      Console.WriteLine(i);

    }

  }

}


В данном примере выводятся только четные числа, поскольку при обнаружении нечетного числа шаг итерации цикла завершается преждевременно в обход вызова метода WriteLine().

В циклах while и do-while оператор continue вызывает передачу управления непосредственно условному выражению, после чего продолжается процесс выполнения цикла. А в цикле for сначала вычисляется итерационное выражение, затем условное выражение, после чего цикл продолжается.

Оператор continue редко находит удачное применение, в частности, потому, что в C# предоставляется богатый набор операторов цикла, удовлетворяющих большую часть прикладных потребностей. Но в тех особых случаях, когда требуется преждевременное прерывание шага итерации цикла, оператор continue предоставляет структурированный способ осуществления такого прерывания.


Оператор return

Перейти на страницу:

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных