|
3080 / 534 / 11
Регистрация: 29.08.2008
Сообщений: 1,687
|
|
Оператор GOTO19.09.2008, 16:42. Показов 7032. Ответов 40
Метки нет (Все метки)
GOTO в топку. В нормальных языках нужны только циклы, а GOTO пусть останется только для *.bat, и *.cmd файлов.
0
|
|
| 19.09.2008, 16:42 | |
|
Ответы с готовыми решениями:
40
Случаи удачного применения оператора goto каким образом на схеме изобразить процедуру goto оператор GoTo |
|
2773 / 341 / 22
Регистрация: 15.01.2008
Сообщений: 2,614
|
|
| 19.09.2008, 17:19 | |
|
Имхо goto всётаки нужен - никтоже не заставляет им пользоваться))может и пережиток однако если им не пользоваться то он мешать не будет...
0
|
|
|
296 / 56 / 5
Регистрация: 22.05.2008
Сообщений: 788
|
|
| 19.09.2008, 19:08 | |
|
все что хочется сделать goto можно сделать рекурсией
0
|
|
|
Администратор
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
|
|
|
Администратор
87854 / 53175 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
|
| 19.09.2008, 21:52 | |
|
На мой взгляд наличие GOTO в коде свидетельствует о недостаточной квалификации разработчика, который на может грамотно спроектировать свой код.
0
|
|
|
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 как решение
РешениеЯ даже не буду выдумывать что-то свое, а возьму пример из "Философия С++". Представьте, что у вас семь, например, вложенных циклов. В самом внутреннем цикле принимается решение о прекращении работы всех остальных. По простому: мы должны выйти из всех циклов, находясь во внутреннем. Допустим, без 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
|
||
|
Администратор
87854 / 53175 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
||
| 21.09.2008, 15:22 | ||
|
Более того, ни разу не встречал таких случаев, чтобы реально были необходимы 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
|
|
|
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 | ||
![]() Добавлено через 7 минут 31 секунду А вообще идеальных языков нет. Каждый для своей задачи. К примеру, я не думаю, что Вы, Gnumko, сможете написать язык для обработки текстовой информации такой же великолепный, как Perl. А если сможете, то будет ли он такой же низкоуровневый, как С? Будет он компилируемым, или интерпретируемым? Во... Лучше напишите язык для какой-нибудь конкретной цели. Будет больше пользы. Ну что-нибудь придумайте там... Хотя, сейчас уже сложно придумать что-то по-настоящему новое.
0
|
||
|
Администратор
87854 / 53175 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
||||||
| 21.09.2008, 17:10 | ||||||
|
Впрочем, про гото - это уже другая тема.
0
|
||||||
|
Почетный модератор
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 | |
|
1
|
|
|
118 / 12 / 3
Регистрация: 21.08.2007
Сообщений: 222
|
|
| 22.09.2008, 16:26 | |
|
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|||
| 22.09.2008, 16:50 | |||
|
igor_nf, тебе что, код написать?
0
|
|||
|
Of Wolf and Man
999 / 198 / 5
Регистрация: 09.07.2008
Сообщений: 1,784
|
|
| 22.09.2008, 17:05 | |
|
Из учебника по паскалю (то что помню)
"оператор GOTO очень сильно усложняет восприятие програмного кода, поэтому его использование категорический НЕ РЕКОМЕНДУЕТСЯ, тем более что оператор ЧАСТО можно заменить циклами и рекурсией" ЧАСТО - но не всегда НЕ РЕКОМЕДУЕТСЯ - из за трудности восприятия кода - но не запрещено тут надо смотреть как программа будет быстрее работать, я с Ворхеем согласен.
0
|
|
| 22.09.2008, 17:05 | |
|
Помогаю со студенческими работами здесь
20
Оператор goto
Оператор goto Убрать оператор goto Безусловный оператор GoTo Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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 была полностью переписана на Си, в. . .
|