Чтение онлайн

на главную

Жанры

Полное руководство. С# 4.0
Шрифт:

Еще одним оператором цикла в C# является оператор while. Ниже приведена общая форма этого оператора: while (условие) оператор;

где оператор — это единственный оператор или же блок операторов, а условие озна чает конкретное условие управления циклом и может быть любым логическим выра жением. В этом цикле оператор выполняется до тех пор, пока условие истинно. Как только условие становится ложным, управление программой передается строке кода, следующей непосредственно после цикла.

Ниже приведен простой пример программы, в которой цикл while используется для вычисления порядка величины целого числа. //

Вычислить порядок величины целого числа. using System; class WhileDemo { static void Main { int num; int mag; num = 435679; mag = 0; Console.WriteLine("Число: " + num); while(num > 0) { mag++; num = num / 10; }; Console.WriteLine("Порядок величины: " + mag); } }

Выполнение этой программы дает следующий результат. Число: 435679 Порядок величины: 6

Приведенный выше цикл while действует следующим образом. Сначала проверя ется значение переменной num. Если оно больше нуля, то переменная mag, выполняю щая роль счетчика порядка величины, инкрементируется, а значение переменной num делится на 10. Цикл повторяется до тех пор, пока значение переменной num остается больше нуля. Как только оно окажется равным нулю, цикл завершается, а в перемен ной mag остается порядок величины первоначального числового значения.

Как и в цикле for, в цикле while проверяется условное выражение, указываемое в самом начале цикла. Это означает, что код в теле цикла может вообще не выполнять ся, а также избавляет от необходимости выполнять отдельную проверку перед самим циклом. Данное свойство цикла while демонстрируется в следующем примере про граммы, где вычисляются целые степени числа 2 от 0 до 9. // Вычислить целые степени числа 2. using System; class Power { static void Main { int e; int result; for(int i=0; i < 10; i++) { result = 1; e = i; while (e > 0) { result *= 2; e--; } Console.WriteLine("2 в степени " + i + " равно " + result); } } }

Результат выполнения этой программы приведен ниже. 2 в степени 0 равно 1 2 в степени 1 равно 2 2 в степени 2 равно 4 2 в степени 3 равно 8 2 в степени 4 равно 16 2 в степени 5 равно 32 2 в степени 6 равно 64 2 в степени 7 равно 128 2 в степени 8 равно 256 2 в степени 9 равно 512

Обратите внимание на то, что цикл while выполняется только в том случае, если значение переменной е больше нуля. А когда оно равно нулю, как это имеет место на первом шаге цикла for, цикл while пропускается. Оператор цикла do-while

Третьим оператором цикла в C# является оператор do-while. В отличие от опе раторов цикла for и while, в которых условие проверялось в самом начале цикла, в операторе do-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 Число в обратном порядке: 891

Приведенный выше цикл действует следующим образом. На каждом его шаге крайняя слева цифра получается в результате расчета остатка от деления целого числа (значения переменной num) на 10. Полученная в итоге цифра отображается. Далее зна чение переменной num делится на 10. А поскольку это целочисленное деление, то в его результате крайняя слева цифра отбрасывается. Этот процесс повторяется до тех пор, пока значение переменной num не достигнет нуля. Оператор цикла foreach

Оператор цикла foreach служит для циклического обращения к элементам кол лекции, которая представляет собой группу объектов. В C# определено несколько ви дов коллекций, к числу которых относится массив. Подробнее о цикле foreach речь пойдет в главе 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 = i; break; // прервать цикл, как только будет // выявлен наименьший множитель числа } } Console.WriteLine("Наименьший множитель равен " + factor); } }

Результат выполнения этой программы выглядит следующим образом. Наименьший множитель равен 2

Поделиться:
Популярные книги

Утопающий во лжи 4

Жуковский Лев
4. Утопающий во лжи
Фантастика:
фэнтези
боевая фантастика
рпг
5.00
рейтинг книги
Утопающий во лжи 4

Пожиратель душ. Том 1, Том 2

Дорничев Дмитрий
1. Демон
Фантастика:
боевая фантастика
юмористическая фантастика
альтернативная история
5.90
рейтинг книги
Пожиратель душ. Том 1, Том 2

Релокант. По следам Ушедшего

Ascold Flow
3. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. По следам Ушедшего

Любовь Носорога

Зайцева Мария
Любовные романы:
современные любовные романы
9.11
рейтинг книги
Любовь Носорога

Измена. Верни мне мою жизнь

Томченко Анна
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Верни мне мою жизнь

Изгой. Пенталогия

Михайлов Дем Алексеевич
Изгой
Фантастика:
фэнтези
9.01
рейтинг книги
Изгой. Пенталогия

Осознание. Пятый пояс

Игнатов Михаил Павлович
14. Путь
Фантастика:
героическая фантастика
5.00
рейтинг книги
Осознание. Пятый пояс

Темный Патриарх Светлого Рода 4

Лисицин Евгений
4. Темный Патриарх Светлого Рода
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода 4

Лорд Системы 12

Токсик Саша
12. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 12

Генерал Империи

Ланцов Михаил Алексеевич
4. Безумный Макс
Фантастика:
альтернативная история
5.62
рейтинг книги
Генерал Империи

Пятничная я. Умереть, чтобы жить

Это Хорошо
Фантастика:
детективная фантастика
6.25
рейтинг книги
Пятничная я. Умереть, чтобы жить

Кодекс Охотника. Книга XVII

Винокуров Юрий
17. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVII

Физрук 2: назад в СССР

Гуров Валерий Александрович
2. Физрук
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Физрук 2: назад в СССР

Провинциал. Книга 3

Лопарев Игорь Викторович
3. Провинциал
Фантастика:
космическая фантастика
рпг
аниме
5.00
рейтинг книги
Провинциал. Книга 3