C# 4.0 полное руководство - 2011
Шрифт:
Обратите внимание на то, что цикл while выполняется только в том случае, если значение переменной е больше нуля. А когда оно равно нулю, как это имеет место на первом шаге цикла for, цикл while пропускается.
Оператор цикла do-while
Третьим оператором цикла в C# является оператор do-while. В отличие от операторов цикла for и while, в которых условие проверялось в самом начале цикла, в операторе do-while условие выполнения цикла проверяется в самом его конце. Это означает, что цикл do-while всегда выполняется хотя бы один раз. Ниже приведена
do {
операторы;
} while (условие) ;
При наличии лишь одного оператора фигурные скобки в данной форме записи необязательны. Тем не менее они зачастую используются для того, чтобы сделать конструкцию do-while более удобочитаемой и не путать ее с конструкцией цикла while. Цикл do-while выполняется до тех пор, пока условное выражение истинно.
В приведенном ниже примере программы цикл do-while используется для представления отдельных цифр целого числа в обратном порядке.
// Отобразить цифры целого числа в обратном порядке.
using System;
class DoWhileDemo { static void Main { int num; int nextdigit;
num = 198;
Console.WriteLine("Число: " + num);
Console.Write("Число в обратном порядке: "); do {
nextdigit = num % 10;
Console.Write(nextdigit); num = num / 10;
} while(num > 0);
Console.WriteLine ;
}
}
Выполнение этой программы дает следующий результат.
Число: 198
Число в обратном порядке: 8 91
Приведенный выше цикл действует следующим образом. На каждом его шаге крайняя слева цифра получается в результате расчета остатка от деления целого числа (значения переменной num) на 10. Полученная в итоге цифра отображается. Далее значение переменной num делится на 10. А поскольку это целочисленное деление, то в его результате крайняя слева цифра отбрасывается. Этот процесс повторяется до тех пор, пока значение переменной num не достигнет нуля.
Оператор цикла foreach
Оператор цикла f oreach служит для циклического обращения к элементам коллекции, которая представляет собой группу объектов. В C# определено несколько видов коллекций, к числу которых относится массив. Подробнее о цикле f oreach речь пойдет в главе 7, где рассматриваются массивы.
Применение оператора 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 = inbreak; // прервать цикл, как только будет
// выявлен наименьший множитель числа
}
}
Console.WriteLine("Наименьший множитель равен " + factor);
}
}
Результат выполнения этой программы выглядит следующим образом.
Наименьший множитель равен 2
Оператор break прерывает выполнение цикла for, как только будет выявлен наименьший множитель числа. Благодаря такому применению оператора break исключается опробование любых других значений после выявления наименьшего множителя числа, а следовательно, и неэффективное выполнение кода.