powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / этот страшный ужасный GoTo
76 сообщений из 76, показаны все 4 страниц
этот страшный ужасный GoTo
    #38095010
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Студентов, использующих оператор GOTO, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации
Эдгар Дейкстра

Язык VB.NET

к примеру в цикле выполняется операция копирования файлов, да чего угодно.
внутри блока цикла существует блок Try Catch который отлавливает ошибки и выдает окно, с вопросом:
Аборт, Повтор, Игрор.
При ответе №1 понятно, что мы вываливаемся из цикла и все довольны.
Игнор и мы ни чего не предпринимаем
Но, как осуществить Повтор?

я вижу 2 способа:
1. это GoTo <строка>, он прост как топор, за исключением того, что указывать должен за границы блока Try
2. Do...Loop Until <условие выхода> внутри For Next

как думайте, что будет лучше?
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095011
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ прост - ни при каких обстоятельствах не использовать GOTO.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095015
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Студентов, использующих оператор GOTO Delphi, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации
Эдгар Дейкстра
Поправил.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095027
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

единственным Do...Loop Until <условие выхода> следует обойтись
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095033
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes У меня сегодня насяльника с утра - до обеда жал повтор при входе в клиентбак.
Пока я ему клиент банк не обновил :)
goto - последний шанс у программиста ( если прокатит ) перед сменой профессии.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095050
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиУ меня сегодня насяльника с утра - до обеда жал ...
Я жал на той неделе, завтра нужно поприседать :)
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095063
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КСтудентов, использующих оператор GOTO Delphi, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации
Эдгар Дейкстра
Поправил.

Delphi ничем принципиально от с# не отличается
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095064
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не поверите, но имеется одно приложение с goto, работает же)
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095071
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На фортран IV никто похоже не писал
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095073
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
жим 165
приседание 235
шестой десяток
рубаху не использую, только пояс ( и то после травмы)
а есть на форуме кто еще железом балуется?
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095075
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationDelphi ничем принципиально от с# не отличаетсяМасса принципиальных отличий. Как в языке, так и в библиотеках.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095089
вопросец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ,
жим 165
приседание 235
шестой десяток
рубаху не использую, только пояс ( и то после травмы)
а есть на форуме кто еще железом балуется?

балуюсь.

жим - 112 кг
присед - 140 кг
становая - 142 кг.

вес туловища - 65 кг. а у вас вес тела какой?
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095095
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилНа фортран IV никто похоже не писал Делал курсовик на FoxPro 2.5
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095109
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросец, не плохие результаты
вес 105 -110, когда профессионально занимался было в районе 90 рост 175 ( все посушиться руки не доходят)
сила воли уже не та ))
вот про силу воли:
Был у нас ( пропал куда то) перец один в качке, пришел на костылях, лет под 70, ну и начал приседания пытаться делать, сначала пустой потом с десятчиком - через пару месяцев ходил уже с тростью и приседал с пустым грифом.
Ну внимание на него никто не обращал, мало ли.
А тут давай пацанам показывать технику рывка, толчка, как спину ставить, оказался мужик мастером с новосиба (жись занесла)
и инвалид, у него шипы на медиальных пластинах в коленных суставах,
Мужик был духовитый, часа по три - четыре отдавал каждый день - 15 000 приседаний с грифом ( дальше не лез)
Через пол года начал бегать и прыгать как газель, только сокрушался что втек инвалидность сняло.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095146
вопросец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степивопросец, не плохие результаты
вес 105 -110, когда профессионально занимался было в районе 90 рост 175 ( все посушиться руки не доходят)
сила воли уже не та ))
вот про силу воли:
Был у нас ( пропал куда то) перец один в качке, пришел на костылях, лет под 70, ну и начал приседания пытаться делать, сначала пустой потом с десятчиком - через пару месяцев ходил уже с тростью и приседал с пустым грифом.
Ну внимание на него никто не обращал, мало ли.
А тут давай пацанам показывать технику рывка, толчка, как спину ставить, оказался мужик мастером с новосиба (жись занесла)
и инвалид, у него шипы на медиальных пластинах в коленных суставах,
Мужик был духовитый, часа по три - четыре отдавал каждый день - 15 000 приседаний с грифом ( дальше не лез)
Через пол года начал бегать и прыгать как газель, только сокрушался что втек инвалидность сняло.

А я по весам и возрасту понял, что вы профессионал. Уважение вам! Мне всего лишь 28 лет. Заниматься стал спустя год после операции на печенке. Чуть дуба не дал. Худой и слабый был. Я извиняюсь, как смерть посрать отпустила. Занимался сам, купил штангу, гантели скамью и стойки. Как вспомню жесть, стремался в качалку идти в таком виде. Я еле 15 кг выжимал %). Комплексовал очень. Если бы текущее состояние мозга на тот момент, пошел бы в качалку какой есть.

Четыре года всего занимаюсь. Правда результаты скромные у меня, но я на обычной еде, ем что есть. Спортпит не покупал никогда, честно говоря, жаба душила хороший дорого стоит. Ну и без тренера, книжки/форумы читал и методом проб и ошибок. Было так что и спину разогнуть не мог из-за неправильной техники. :)
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095280
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросец,
да зря стремались идти в качалку, там пацаны ценят не мясо, а духовитость ( в плане, через силу но сделаю это) и сколько воды с тебя утекает за сессию ( если ты пашешь - достоин уважения)
питание не знаю( закончил в 85м), многие знакомые жрут, прет как на дрожжах, только вот с головой дружба утрачивается ( на полном сер.)
редко встретишь гору мышц с адекватной головой ( это уж на уровне анекдотов закрепилось).
если химичить, то уж под наблюдением доктора.(лучше не надо - посадите печень 100 проц, и лиф не поможет)
Любой спорт (активный отдых) воспитывает дух, но не в плане я этому дам в фейс, а в плане я это( задачу) сделаю - хоть и будет трудно.
Самое главное он проветривает мозги ( метаболизм, обогащение кислородом мозга и тд.) усвоение материала происходит быстрее в в разы,сумасшедшие идеи приобретают практичную реальность.
В плане духа есть с кого брать пример Дикуль,Юрий Власов ( сгусток интеллекта и воли), Брумель ( тут вообще слов нет, в хорошем смысле)
Удачи..
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095348
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Roman Mejtesк примеру в цикле выполняется операция копирования файлов, да чего угодно.
внутри блока цикла существует блок Try Catch который отлавливает ошибки и выдает окно, с вопросом:
Аборт, Повтор, Игрор.
При ответе №1 понятно, что мы вываливаемся из цикла и все довольны.
Игнор и мы ни чего не предпринимаем
Но, как осуществить Повтор?

я вижу 2 способа:
1. это GoTo <строка>, он прост как топор, за исключением того, что указывать должен за границы блока Try
2. Do...Loop Until <условие выхода> внутри For Next

примерно так.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
bool всехорошо=false;
int скокоразповторять = 10;
int проход = 0;
do {

всехорошо = процедура_в_которой_в_цикле_выполняется_операция_копирования_файлов_да_чего_угодно();

} while (! всехорошо && ((++проход) <= скокоразповторять)) )
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095435
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

ну я про бейсик писал, там Do Loop подходит лучше, чем while end while (имхо)
а за идею спасибо (со счетчиком на количество раз!:)
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095454
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КСтудентов, использующих оператор GOTO,Delphi, 1С, PHP, ООП, ORM.... , практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации
Эдгар Дейкстра
Поправил.
в этот список можно включить очень много чего ещо
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095485
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The Programmers' StoneНе забывайте, если вы хотите, чтобы предмет вашего обожания понял ваше любовное письмо, вы не позволите педантизму правописания и грамматики исказить письмо, а если вы хотите, чтобы ваши коллеги поняли вашу программу, не перекручивайте ее структуру во имя «чистоты».
Кто не читал - велкам The Programmers' Stone
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095526
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУОтвет прост - ни при каких обстоятельствах не использовать GOTO.

