Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Против часовой
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 3
#1

оператор break - C++

31.10.2013, 03:37. Просмотров 2648. Ответов 17
Метки нет (Все метки)

Здравствуйте! Я где-то слышал, что использовать оператор break для выхода из цикла - не хорошо. И что его можно использовать только если без него совсем никак не получается. Я правильно понимаю?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2013, 03:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос оператор break (C++):

Оператор break как оператор go to next - C++
Подскажите, в этом примере break эквивалентна действию оператора go to next?

Оператор break - C++
Подскажите, пожалуйста почему оператор break в строке 44 выдаёт ошибку, и как её исправить? #include<iostream.h> #include<conio.h> ...

Цикл for и оператор break - C++
Привет всем. Задание такое я должен вводить элементы массива. Если ввод неправильный (т.е. не число ) то я должен сохранить индекс...

Оператор break выходит из цикла и ветвления? - C++
Например код: for(int j=0; j<10; j++) { if(j<10) cout<<"Выход!";break; Другие операторы; Другие операторы; Другие...

Вычислить таблицу значений функции, используя switch в паре с break, оператор перехода goto - C++
Доброго вам времени суток. Есть самое бредовое задание которое я только видел в своей жизни. Написать программу, используя операторы...

Программа для выполнения:При вводе цифры от 0 до 9 будет выводиться ее название. Использовать оператор break - C++
Помогите пожалуйста заменить в программе оператор goto на оператор break #include <iostream> using namespace std; const char...

17
Urnwestek
264 / 122 / 6
Регистрация: 20.10.2013
Сообщений: 196
31.10.2013, 03:50 #2
Это вопрос, скорее, эстетики и мнения на этот счёт самые разные.
1
mytilus
83 / 83 / 9
Регистрация: 04.10.2012
Сообщений: 335
31.10.2013, 04:14 #3
Использование break ухудшает читаемость кода человеком. Конечно, удобно, когда все условия выхода из цикла указаны в одном месте. Но я считаю так: хочешь ставить break - ставь break.
1
Против часовой
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 3
31.10.2013, 09:45  [ТС] #4
Ну а вот как лучше?
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(i=0;i<a;i++)
{
b+=i;
if(b>c)
{
i=a;
}
else
{
c++;
}
}
или

C++
1
2
3
4
5
6
7
8
9
for(i=0;i<a;i++)
{
b+=i;
if(b>c)
{
break;
}
c++;
}
Второй вариант короче но там break.
0
mytilus
83 / 83 / 9
Регистрация: 04.10.2012
Сообщений: 335
31.10.2013, 10:10 #5
Для этого надо иметь представление о том, как все это выглядит после компиляции.
Первый вариант:
C++
1
2
3
4
for (i = 0; i < a; i++) {
  b += i;
  if (b > c) i = a;
  else c++;}
Когда b окажется больше, чем c, и процессор в этом убедится, произойдет следующее:
1) копирование из смещения i в регистр;
2) копирование из регистра в смещение a;
3) прыжок через блок else;
4) инкремент регистра;
5) прыжок в начало цикла;
6) сравнение смещения a и регистра;
7) прыжок из цикла.

Второй вариант:
C++
1
2
3
4
for (i = 0; i < a; i++) {
  b += i;
  if (b > c) break;
  c++;}
После проверки (b > c) будет так:
1) прыжок из цикла.

Ответ, по-моему, очевиден. ))
1
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.10.2013, 11:45 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Против часовой Посмотреть сообщение
Второй вариант короче но там break.
Второй вариант очевидный - выход из цикла, тогда как первый как минимум обязывает помнить условие окончания цикла

Добавлено через 1 минуту
Цитата Сообщение от Против часовой Посмотреть сообщение
Я где-то слышал, что использовать оператор break для выхода из цикла - не хорошо.
использоать if тоже нехорошо. и switch тоже. и циклы. и вообще программирование на физической машине вне твоего разума - нехорошо. лучший код - не написанный код.
3
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
31.10.2013, 11:58 #7
Цитата Сообщение от Против часовой Посмотреть сообщение
Здравствуйте! Я где-то слышал, что использовать оператор break для выхода из цикла - не хорошо.
А где слышал? источник пожалуйста
с ГоТо не перепутал?
Цитата Сообщение от Против часовой Посмотреть сообщение
И что его можно использовать только если без него совсем никак не получается.
это можно сказать про любой оператор, функцию.....
как говорит великий могучий русский язык "С дуру, можно и хребет сломать"

Добавлено через 3 минуты
простейший пример
индекс первого отрицательного числа
C++
1
2
3
for(i=0;i<n;i++)
 if(a[i]<0)
   break;
как более понятно написать без break?????
1
Croessmah
31.10.2013, 12:01
  #8

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
как более понятно написать без break?????
C++
1
2
    for(i=0;i<n && a[i]>=0;i++){
    }

0
ValeryS
31.10.2013, 12:02
  #9

Не по теме:

Croessmah,
не подсказывать

0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,018
31.10.2013, 12:02 #10
break - завуалированный goto </trololo>
0
Jupiter
31.10.2013, 12:03
  #11

Не по теме:

Croessmah, я думаю что хороший компилятор сделает это сам

0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,018
31.10.2013, 12:04 #12
Цитата Сообщение от Jupiter Посмотреть сообщение
Croessmah, я думаю что хороший компилятор сделает это сам
выкинет пустой цикл?
0
Jupiter
31.10.2013, 12:05
  #13

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
выкинет пустой цикл?
нет, совместит условие иф с условием выхода из цикла

0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
31.10.2013, 12:06 #14
Цитата Сообщение от MrGluck Посмотреть сообщение
break - завуалированный goto
ну можно так сказать
но лучше он сам за себя говорит break -"ломатель"
ломает цикл
contine тоже можно сказать завуалированный goto
0
Croessmah
31.10.2013, 12:06     оператор break
  #15

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
Croessmah, я думаю что хороший компилятор сделает это сам
ну так вопрос же не о компиляторах

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2013, 12:06
Привет! Вот еще темы с ответами:

While{switch{switch{break;}}} break выходит из while - C++
В общем необходимо конструкцию switch запускать в цикле, в каждом case X: стоит свой break;, да бы выполнился один case, а не все. Проблема...

Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 - C++
В С++ я ноль, помогите пожалуйста написать прогу Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 ...

Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки - C++
Здравствуйте. В С++ я абсолютный новичок, поэтому с первым же заданием возникли определённые трудности. Будьте добры, помогите решить. Буду...

Использование break - C++
using namespace std; void print_out(int n); int main(){ int n; cout&lt;&lt;&quot;введите число n:\n&quot;; cin&gt;&gt;n; if(n==0){...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.10.2013, 12:06
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru