У меня такая ситуация,что нужно объяснить концепцию операторов break/continue(зачем они нужны и как работают),с первым все понятно,а со вторым возникают проблемы с наглядным примеров использования на практике.
Вопрос: Можете подсказать какой-нибудь наглядный пример где без него никак не обойтись?
PS в гугле все примеры высосаны из пальца либо не совсем понятно зачем "он" здесь нужен
PSS пример его работы в реальной программе(любой)
При грамотном составлении условий, в операторе continue нет "необходимости". Сколько примеров не видел - везде можно было обойтись без него, поменяв немного условия. Но вот облегчить жизнь этот оператор может.
Первый пример, который приходит в голову - выйти из текущей итерации по условию:
for(...) {
if(condition)
continue;
// code
}
Но данная ситуация не нуждается в continue
, ведь проще в данном случае сделать отрицание условия и он даже не понадобится:
for(...) {
if(!condition){
// code
}
}
Более "адекватный" пример использования, но менее очевидный - улучшение читаемости циклов с большим числом вложенности условий. Представим пример:
for(...) {
// code 0
if(condition1){
// code 1
if(condition2){
// code 2
if(condition3){
// code 3
}
}
}
}
Выглядит не очень "читаемо" даже без, собственно, самого кода внутри этих условий. Оператор continue
позволяет эту пирамиду превратить в код вообще без вложенности:
for(...) {
// code 0
if(!condition1)
continue;
// code 1
if(!condition2)
continue;
// code 2
if(!condition3)
continue;
// code 3
}
Стоит отметить, что данный код выглядит несколько нестандартно что ли. Лично я видел такое буквально пару раз, уж не знаю, с чем это связано :)
Этот оператор используется в циклах for, foreach, while и необходим для того, чтобы прервать выполнение текущей итерации цикла с места его вызова и перейти к следующей итерации. Естественно, как и break оператор continue оператор является оператором завершающим тело условия.
Пример:
for (int i = 0; i < 100; i++)
{
// Печатаем в консоль сообщение о начале цикла.
Console.WriteLine("Iteration begin.");
// Проверяем если i между 20 и 30, то прерываем дальнейшее выполнение цикла и переходим к следующей итерации.
if (i > 19 && i < 31)
continue;
// Печатаем в консоль сообщение об окончании цикла.
Console.WriteLine("Iteration begin.");
}
В результате для значений переменной i между 20 и 30 включительно в консоль будет выводиться только первое сообщение из цикла. Код цикла следующий после оператора continue будет пропускаться по выполнению условия, а указатель следующей строки для выполнения будет указывать на первую строку текущего цикла.
Оператор continue нужен для пропуска 1 итерации в цикле, чаще всего за каким либо условием.
Оператор break нужен для полного выхода из цикла. Также вызываться обычно за условием.
Обычно когда хотят показать "работоспособность" этих двух операторов приводят в пример самый обычный цикл for. Давайте для начала так и сделаем.
Вот первый пример с оператором break.
Может быть (все может быть) ,что программисту встала задача вывести все числа от 0 до 10, но если условие вдруг срабатывает, срочно остановить выполнение цикла.
for (int i = 0; i < 10; i++)
{
if (i == 7)//То самое условие
break;//Тот самый break
Console.WriteLine(i);
}
0
1
2
3
4
5
6
Все как нам и нужно было. Как только условие выполнилось, процесс выполнения цикла прекратился.
Теперь с оператором continue. Теперь нашему программисту понадобилось выполнять цикл до конца и проводить какие-то операции со счётчиком. Но как только выполняется условие, приступить к следующей итерации, пропуская эту.
Вот пример кода с выводом.
for (int i = 0; i < 10; i++)
{
if (i == 7)//То самое условие
continue;//Тот самый continue
Console.WriteLine(i);
}
0
1
2
3
4
5
6
8
9
И я думаю, твой вопрос возник из-за частоты применения каждого из операторов. break используют чаще, и ситуаций для осмотра больше, а вот с continue возник вопрос.
Так вот отвечаю.
условие
|
========= ========
А такой для break:
условие
|
=========
SeeSharp
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Мне необходимо удалить узел дерева, если у него имеются двое детейНаходил примеры удаления на других языках, но без понятия, как это реализовать...
Изучаю javascriptДобрался до ajax запросов