GOTO - двигатель прогресса, он позволяет разруливать тупиковые ситуации неформально
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095687
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в продолжении темы и из чистого интереса хотел бы узнать у людей понимающих в ассемблере
чем же отличается 2 этих кода:

Код: vbnet
1.
2.
3.
Do
...
Loop Until <Условие>


и
Код: vbnet
1.
2.
3.
iteration:
...
If <Условие> Then GoTo iteration


В чем принципиальное различие 2 этих методов.

Единственное, что на данный момент, мне приходит в голову, это все переменные инициализированные внутри блока Do..Loop будут высвобождаться как только я покину цикл, в случаи GoTo: это произойдет либо того, когда я покину процедуру, либо как только я сам лично это произведу руками, что как бы не очень удобно.

в чем еще отличия 2 этих методов?

p.s. не надо кричать, про то, что я такой сякой, я не использую GoTo и вопрос задаю чисто из интереса
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095690
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОтвет прост - ни при каких обстоятельствах не использовать GOTO.Просто к слову;
http://en.wikipedia.org/wiki/Goto#Common_usage_patterns
тынц
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38095706
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,
авторВ чем принципиальное различие 2 этих методов.
отличие только в том, что в ду/луп вы запрыгнуть по другому готу не сможете.
переменные будут утилизированны сборщиком ( в релизе ) в независимости от применяемой конструкции
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096515
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
enigmatic тынц
Там все правильно забацано.
Структурное программирование - не самоцель.
В чужом коде гораздо легче разобраться если там GOTO, а не бесчисленные комбинации флагов выхода из циклов
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096518
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2В чужом коде гораздо легче разобраться если там GOTO, а не бесчисленные комбинации флагов выхода из циклов
Как-то ты не совсем корректно формулируешь мысль - почем ты одному GOTO сопоставляешь бесчисленные комбинации флагов выхода из циклов?
1. Если у нас бесчисленные комбинации флагов выхода из циклов, то тогда у нас будут бесчисленные переходы GOTO.
2. Вопрос, что лучше, бесчисленные переходы GOTO или бесчисленные комбинации флагов выхода из циклов?

От бесчисленных переходов GOTO голова кругом пойдет.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096524
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

кстати на заметку, в Бабсике можно сразу покинуть 3 цикла при желании

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
        For i As Integer = 1 To 100
            Do
                While True
                    Exit For
                End While
            Loop
        Next i


без всяких там GoTo как написано в педивикии
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096571
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes, а в JavaScript есть break
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096649
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
МСУCat2В чужом коде гораздо легче разобраться если там GOTO, а не бесчисленные комбинации флагов выхода из циклов
Как-то ты не совсем корректно формулируешь мысль - почем ты одному GOTO сопоставляешь бесчисленные комбинации флагов выхода из циклов?
1. Если у нас бесчисленные комбинации флагов выхода из циклов, то тогда у нас будут бесчисленные переходы GOTO.
2. Вопрос, что лучше, бесчисленные переходы GOTO или бесчисленные комбинации флагов выхода из циклов?



От бесчисленных переходов GOTO голова кругом пойдет.
Речь о выходе из цикла нижнего уровня.
Для каждого из вложенных циклов в общем случае нужен свой флаг выхода.
Переменные должны описываться рядом с их использованием. Нет глобальным переменным! - это тоже спорный подход.
Нужно только одно goto, что бы выйти из цикла, а не стопицот проверок флагов.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096673
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ерунда это все. На том-же ассемблере вообще без гоуту шага не ступишь. :)
Но, вообще, последнее время надобности не возникало.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096686
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Нужно только одно goto, что бы выйти из цикла, а не стопицот проверок флагов.
В функцию оформить и выйти ретурном.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096697
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Edd.DragonCat2Нужно только одно goto, что бы выйти из цикла, а не стопицот проверок флагов.
В функцию оформить и выйти ретурном.
Мысль я понял, не понял сколько функций Вы предлагаете для десяти уровней вложенности циклов?

GOTO - полезный оператор. Присутствует во всех языках программирования, ориентированных на решение практических задач.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096711
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2десяти уровней вложенности циклов

Часто у вас такие циклы?
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096717
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAНа том-же ассемблере вообще без гоуту шага не ступишь. :)
это кажется. Каждый лишний переход - срыв конвейера.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096721
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Речь о выходе из цикла нижнего уровня.
Для каждого из вложенных циклов в общем случае нужен свой флаг выхода.
Переменные должны описываться рядом с их использованием. Нет глобальным переменным! - это тоже спорный подход.
Нужно только одно goto, что бы выйти из цикла, а не стопицот проверок флагов.
Решение классическое и старо как мир, его уже озвучили. Собственно, разделение логики кода на составляющие методы - бест практис. Писать код процедурно в одном методе под тысячи строк - зло, за которое нужно расстреливать.

Cat2Мысль я понял, не понял сколько функций Вы предлагаете для десяти уровней вложенности циклов?
А сколько признаков будет, столько и напиши функий. На практике больше трех вложенностей я не встречал, и то поискать эти примеры нужно, сейчас не упомню. Если в твоем коде слишком большая вложенность по признакам, проблема не в функциях, а в архитектуре кода. На кол архитектора.

Cat2GOTO - полезный оператор
GOTO - зло, от которого нужно отказываться при любом раскладе.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096731
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилYUBAНа том-же ассемблере вообще без гоуту шага не ступишь. :)
это кажется. Каждый лишний переход - срыв конвейера.Вызов функции в языках высокого уровня, по существу и есть гоуту. В ассемблере это явно как переход на адрес.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096745
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAВ ассемблере это явно как переход на адрес.
не путайте JUMP и CALL
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096747
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096754
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилне путайте JUMP и CALLМодификации. :) И, кстати, не везде это есть.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096755
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAИзопропилне путайте JUMP и CALLМодификации. :) И, кстати, не везде это есть.
BALR 14,0 ?
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096831
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Мысль я понял, не понял сколько функций Вы предлагаете для десяти уровней вложенности циклов?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
int superPuperCountProc()
{
	for()
	{
		return 1;

		for()
		{
			return 2;

			for()
			{
				return 3;

				for()
				{
					return 4;

					for()
					{
						return 5;

						for()
						{

						}
					}
				}
			}
		}
	}
	
	return 0;
}


int main()
{
	superPuperCountProc();
}



И еще раз - вопрос не в том, что краше, а в том, чтобы не взрывать ни компилятору, ни себе башню. Это плохо, что во всех языках есть goto. Без него всем было бы чуточку легче. Кому-то меньше зубодробительной логики по разбору кода, а кому-то меньше потенциальных проблем (хорошо, если компилятор чего подскажет, а если нет?).
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096968
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon
Гавнокод
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
int superPuperCountProc()
{
	for()
	{
		return 1;

		for()
		{
			return 2;

			for()
			{
				return 3;

				for()
				{
					return 4;

					for()
					{
						return 5;

						for()
						{

						}
					}
				}
			}
		}
	}
	
	return 0;
}


int main()
{
	superPuperCountProc();
}



Мда. За такую "архитектуру" нужно выпроваживать в зал расстрела...
Только разделение логики на методы спасут отца русской демократии.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096980
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,

Хм, как вариант для рефакторинга очень даже ничего.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096982
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТолько разделение логики на методы спасут отца русской демократии.
а любая я ли логика поддаётся эффективному разделению на методы?
а вдрух я реализую конечный пулемёт автомат. там не то что без готу не обойтись , но и на методы делить то трудновато.

и в конце концов на методы делить мона тогда , когда более менее ясно , как дальше двигаться, а если поведение метода окончательно не определено, то рано его делить на под методы.
был метод какой то ( матрицу обкатывал в рекурсии), который при создании трудно было разделить. вот он и получился строк 200-300 , уж не помню точно. да , потом его разпили удачно , но только потом.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096988
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erа любая я ли логика поддаётся эффективному разделению на методы?
Вопрос из разряда теории "всегда ли можно оптимизировать код". Всегда, даже если ты максимально оптимизировал код, это не означает, что он больше не поддается оптимизации. Думай, как можно структурировать и декомпозировать логику и уйти от лапшекода.

beg-in-erа вдрух я реализую конечный пулемёт автомат. там не то что без готу не обойтись , но и на методы делить то трудновато.
Слабо пример привести, в котором не обойтись без GOTO? Если "трудновато" декомпозировать - это не означает, что это нельзя сделать.

beg-in-erи в конце концов на методы делить мона тогда , когда более менее ясно , как дальше двигаться, а если поведение метода окончательно не определено, то рано его делить на под методы.
Если не ясно, "как дальше двигаться" - рано писать программу. Нужен анализ и обследование предметной области. Когда будет представление, тогда можно автоматизировать процессы. А так ты просто сотрясаешь воздух сферическими конями в вакууме.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38096999
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУbeg-in-erа любая я ли логика поддаётся эффективному разделению на методы?Вопрос из разряда теории "всегда ли можно оптимизировать код". Всегда, даже если ты максимально оптимизировал код, это не означает, что он больше не поддается оптимизации. Думай, как можно структурировать и декомпозировать логику и уйти от лапшекода.

пропущено...Всегда можно, но не всегда нужно.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097030
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЕсли "трудновато" декомпозировать - это не означает, что это нельзя сделать.
понятно что всё можно , но иногда оно может пойти во вред. или затраты по времени будут ощутимы.

авторЕсли не ясно, "как дальше двигаться" - рано писать программу
речь не о проге , а об конкретном алгоритме. т.е. тогда , когда мы знаем , что хотим получить , но не знаем точно как это сделать
1. Либо много альтернатив, и выбрать изначально правильную невозможно
2. Либо при создании первичной реализации алгоритма получаются промежуточные данные, которые уже в последствии и делают основу конечной реализации. Без этих данных реализацию построить невозможно, а на бумаге это не просчитать.

в частности тогда шла речь о реализации алгоритма Литтла, ака метод ветвей и границ. как он работает , я чесно говоря до сих пор не понимаю ( т.е. я не до конца въехал, почему он таки даёт почти правильный результат , и почему он иногда даёт не всегда оптимальный результат)

как раз для таких случаев goto просто незаменим. и меня уже не переубедить никогда в том , что goto надо отправлять на свалку, что он вреден, что он колечит мозг.
goto это лишь удобный метод достижения поставленной задачи. но как атомное оружие в программировании , его надо юзать с умом, там где он реально необходим, где все for, while.... курят в сторонке
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097040
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er1. Либо много альтернатив, и выбрать изначально правильную невозможно
Ну так берем и тестируем алгоритмы. Более выйгрышное по каким-то там определенным параметров забираем себе.

beg-in-er2. Либо при создании первичной реализации алгоритма получаются промежуточные данные, которые уже в последствии и делают основу конечной реализации. Без этих данных реализацию построить невозможно, а на бумаге это не просчитать.
Ну так выноси расчет и взаимодействие с этими данными в отдельный слой, тем самым декомпозируя основной алгоритм.

beg-in-erкак раз для таких случаев goto просто незаменим.
Мне нравится твоя логика, ты пишешь, что не знаешь как он работает и что не разобрался с этим алгоритмом, но точно уверен в необходимости GOTO. Зачет
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097077
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМне нравится твоя логика, ты пишешь, что не знаешь как он работает и что не разобрался с этим алгоритмом, но точно уверен в необходимости GOTO. Зачет
я знаю как работает его реализация, Но я до конца не понял ( тогда) почему работает сам алгоритм. почему он находит почти лучший вариант. и это непонимание не относится к программированию никаким боком. так что твой "зачёт" - мимо кассы.

авторНу так выноси расчет и взаимодействие с этими данными в отдельный слой, тем самым декомпозируя основной алгоритм.
не понял , а это к чему.

поясню свою мысль. когда шла та реализация - необходимо было найти решение транспортной задачи с доп моментами.
на рассмотрении были "муравьи", "генетика" и "ветви" (куда же без них).
что генетические алгоритмы , что муравьные вроде давали результат, но что то с доп моментами с ними было плохо.
пришлось лезть в метод ветвей и границ, в реализации Литтла, получить промежуточные данные,
на основании которых и был выведен новый алгоритм, который выполнял поставленную задачу за приемлемое время.
Оптимизация NP полной задачи это не таблицу в БД добавить. тут надо найти правильное/приемлемое решение.
и заранее вычислить конечную реализацию просто невозможно. необходимо пройти по всем кругам.

и тут не применим ваш график буровых работ для служащих ВВС (с) стандартные подходы тут не подходят.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097078
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ,
жим 165
приседание 235
шестой десяток
рубаху не использую, только пояс ( и то после травмы)
а есть на форуме кто еще железом балуется?

130-210-180
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097088
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er, что-бы не разговаривать о сферичской лошаде в стратосфере, урезанный пример в студию, наглядно демонстрирующий, что без GOTO обойтись нельзя.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097144
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУпример ..., в котором не обойтись без GOTO

Я сам не сторонник GOTO, за столько лет у меня необходимости применения не было. break/continue/return как то вполне хватало :-) Но если без него всё сильно усложняется, почему бы не применить?
Для C# в общем не особо актуально, но на PowerBuilder и T-SQL не так всё радужно

но примеры привести можно:
1) анализ кучи условий, каждое из которых имеет смысл только после проверки предыдущего.
делать без goto - это либо сильно увеличить вложенность условий, либо рассчитывать на неочевидные для каждого порядок анализа логического выражения компилятором. И в том и в другом случае неудобно.

2) как уже говорили, вложенные циклы. правда 10 таких циклов - это даже не говнокод. В циклах тоже можно обойтись без goto и даже никаких отдельных флагов для каждого цикла не нужно. Просто получится неудобно читать.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097184
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79на неочевидные для каждого порядок анализа логического выражения компилятором.
это о чём? Порядок вычисления либо не регламентирован, либо чётко задан (&& ||)
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097213
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то Лёня не просыпается, GOTO его любимая тема. Вчера видно совсем в гавнище домой пришел
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097219
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУbeg-in-er, что-бы не разговаривать о сферичской лошаде в стратосфере, урезанный пример в студию, наглядно демонстрирующий, что без GOTO обойтись нельзя.
ещё 40 лет была доказана теорема, что без можно написать любой метод без goto. любой, так что , ссылаясь на ту теорему, можно сказать нет такого кода , в котором нет альтернативы готу. вопрос в применимости.

