С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246

Отказ от break и continue

11.08.2013, 01:09. Показов 4535. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хорстманн пишет: "Многие программисты считают, что операторы break и continue неоправданно усложняют текст программы. Применять эти операторы вовсе не обязательно - те же действия можно реализовать, не прибегая к ним".

Подскажите, пожалуйста, начинающему - это как, например, можно без них обойтись?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.08.2013, 01:09
Ответы с готовыми решениями:

Операторы break и continue
Мне нужно вывести числа выше главной диагонали , что выглядело так 11111 1111 111 11 1 Но у меня выходит...

Убрать операторы break и continue С++
В голову ничего другого не приходит как эти два операторы . Нужно их убрать и при том что бы программа работала так же само как с ними, то...

Применение операторов continue и break в C#
Дано ряд, если его сумма равна непарному числу, то не учитываем последнее слагаемое ряда. К примеру ряд i * Math.Pow(x, i);

12
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
11.08.2013, 03:38
Kifsif, есть теория, что любую программу можно на одних if переписать. Вопрос - зачем это надо? По моему скромному если удобно использовать break или continue, то нет причин от них отказываться. А заменить можно по-разному. Пример - проверка, что в массиве нет чётных чисел:
Java
1
2
3
4
5
6
int [] arr = { 1, 1, 2, 1 };
int i;
for ( i = 0; i < arr.length; ++i )
    if ( ( arr[i] & 1 ) == 0 )
        break; 
System.out.println((( i == arr.length ) ? "No" : "Have" ) + " even elements.");
Java
1
2
3
4
5
int [] arr = { 1, 1, 2, 1 };
int i;
for ( i = 0; i < arr.length && ( ( arr[i] & 1 ) != 0 ); ++i )
    ; 
System.out.println((( i == arr.length ) ? "No" : "Have") + " even elements.");
0
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
11.08.2013, 11:15
easybudda, так нагляднее же:
break
Java
1
2
3
4
5
6
int [] arr = { 1, 1, 2, 1 };
int i;
for ( i = 0; i < arr.length; ++i )
    if ( ( arr[i] & 1 ) == 0 )
        break; 
System.out.println((( i == arr.length ) ? "Have" : "No") + " even elements.");
Без break
Java
1
2
3
4
5
6
7
        int [] arr = { 1, 1, 2, 1 };
        int i;
        boolean flag = true;
        for(i=0; i<arr.length && flag; i++)
            if ( ( arr[i] & 1 ) == 0 )
                flag = false;
        System.out.println((( i == arr.length ) ? "Have" : "No") + " even elements.");
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
11.08.2013, 11:29
Gepar, ага, только я вывод перепутал - надо "Have" и "No" местами поменять, а по ночам спать лучше
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
11.08.2013, 17:05
break и continue спасают на вложенных циклах, когда надо пропустить или круг в текущем цикле или вообще пропустить некоторое количество вложенных циклов, break label спасает
0
 Аватар для Vortal
104 / 104 / 27
Регистрация: 11.08.2011
Сообщений: 301
12.08.2013, 01:19
и очень каряво будет работать switch без break и continue. В целом можно, но каряво.
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
17.08.2013, 23:50
[quote="Kifsif;4936752"]break,continue изначально не входят в парадигму языков структурного программирования (коем Java является). Поэтому везде где используется break и continue можно использовать операторы if, но программа от этого становятся не понятными и ухудшается производительность (где вместо одного break ставится три if'a).
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 13:18
Care, вы так занимательно оперируете парадигмами, но я смею заметить что java не язык структурного программирования, он лишь содержит в себе его элементы, а основная его парадигма это ООП
0
 Аватар для Ded_Vasilij
233 / 215 / 63
Регистрация: 01.09.2012
Сообщений: 2,103
18.08.2013, 13:19
Вот пример из Хорстманна
Java
1
2
3
4
5
6
7
8
9
10
public void calculate (double x)
    {
        if(LastCommand.equals("+"))  result+=x;
        else if (LastCommand.equals("-")) result-=x;
        else if (LastCommand.equals("*")) result*=x;
        else if (LastCommand.equals("*")) result/=x;
        
        dysplay.setText(""+result);
        
    }
NetBeans упорно предлагает заменить кучу if'-ов на switch. Я бы тоже через него делал.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 13:25
Тем кто никак не может уразуметь зачем switch и чем они отличаются от if я разъясню разницу.

при использовании switch компилятор сразу строит таблицу вариантов, так как заранее известен полный набор вариантов (простыми словами при свиче не происходит поочерёдный спуск по всем кейсам, а сразу же переходит на нужный).
при if варианты ветвления недетерминированны и компилятор не может построить такую таблицу, а это сказывается на производительности, так как чтобы попасть на нижний if программе придётся пройти весь путь.

отсюда вывод:
switch быстрее if и в определённых условиях может использоваться не только как удобная синтаксическая конструкция, но и как средство оптимизации
2
 Аватар для Ded_Vasilij
233 / 215 / 63
Регистрация: 01.09.2012
Сообщений: 2,103
18.08.2013, 13:34
mutagen, это я все понимаю, слава Богу, методы трансляции сдал. Но Хорстманн же считается одним из самых компетентных авторов. Не думаю, что он этого не знает. Как Вы это объясните?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 13:40
Цитата Сообщение от proger_55 Посмотреть сообщение
Но Хорстманн же считается одним из самых компетентных авторов. Не думаю, что он этого не знает. Как Вы это объясните?
Я думаю ему просто синтаксис не нравится по его личным причинам (привычка, плохие воспоминания, etc) или возможность имитации goto говнокода при помощи брейков на лейблы.
Ну и к слову следует понимать что мы практики, мы на этом языке пишем, а Хорстман и другие апологеты холиварят о общих принципах с точки зрения абстрактного программирования, они себе холиварят, а время показывает за что голосуют программисты.
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 14:22
Цитата Сообщение от mutagen Посмотреть сообщение
Care, вы так занимательно оперируете парадигмами, но я смею заметить что java не язык структурного программирования, он лишь содержит в себе его элементы, а основная его парадигма это ООП
http://ru.wikipedia.org/wiki/Java
сбоку там колоночка есть... посмотрите...

Добавлено через 1 минуту
Если не увидели то вот:
Класс языка:
объектно-ориентированный, СТРУКТУРНЫЙ, императивный, кроссплатформенный
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.08.2013, 14:22
Помогаю со студенческими работами здесь

Взаимозаменяемость операторов break и continue
Всем привет. Подскажите,пожалуйста, взаимозаменяемы ли данные операторы?Если да, то можно пример,как заменить continue на break и...

Fatal error: Cannot break/continue 1 level
Есть код, но никак не могу разобраться что же не так, если что не пинайте сильно, я в php недавно. Fatal error: Cannot break/continue 1...

В каких случаях можно заменить break на continue и наоборот и при этом результат не меняется?
Вопрос: В каких случаях можно заменить break на continue и наоборот при этом результат не меняется.

Ошибка "Fatal error: Cannot break/continue 1 level"
Здравствуйте. При сознании скрипта по изменению значений БД возникли проблемы с загрузкой другой фотографии. Выбивает во такую ошибку ...

С++.Операторы в С++: условные операторы, операторы break и continue
Выяснить, пересекаются ли параболы у=аx2+bx+с и у=dx2+ex + f. При положительном ответе найти точки пересечения.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru