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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Gwini
10 / 10 / 3
Регистрация: 08.03.2014
Сообщений: 70
#1

Корректно ли использовать goto? - C++

13.08.2014, 19:29. Просмотров 1585. Ответов 24
Метки нет (Все метки)

Читал что оператор goto вообще советуют не использовать, кроме разве что глубоких циклов. Но нормально ли это будет, например, вот в таком коде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
    char choice;
    cin >> choice;
    while (cin.get() != '\n')
    {
        cin.ignore(100, '\n');
        bad:cout << "Bad choice. Try again.\n";
        cin >> choice;
        continue;
    }
    switch (choice)
    {
    case 'a': cout << "A";
            break;
    case 'b':cout << "B";
    default: goto bad;
    }
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2014, 19:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Корректно ли использовать goto? (C++):

Использовать оператор перехода GOTO в приведенном коде - C++
Мне нужен оператор перехода GOTO в программе. Если выводится сообщение &quot;Данное число в массиве отсутствует&quot;, то должно перейти на начало...

При вводе пользователем числа от 0 до 9, вывести на экран название программы (использовать оператор goto) - C++
Программу по заданию я написал Написать программу для выполнения следующих действий. При вводе цифры от 0 до 9 будет выводиться ее...

Как правильно вызвать метод в С++ и как использовать команду goto в default - C++
#include &lt;iostream&gt;; #include &lt;conio.h&gt;; using namespace std; void main() { setlocale(LC_ALL, &quot;Rus&quot;); calculate(); ...

О том, почему нелюбим goto; как его правильно использовать; и чем в моем случае его можно заменить? - C++
Вот есть такой оператор всеми программистами нелюбимый. Goto называется. Говорят, что его использование всегда можно обойти и...

Замена goto - C++
Здравствуйте! Имеется следующий код: start: double a; cout &lt;&lt; &quot;\nEnter side of triangle: &quot;; while(!(cin&gt;&gt;a) ||...

Выйти из goto. - C++
Работаю в С++. Было задание написать программу с использованием goto. Вот код: ...

24
-=ЮрА=-
Заблокирован
Автор FAQ
13.08.2014, 19:45 #2
Gwini, нет не нормально в любой вариации, забудьте об этом опреаторе.
Всё прекрасно решается без готу посредством циклов. О коде поста говорить вообще не хочется, прсото напишу он плох.
1
Водяной Змей
Заблокирован
13.08.2014, 19:49 #3
А зачем тут именно goto? Почему нельзя сделать функцию bad()?
Может есть алгоритмы, которые кому-то кажутся более понятными с goto. Но здесь-то он что дает?
0
Gwini
10 / 10 / 3
Регистрация: 08.03.2014
Сообщений: 70
13.08.2014, 19:53  [ТС] #4
Цитата Сообщение от Водяной Змей Посмотреть сообщение
А зачем тут именно goto? Почему нельзя сделать функцию bad()?
я просто спросил нельзя ли его использовать в подобных ситуациях. Понятно что можно сделать по-другому, но это мне показалось удобным вот я и спросил.
0
Водяной Змей
Заблокирован
13.08.2014, 19:54 #5
нельзя ли его использовать в подобных ситуациях
Ну если ваш код никто не увидит, кроме вас, или тех, кто определенно считает подобные вещи удобными, - используйте.
1
Gwini
10 / 10 / 3
Регистрация: 08.03.2014
Сообщений: 70
13.08.2014, 19:57  [ТС] #6
Понятно
0
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,952
Записей в блоге: 17
13.08.2014, 20:10 #7
Цитата Сообщение от Gwini Посмотреть сообщение
вообще советуют не использовать, кроме разве что глубоких циклов.
Должна быть четкая аргументация чем оправдано использование go to, чаще всего такой аргументации нет ибо можно успешно использовать другие конструкции.
1
zss
Модератор
Эксперт С++
6483 / 6046 / 1983
Регистрация: 18.12.2011
Сообщений: 15,676
Завершенные тесты: 1
13.08.2014, 21:15 #8
Не использовать goto - это очень правильно.
В крайнем случае - можете использовать для перехода вперед по коду программы,
но не назад и, тем. более, внутрь цикла, как в Вашем примере!
3
Водяной Змей
Заблокирован
13.08.2014, 21:36 #9
zss, +
0
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
13.08.2014, 21:39 #10
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
нет не нормально в любой вариации, забудьте об этом опреаторе.
Нет, нормально в некоторых вариациях. Пусть автор помнит о нем и применяет, где считает необходимым.
1
some_name
Вежливость-главное оружие
226 / 224 / 55
Регистрация: 19.02.2013
Сообщений: 1,441
13.08.2014, 21:52 #11
Цитата Сообщение от Gwini Посмотреть сообщение
Читал что оператор goto вообще советуют не использовать, кроме разве что глубоких циклов. Но нормально ли это будет, например, вот в таком коде:
Да, советуют. Однако я сам недавно смотерл исзодники какого-то класса в Java. И там видел использование этого оператора.

Добавлено через 1 минуту
ААА, это был класс с датой, там был парсик строки.
1
-=ЮрА=-
Заблокирован
Автор FAQ
13.08.2014, 21:53 #12
Vourhey,честно не могу представить ни одного варианта где готу нельзя заменить условием либо континьюе в цикле. Максимум - выйти вконец какого-то полотна из кода но опять же кто мешает сделать там ритерн или накинуть условие.
0
some_name
Вежливость-главное оружие
226 / 224 / 55
Регистрация: 19.02.2013
Сообщений: 1,441
13.08.2014, 21:53 #13
Да, это класс Date.java
0
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
14.08.2014, 02:30 #14
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Vourhey,честно не могу представить ни одного варианта где готу нельзя заменить условием либо континьюе в цикле
Заменить можно. Только зачем?
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Максимум - выйти вконец какого-то полотна из кода но опять же кто мешает сделать там ритерн или накинуть условие.
Никто не мешает. Но зачем плодить условия, если где-то удобнее, можно написать через goto?
Причин убегать от goto кроме личной неприязни никакой нет.
0
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,081
14.08.2014, 03:05 #15
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Vourhey,честно не могу представить ни одного варианта где готу нельзя заменить условием либо континьюе в цикле.
в микроконтроллерах например вернутся на точку старта
Цитата Сообщение от Vourhey Посмотреть сообщение
Причин убегать от goto кроме личной неприязни никакой нет.
а то что структурность программы теряется, это так мелочи
вернемся опять к "спагети"
0
14.08.2014, 03:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2014, 03:05
Привет! Вот еще темы с ответами:

Избавиться от goto. - C++
Нашла в интернете одну очень интересную реализацию меню, но там есть goto. по идее от него можно избавиться применением циклов, но у меня...

Ненависть к Goto - C++
Почему к Goto такая ненависть ? Я считаю, что goto универсальный оператор, благодаря которому можно отказаться от всяких While и For. ...

Альтернатива goto в С++ - C++
Как перейти из конца цикла (перенаправление - first) в самое начало программы, дело в том, что goto нельзя перенаправлять в начало...

Аналог goto - C++
Подскажите ,есть ли в С++ аналог оператора goto? Есть код: int main() { setlocale(0, &quot;&quot;); //поддержка русского языка int...


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

Или воспользуйтесь поиском по форуму:
15
Закрытая тема Создать тему
Опции темы

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