вот мой говнокодище н-летней давности. какой то промежуточный вариант. боевой, который пошёл в серию не нашёл.
рекурсионно ищем контур гамильтона.
выход из внутренного цикла должен быть именно таким. break. не годится. делать доп условие if - можно , но вредно.
как минимум , когда ищем правильный алгоритм, готу надёжное подспорье. только что увлекаться макаронами не надо.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
  void METOD_3_post_usl2(int[,] matrix, int HAMILTON_CONTUR, ref int GLOBAL_MIN, int LEV
    , int Qi, List<int> TT, int left_tt, StreamWriter sw, string ss, int level, int Low, int Hi, int tt_level)
        {
         
          if (METOD_3_post_usl2_FAST_OUT)         return;
          int qj;
        
            if (TT.Count < 1)
            {
              
                if (HAMILTON_CONTUR <= GLOBAL_MIN)
                {
                    GLOBAL_MIN = HAMILTON_CONTUR;
                    //....
                }
                return;
            }

            int h0 = HAMILTON_CONTUR;
            int dd = TT.Count;
            for (int i = 0; i < dd; i++)
            {
               
                qj = TT[i];
                if (matrix[Qi + 1, qj + 1] < 0) continue;
               // if (matrix[Qi + 1, qj + 1] > 600) goto ending;
                HAMILTON_CONTUR = h0 + matrix[Qi + 1, qj + 1];
                for (int Q = 0; Q < WIND_DOSTAVKI.Count; Q++)
                {
                    if (qj == WIND_DOSTAVKI[Q].point)
                    {
                        //if (matrix[Qi + 1, qj + 1] > 600) goto ending;
                        if (HAMILTON_CONTUR < WIND_DOSTAVKI[Q].lo)
                        {
                            if (HAMILTON_CONTUR + WAITING_WINDOWS < WIND_DOSTAVKI[Q].lo)
                                goto ending;
                            else
                            {
                                WAITING_BEFORE_POINT2[level] = WIND_DOSTAVKI[Q].lo - HAMILTON_CONTUR;
                              //  HAMILTON_CONTUR += (WIND_DOSTAVKI[Q].lo - HAMILTON_CONTUR);
                                
                            }
                        }
                        if (HAMILTON_CONTUR > WIND_DOSTAVKI[Q].hi) goto ending;
                        post_usl_точкИ_добавлена[Q] = true;
                       
                    }
                    if (HAMILTON_CONTUR > WIND_DOSTAVKI[Q].hi)
                        if (post_usl_точкИ_добавлена[Q] == false)
                            goto ending;
                }

                TT.Remove(qj);
            
                WAY[level] = qj;

                if (HAMILTON_CONTUR < GLOBAL_MIN)
                    METOD_3_post_usl2(matrix, HAMILTON_CONTUR, ref GLOBAL_MIN, LEV, qj, TT, (left_tt - 1), sw, ss, (level + 1), Low, Hi, tt_level);
                TT.Insert(i, qj);

                for (int Q = 0; Q < WIND_DOSTAVKI.Count; Q++)
                if (qj == WIND_DOSTAVKI[Q].point)
                    post_usl_точкИ_добавлена[Q] = false;
            ending:
                WAITING_BEFORE_POINT2[level] = 0;
             
            }
       }  // void METOD_3_post_usl2

...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097233
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилArm79на неочевидные для каждого порядок анализа логического выражения компилятором.
это о чём? Порядок вычисления либо не регламентирован, либо чётко задан (&& ||)

(obj != null) || (obj.value = 5)

если поменять местами, будет nullreference (при отсуствии obj)
компилятор не вычисляет всё выражение, ему в данном случае достаточно понять, что obj = null и не вычислять дальнейшее
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097237
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79bj != null) || (obj.value = 5)

если поменять местами, будет nullreference (при отсуствии obj)
компилятор не вычисляет всё выражение, ему в данном случае достаточно понять, что obj = null и не вычислять дальнейшее

Именно. Семантика && и || задана в описании языка. От компилятора никак не зависит
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097244
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erвыход из внутренного цикла должен быть именно таким. break. не годится. делать доп условие if - можно , но вредно.
Гавнокодище, конечно, редкостный. Во-первых, почему break не годится? Во-вторых, чем не устроил if? Видишь, ты сам уже знаешь ответ - как структурировать этот мусор. Причем твой метод превратится в нормальное удобоваримое чтиво. То, что мы видим сейчас - редкостное дерьмо, которое даже отрефаторить не представляется возможным. Глаза лезут на лоб от такого кода, хотя метод не большой.
Вот и думай, что лучше, декомпозировать эту лапшу на составляющие, с линейным алгоритмом, или убивать себя об стену. Так это у тебя еще метод простецкий. Прикинь метод, который раз в 20-30 больше твоего, это же страх
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097245
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилИменно. Семантика && и || задана в описании языка. От компилятора никак не зависит

Я вот пришел в свое время с делфей. Там при компиляции в настройках среды имеется галочка "вычислять полностью выражение" (не по умолчанию, правда).
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097250
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Набор входных параметов, конечно, впечатляет

int[,] matrix, int HAMILTON_CONTUR, ref int GLOBAL_MIN, int LEV, int Qi, List<int> TT, int left_tt, StreamWriter sw, string ss, int level, int Low, int Hi, int tt_level

Всё в кучу, и int[,] тебе, и какие-то ref'ы, и List, и StreamWriter даже затесался. Это полный пецдец

Друх, тут проблема не в гото, тут проблемы с головой Без обид.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097272
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

Так будет демонстрация множественного наследования в .Net или нет?!
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097282
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что с Алексеем?
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097305
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНабор входных параметов, конечно, впечатляет
Друх, тут проблема не в гото, тут проблемы с головой Без обид.

Глаза лезут на лоб от такого кода, хотя метод не большой.
ну так это же отладочная реализация алгоритма там много чего лишнего. ( куда делся последыш не знаю, за годы оно исчезло).

без этого говнокода неполучилось бы вылепить конфетку.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097315
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erбез этого говнокода неполучилось бы вылепить конфетку.
Тогда я не понимаю, зачем ты вообще его запостил? :) Говнокод ничего не доказывает, кроме как принадлежность к гавнокоду.
Показывай нормальный пример с goto.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097327
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТогда я не понимаю, зачем ты вообще его запостил? :) Говнокод ничего не доказывает, кроме как принадлежность к гавнокоду.
Показывай нормальный пример с goto.
ещё раз повторю, что без говнокода не получилось бы результата. говнокод на то и нужен , что бы найти правильный и конечный результат. и именно в нём готу был очень нужен. и не смотря на то , что в финальный релиз он не вошёл , goto сделал много для этого метода.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097337
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

нафиг там гото не нужен был
ты просто не знал что пишешь, потому первый "работающий" вариант тебя устроил
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097362
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Тот, кто не умеет правильно использовать GOTO - не достоин звания Программиста
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097385
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Тот, кто не умеет правильно использовать GOTO - не достоин звания Программиста
значит без звания будет говнокодить программировать
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097395
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Тот, кто не умеет правильно использовать GOTO - не достоин звания Программиста
В Кобол имелся оператор ALTER, который переназачал GOTO.
Я как то обрадовавшись такой возможности написал очень красивую прогу :)(сделали тут же старшим инженером -матаематиком- программистом) месяц потом разбирались.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097396
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Тот, кто не умеет правильно использовать GOTO - не достоин звания ПрограммистаЯ, скажем, и не претендую. :) Буду так, без звания.
И вообще, лучшее - враг хорошему.
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097419
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
YUBACat2Тот, кто не умеет правильно использовать GOTO - не достоин звания ПрограммистаЯ, скажем, и не претендую. :) Буду так, без звания.
И вообще, лучшее - враг хорошему.
Ну и молодец. Я тоже так думаю. Это только МСУ постоянно борется за звание "Лучший по профессии".
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097432
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2YUBAпропущено...
Я, скажем, и не претендую. :) Буду так, без звания.
И вообще, лучшее - враг хорошему.
Ну и молодец. Я тоже так думаю. Это только МСУ постоянно борется за звание "Лучший по профессии".
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097439
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Ну и молодец. Я тоже так думаю. Это только МСУ постоянно борется за звание "Лучший по профессии".Если шо, у него и спросим, как надо. :)
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097458
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

фортрановский вычисляемый GOTO - он тож ничё
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097459
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЗа такую "архитектуру" нужно выпроваживать в зал расстрела...
А за goto - расстреливать на месте. Кто проживет дольше? ))
...
Рейтинг: 0 / 0
этот страшный ужасный GoTo
    #38097462
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonМСУЗа такую "архитектуру" нужно выпроваживать в зал расстрела...
А за goto - расстреливать на месте. Кто проживет дольше? ))В живом языке без "пшел на..." никак нельзя.
...
Рейтинг: 0 / 0
76 сообщений из 76, показаны все 4 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / этот страшный ужасный GoTo
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]