Суббота, 27.04.2024, 02:58
Приветствую Вас Гость | RSS

Лекции

Меню сайта
Форма входа
Категории раздела
ТАУ (Теория автоматического управления) [31]
лекции по ТАУ
Экология [151]
учебник
Бухгалтерский учет и налогообложение в строительстве [56]
Дементьев А.Ю. - Практическое пособие
Психология [104]
Пип
информатика [80]
с# Карли Ватсон
современные стулья [0]
новинки
Поиск

Главная » 2010 » Февраль » 11 » Прекращение выполнения цикла
00:03
Прекращение выполнения цикла
Прекращение выполнения цикла
Иногда возникают ситуации, когда требуется более тонкий контроль за выпол-
нением кода в цикле. В С# для этих целей предусмотрено четыре команды, с тре-
мя из которых вы уже познакомились:
• break — приводит к немедленному завершению цикла.
• continue — приводит к немедленному завершению текущего
прохода цикла (вычисления продолжаются со следующего прохода).
• goto — позволяет выйти из цикла в помеченную точку кода
(этот метод не рекомендуется использовать, если вы хотите получить
легко читаемый и понимаемый код).
• return — выводит из цикла и из функции, в которой он находится
- (см. главу 6).
Команда break позволяет просто выйти из цикла, при этом управление переда-
ется на первую строку кода после цикла. Например:
int i = 1;
while (i <= 10)
{
i f (i == 6 V • . .\ .:, :v ' : . л
:,;;.:;:;
break; • ' • "••
Console.WriteLine("{0}*, i++) ;
••«-•::^ :: • ••. • •" . " V : : r } : : - ' • • ; • • • . ^ . / Ж ^ . ^ г : ш ^ - ^ Ш ' - - '-^,:':.•.. •• • • i " - ' - ; : - , • • : . . - . • • • • : '
Этот код выведет числа от 1 до 5, поскольку когда значение переменной i достиг-
нет 6, команда break приведет к выходу из цикла.
Команда continue прекращает выполнение текущего прохода цикла, а не всего
цикла. Например:
int i ;
for (i = 1; i <= 10; i++)
{
i f ( ( i % 2) == 0)
' • •' • ' •• ' •' ' • • • COntinUe;.'... : •• . , .••:•.•.,•.:•. ; . '.• • ; , • : ''-••'.-;•' : •••_••• . . . . • , . . , . • : . : . .
Console.WriteLine(i) ;
Третий способ предполагает использование оператора goto, с которым вы по-
знакомились ранее. Например:
.. • ;: int i - 1 ;
while (i <= 10)
{
if (i == 6)
goto exitPoint;
Console.WriteLine('{О}', i
Console.WriteLine("Этот код никогда не будет выполняться!);
exitPoint:
Console.WriteLine("Этот код будет выполнен после того,
• как произойдет выход из цикла посредством goto. ")f.
Обратите внимание на то, что выход из цикла посредством команды goto допус-
тим (разве что несколько неряшлив), а вот использование goto для входа в цикл
извне запрещено.
Управление порядком выполнения 75
Бесконечные циклы
Возможно — в результате ошибки или преднамеренно — создать циклы, кото-
рые никогда не завершатся: так называемые бесконечные циклы. В качестве са-
мого простого примера можно привести следующий цикл:
while (true)
// код, вьшолняющийся в цикле
Иногда такой цикл бывает полезен, тем более что из него всегда можно выйти,
например, с помощью оператора break.
Однако в тех случаях, когда создание бесконечного цикла происходит по недо-
смотру, последствия могут оказаться очень неприятными. Рассмотрим следующий
цикл, который очень напоминает цикл for из предыдущего раздела:
i n t i = l ; • . : . • :.; : ' . ;;
while (i <= 10)
:'' ••'. •.:•;• ::;::• \ А С : ' ^ • • . . . ' • : " • '."'У-"''./"г'"/.'".
if ((i % 2) « 0)
continue; ;
C o n s o l e . W r i t e L i n e ( ' { 0 } * , i + + ) ; '• ' - Й : ; ' -:: /^' :- :• ' :..•,.. •. •. • ::
Здесь увеличение переменной цикла i происходит в последней строке цикла,
т. е. после оператора continue. Поэтому если управление передается на оператор
continue (а это произойдет, когда переменная i станет равной 2), следующая ите-
рация будет исполняться с тем же значением переменной i, опять пройдет про-
верка текущего значения i, начнет выполняться итерация и т. д. Это приведет
к зависанию приложения. Обратите внимание, что в этом случае существует воз-
можность выйти из зависшего приложения обычным способом, поэтому не придет-
ся перезагружать компьютер.
Итоги
В этой главе мы расширили наши познания в области программирования, рас-
смотрев различные конструкции, которые можно использовать в программах. Пра-
вильное использование таких конструкций окажется- очень важным, когда вы начнете
создавать более сложные приложения; а они будут встречаться сплошь и рядом на
протяжении всей этой книги.
Мы уделили некоторое время изучению булевой логики, а также достаточно по-
дробно рассмотрели логику побитовых операций. Эти вопросы имеют очень боль-
шое значение, когда дело доходит до использования ветвления и организации циклов
в программах. Представляется необходимым хорошо изучить операторы и приемы,
представленные в настоящей главе.
Ветвление позволяет выполнять код по условию, что в сочетании с использова-
нием циклов дает возможность создавать достаточно сложные конструкции. Когда
цикл расположен внутри другого цикла, который в свою очередь находится внутри
оператора if, помещенного внутри третьего цикла, то начинаешь понимать, почему
так важно пользоваться отступами при написании программ. Если сдвинуть весь
код к левому краю экрана, тут же возникнут трудности с его восприятием и еще
большие трудности появятся при его отладке. Очень важно научиться использо-
вать отступы уже на данном этапе: позднее вы сумеете это оценить! Конечно, VS
выполняет эту работу за нас, однако в любом случае представляется полезным са-
мостоятельно соблюдать отступы при наборе текста кода.
76 Глава 4
Упражнения
1. Если имеются две целые переменные vari и var2, то какую проверку
необходимо выполнить, чтобы убедиться, что одно из них (но не оба)
больше 10?
2. Напишите приложение, использующее логику из упражнения 1,
которое получает два числа от пользователя и выводит их на экран,
но если оба числа больше 10, отбрасывает их и запрашивает новые.
3. Что неправильно в приведенном ниже коде?
for (int i = 1; i <== 10;
Console.WriteLine(i) ;
Измените приложение для вычисления множества Мандельброта
таким образом, чтобы оно запрашивало у пользователя
границы рисунка и выводило выбранную часть рисунка.
Написанная нами программа выводит такое количество символов,
которое умещается на одной строке консольного приложения;
вам следует предусмотреть приведение любого выбранного
участка изображения к этим же размерам с тем, чтобы
максимизировать видимую область.




















Категория: информатика | Просмотров: 1178 | Добавил: basic | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Календарь
«  Февраль 2010  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

krutoto.ucoz.ru
Бесплатный конструктор сайтов - uCoz