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

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

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

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

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

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

Оператор 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...

Инструкция break - C++
Эм, балуюсь с C++. Значит, отбираю простые числа, первый вариант программы: #include <iostream> #include <cstdlib> #include...

Break в циклах - C++
Такая проблема: занимаюсь по книге Эллайна, и в ней заговорилось о break и его использовании в циклах. Я, дабы проверить эту зверюгу на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Urnwestek
264 / 122 / 6
Регистрация: 20.10.2013
Сообщений: 196
31.10.2013, 03:50     оператор break #2
Это вопрос, скорее, эстетики и мнения на этот счёт самые разные.
mytilus
82 / 82 / 8
Регистрация: 04.10.2012
Сообщений: 331
31.10.2013, 04:14     оператор break #3
Использование break ухудшает читаемость кода человеком. Конечно, удобно, когда все условия выхода из цикла указаны в одном месте. Но я считаю так: хочешь ставить break - ставь break.
Против часовой
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 3
31.10.2013, 09:45  [ТС]     оператор break #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.
mytilus
82 / 82 / 8
Регистрация: 04.10.2012
Сообщений: 331
31.10.2013, 10:10     оператор break #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) прыжок из цикла.

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

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

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

Не по теме:

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

ValeryS
31.10.2013, 12:02
  #9

Не по теме:

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

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

Не по теме:

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

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

Не по теме:

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

ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,738
31.10.2013, 12:06     оператор break #14
Цитата Сообщение от MrGluck Посмотреть сообщение
break - завуалированный goto
ну можно так сказать
но лучше он сам за себя говорит break -"ломатель"
ломает цикл
contine тоже можно сказать завуалированный goto
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2013, 12:06     оператор break
Еще ссылки по теме:

Цикл do.while и break - C++
Задача: написать программу, которая принимает от пользователя 10 int чисел, затем выводит их в строку, находит среднее значение. Так же...

Break и return - C++
Дано два кода на Си. #include&lt;stdio.h&gt; int func(char ,char); void main() { char sym,str; int z; printf(&quot;Vvedite stroky:\n&quot;); ...

Использование 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){...

Ключевое слово break - C++
Как правильно надо использовать ключевое слово break??

Ошибка доступа на break - C++
Здравствуйте! Пишу программу, по сути являющуюся мини базой данных, в которой должна быть возможность сохранить и загрузить базу. ...


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

Или воспользуйтесь поиском по форуму:
Croessmah
31.10.2013, 12:06     оператор break
  #15

Не по теме:

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

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

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