Форум программистов, компьютерный форум, киберфорум
Теория программирования
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/36: Рейтинг темы: голосов - 36, средняя оценка - 4.86
 Аватар для bombus
3080 / 534 / 11
Регистрация: 29.08.2008
Сообщений: 1,687

Оператор GOTO

19.09.2008, 16:42. Показов 7032. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
GOTO в топку. В нормальных языках нужны только циклы, а GOTO пусть останется только для *.bat, и *.cmd файлов.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.09.2008, 16:42
Ответы с готовыми решениями:

Случаи удачного применения оператора goto
Доброе утро, уважаемые форумчане! Поделитесь, пожалуйста, вашими примерами удачного применения оператора безусловного перехода goto. ...

каким образом на схеме изобразить процедуру goto
каким образом изображается процедура goto на схеме, то есть возвращение в определенное место в программе при определенный условиях,...

оператор GoTo
Ввести с клавиатуры произвольное целое число X в диапазоне от 80 до 500. Если введенное число X не соответствует указанному диапазону, с...

40
 Аватар для Vanstorm
2773 / 341 / 22
Регистрация: 15.01.2008
Сообщений: 2,614
19.09.2008, 17:19
Имхо goto всётаки нужен - никтоже не заставляет им пользоваться))может и пережиток однако если им не пользоваться то он мешать не будет...
0
 Аватар для Spo1ler
296 / 56 / 5
Регистрация: 22.05.2008
Сообщений: 788
19.09.2008, 19:08
все что хочется сделать goto можно сделать рекурсией
0
Администратор
 Аватар для mik-a-el
87854 / 53175 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
19.09.2008, 19:14
В goto не вижу никакого смысла. Ни разу не возникало потребности в его использовании.
0
6140 / 1898 / 14
Регистрация: 07.07.2008
Сообщений: 10,417
19.09.2008, 21:47
GOTO не рекомендуется использовать для читаемости программы, но бывают моменты, когда метка перехода от GOTO находится рядом с GOTO, а реализация не через goto требудет нехилых циклов(начало и конец их очень далеки друг от друга и это ухудшает читабельность) в этих случаях ИМХО GOTO увеличивает читабельность кода
0
Администратор
 Аватар для mik-a-el
87854 / 53175 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
19.09.2008, 21:52
На мой взгляд наличие GOTO в коде свидетельствует о недостаточной квалификации разработчика, который на может грамотно спроектировать свой код.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
21.09.2008, 09:48
Вместо GOTO вполне достаточно циклов вместе с break и continue. А если у них еще и параметр будет, как в PHP (к циклу какого уровня применить), то про GOTO вообще можно смело забыть и никогда не вспоминать.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
21.09.2008, 15:03
Лучший ответ Сообщение было отмечено CoderHuligan как решение

Решение

Цитата Сообщение от mik-a-el Посмотреть сообщение
На мой взгляд наличие GOTO в коде свидетельствует о недостаточной квалификации разработчика, который на может грамотно спроектировать свой код.
Все, кто говорит, что использование goto - это лишнее, что это свидетельствует о низкой квалификации разработчика - вы неправы.

Я даже не буду выдумывать что-то свое, а возьму пример из "Философия С++". Представьте, что у вас семь, например, вложенных циклов. В самом внутреннем цикле принимается решение о прекращении работы всех остальных. По простому: мы должны выйти из всех циклов, находясь во внутреннем. Допустим, без goto нам пришлось бы делать break, во внешнем цикле еще проверку (возможно, с использованием вспомогательных переменных), и снова break, во внешнем, опять то же самое, и так до самого верхнего уровня. Мягко говоря, для производительности это дико просто. goto нам даст возможность оптимизировать этот код раз в 10.

Тем более, если мы взглянем на циклы трезвыми (дизассемблирующими) глазами, то "цикл" - есть то же самое goto, но на начало цикла. Там будет стоять тот же jmp (je, jg и т. д.). Не везде, конечно

Объясню, почему не любят goto. Дело в том, что начинающие программисты часто используют именно его в самых простых местах. Где только угодно суют. В этом проблема, да. Это плохо, так как, сложно контролировать поведение программы, когда ее команды прыгают туда-сюда везде, где попало. Вот минус использования goto.

Но в определенных ситуациях goto просто необходим и очень полезен. Он нужен обязательно

P. S. о низкой квалификации разработчика свидетельствует то, что goto у него 10 штук на 100 строк кода, образно. А еще о низкой квалификации может свидетелсьтвовать то, что он делает 20 if, 15 break и 5 continue вместо одного goto.

Переходы нужны!
1
Администратор
 Аватар для mik-a-el
87854 / 53175 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
21.09.2008, 15:22
Цитата Сообщение от Vourhey Посмотреть сообщение
Представьте, что у вас семь, например, вложенных циклов.
Хм... А ты слышал о рефакторинге?
Более того, ни разу не встречал таких случаев, чтобы реально были необходимы 7 вложенных циклов. У меня даже 2 вложенных редко где найдешь, всё на функции разбито.
Да, можно говорить красивые слова вроде "оптимизация" и т.п.. Но! Когда речь идет о коммерческом софте который еще нужно и сопровождать, иногда и масштабировать, то подобные вещи не катят. Дороже выйдет.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
21.09.2008, 15:28
Ха. Расскажите-ка, чем же goto плох, м? Раз все так на него взъелись. Жду объективных аргументов недостатков goto. Я пока вижу только один свой: goto прибавляет ответственности за такие скачки в программном коде, требует внимательности. Но есть факт: он не нарушает никаких правил в программе, это обычный jmp на заданный адрес.

То, что не встречалось, не значит, что этого нет. Я недавно писал прогу (по проверке xml-фалов) у меня было 5 вложенных циклов (пройтись, по родительским, дочерним, по атрибутам, значениям атрибутов, в которых хранятся имена нодов, и по этим нодам). Мы работаем над коммерческим софтом. Я мог нагородить 5 этажей if'ов с брэйками. Но предпочел, совсем не зря, использовать goto. Я теперь расскажите мне, что я сделал неправильно? Я почему пять этажей проверок с брэйками и переменными сопровождать "круче", чем один goto на конец внешнего цикла. Мне любопытно.

Добавлено через 27 секунд
Рефакторинг тут воооообще не при чем.
0
10 / 10 / 2
Регистрация: 18.08.2008
Сообщений: 127
21.09.2008, 16:28
Существуют языки низкого и высокого уровня . Так же существует программирование на низком и высоком уровне . Так вот чем чем ниже программируете тем ближе к Гото конструкциям . Я вот не встречал программы с макросами и шаблоными конструкциями с Гото . Наверное это будет гранате подобно.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
21.09.2008, 16:31
Та же память, те же конструкции. Но С++/C, перл к макросам мало относятся. И goto в них есть. И это радует.
0
Эксперт С++
 Аватар для XuTPbIu_MuHTAu
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
21.09.2008, 16:32
Хотелось бы что-нибудь написать по поводу goto,но уже нечего,Vourhey всё сказал. В который раз отмечаю,что я с ним согласен.
qwone,то,что можно использовать goto, не значит,что нужно везде использовать goto. Это как-то маниакально,goto расширяет арсенал программиста,и это само по себе хорошо,а если программист знает,где и как применять каждую пушку из своего арсенала - все просто шикарно.
1
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
21.09.2008, 16:44
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
goto расширяет арсенал программиста,и это само по себе хорошо,а если программист знает,где и как применять каждую пушку из своего арсенала - все просто шикарно.
Ну это просто поэтично...

Добавлено через 7 минут 31 секунду
А вообще идеальных языков нет. Каждый для своей задачи. К примеру, я не думаю, что Вы, Gnumko, сможете написать язык для обработки текстовой информации такой же великолепный, как Perl. А если сможете, то будет ли он такой же низкоуровневый, как С? Будет он компилируемым, или интерпретируемым? Во...

Лучше напишите язык для какой-нибудь конкретной цели. Будет больше пользы. Ну что-нибудь придумайте там... Хотя, сейчас уже сложно придумать что-то по-настоящему новое.
0
Администратор
 Аватар для mik-a-el
87854 / 53175 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
21.09.2008, 17:10
Цитата Сообщение от Vourhey Посмотреть сообщение
Раз все так на него взъелись.
Лично я не взъелся. Не вижу в нем смысла - см. мои посты выше.
Цитата Сообщение от Vourhey Посмотреть сообщение
Но есть факт: он не нарушает никаких правил в программе, это обычный jmp на заданный адрес.
Хардкод тоже не нарушает правил и работает, но тем не менее неприемлим в качестве окончательного решения.
Цитата Сообщение от Vourhey Посмотреть сообщение
То, что не встречалось, не значит, что этого нет. Я недавно писал прогу (по проверке xml-фалов) у меня было 5 вложенных циклов (пройтись, по родительским, дочерним, по атрибутам, значениям атрибутов, в которых хранятся имена нодов, и по этим нодам).
А XPath не пробовали?
Цитата Сообщение от Vourhey Посмотреть сообщение
Рефакторинг тут воооообще не при чем.
Да лаааааадно. Семь вложенных циклов - это как раз большой простор для рефакторинга.
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
В который раз отмечаю,что я с ним согласен.
qwone,то,что можно использовать goto, не значит,что нужно везде использовать goto. Это как-то маниакально,goto расширяет арсенал программиста,и это само по себе хорошо,а если программист знает,где и как применять каждую пушку из своего арсенала - все просто шикарно.
Может быть. Приведите реальный пример, где это реально нужно. Семь вложенных циклов не катят.

Впрочем, про гото - это уже другая тема.
0
Почетный модератор
 Аватар для Humanoid
11557 / 4352 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
21.09.2008, 20:51
Я несколько раз встречался на PHP с такой ситуацией, о которой говорил Vourhey... и меня очень огорчило, что там нет никаких аналогов goto. Для того, кто будет править мою программу было бы гораздо проще понять goto, чем огород из присвоений переменной и проверки этой переменной в родительском цикле. Он бывает нужен редко... но нужен бывает. Я считаю, что goto - нужная вещь.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
22.09.2008, 00:28
http://kerneltrap.org/node/553/2131
1
118 / 12 / 3
Регистрация: 21.08.2007
Сообщений: 222
22.09.2008, 16:26
Цитата Сообщение от Vourhey Посмотреть сообщение
Представьте, что у вас семь, например, вложенных циклов...
Ага . В таком случае вам и goto уже не поможет..
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
22.09.2008, 16:50
igor_nf, тебе что, код написать?
А XPath не пробовали?
Он слабоват для моих целей был.
Хардкод тоже не нарушает правил и работает, но тем не менее неприемлим в качестве окончательного решения.
Никто здесь до сих пор не смог объяснить неприемлемость goto
0
Of Wolf and Man
 Аватар для Xentar
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
22.09.2008, 17:05
Из учебника по паскалю (то что помню)
"оператор GOTO очень сильно усложняет восприятие програмного кода, поэтому его использование категорический НЕ РЕКОМЕНДУЕТСЯ, тем более что оператор ЧАСТО можно заменить циклами и рекурсией"
ЧАСТО - но не всегда
НЕ РЕКОМЕДУЕТСЯ - из за трудности восприятия кода - но не запрещено
тут надо смотреть как программа будет быстрее работать, я с Ворхеем согласен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.09.2008, 17:05
Помогаю со студенческими работами здесь

Оператор goto
Здравствуйте. Я в лабораторной работе проверяю введенные данные на различные ошибки. Я это все сделал, каждую ошибку мне выдает. То...

Оператор GOTO
Дано 50 вещественных чисел. Определить наибольшую величину из них. С помощью оператора GOTO

Оператор goto
Как передать управление из одного класса в другой c помощью goto(или как то по другому)?

Убрать оператор goto
Подскажите, пожалуйста, как переписать данный код без использования оператора goto: for i:=0 to N-1 do begin if spis=elvalue then...

Безусловный оператор GoTo
Доказать (путем перебора возможных значений), что для любых величин А,В,С типа Boolean следующие пары логических выражений имеют одинаковые...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru