-
- перечитал исходный пост bialix(286 знак., 08.03.2006 01:53, )
- Не стоит, запутаться можно, но сложно. Но классику надо читать внимательно - _vvv(443 знак., 08.03.2006 13:01, )
- Да, так точно НЕЛЬЗЯ. Но дальше пошло обсуждение goto "вообще" :-) - ReAl(08.03.2006 12:21, )
- Ответ: Основоположники Си не запрещают использовать goto, но рекомендуют использовать это осторожно и для переходов внутри блока - SGK(07.03.2006 16:55, )
- с точки зрения компиляторов - пока не придумают контроллеры без всяких jmp, br, jr и проч - goto имеет право на жизнь - Mahagam(07.03.2006 15:48, )
- Стремно как-то. Вообще в сях метки не настолько преследуют, как в пасюке, но всуе не юзают. Ксения рулит:) - Николай Коровин(07.03.2006 00:02, )
- В Си то же самое. Видно программы писал человек, не зная того, что без goto Bill(179 знак., 06.03.2006 23:45, )
- Чтобы выйти из вложенного for или вложенного switch Ксения(272 знак., 06.03.2006 23:38, )
- А не проще break поставить, если просто за цикл выскакивать наод ? ;) С наступающим, кстати ! - miv(07.03.2006 10:19, )
- ..не проще: blackbit(109 знак., 07.03.2006 11:12, )
- Пардон погорячился ! Действительно не проще ! - miv(07.03.2006 13:32, )
- да, похоже без goto не обойтись - ivs(07.03.2006 11:25, )
- ..не проще: blackbit(109 знак., 07.03.2006 11:12, )
- легко maxvid(305 знак., 07.03.2006 08:59, )
- Такие финты ничем не лучше goto и я не уверен, что лучше читаются при сопровождении. ReAl(2021 знак., 07.03.2006 14:08, )
- от цикла for можно уйти к циклу while и там будет гораздо проще контролировать поведение программы bialix(27 знак., 07.03.2006 15:32, )
- Какая разница? Всё равно или goto для выхода, или if/else и дополнительная проверка в while() - ReAl(07.03.2006 15:43, )
- разница в том, что goto не обязательно, а код становится прямолинейнопонятным bialix(460 знак., 07.03.2006 16:37, )
- Что-то я туплю. Пожалуйста, те два вложенных цикла с выходом аж наружу по M[i][j] меньше 0 через while без goto и без лишнего условия в while() - ReAl(07.03.2006 17:59, , ссылка)
- Легко. Но сначала уточняющие вопросы bialix(155 знак., 07.03.2006 22:46, )
- Ответы (частично вопросом на вопрос) ReAl(755 знак., 08.03.2006 12:20, )
- мои ответы bialix(4306 знак., 08.03.2006 21:56, )
- "Да, и sed, и awk, и python написаны на С - но только для того, чтобы больше не писать на С" - не помню чья давняя фраза :-) ReAl(1035 знак., 09.03.2006 12:51, )
- мне тут недавно попалось описание языка D, так там bialix(200 знак., 09.03.2006 13:48, )
- Что-то в этой фразе есть. Хоть бери - да на плакат над рабочим местом :-) ReAl(583 знак., 09.03.2006 14:13, )
- так в D и в Java кажется используется нечто под названием labeled break. Ща поишчу первоисточник про goto - bialix(09.03.2006 14:19, )
- Ну я в более древние времена смотрел что-то другое, там было именно количество уровней вверх - на мой взгляд, глюкодром почище goto. ReAl(210 знак., 09.03.2006 14:27, )
- говорят D -- еще сырой. bialix(202 знак., 09.03.2006 14:32, )
- вот исходная фраза. переврал немного. каюсь - bialix(09.03.2006 14:21, , ссылка)
- Ну я в более древние времена смотрел что-то другое, там было именно количество уровней вверх - на мой взгляд, глюкодром почище goto. ReAl(210 знак., 09.03.2006 14:27, )
- так в D и в Java кажется используется нечто под названием labeled break. Ща поишчу первоисточник про goto - bialix(09.03.2006 14:19, )
- Что-то в этой фразе есть. Хоть бери - да на плакат над рабочим местом :-) ReAl(583 знак., 09.03.2006 14:13, )
- мне тут недавно попалось описание языка D, так там bialix(200 знак., 09.03.2006 13:48, )
- "Да, и sed, и awk, и python написаны на С - но только для того, чтобы больше не писать на С" - не помню чья давняя фраза :-) ReAl(1035 знак., 09.03.2006 12:51, )
- мои ответы bialix(4306 знак., 08.03.2006 21:56, )
- Ответы (частично вопросом на вопрос) ReAl(755 знак., 08.03.2006 12:20, )
- Легко. Но сначала уточняющие вопросы bialix(155 знак., 07.03.2006 22:46, )
- Что-то я туплю. Пожалуйста, те два вложенных цикла с выходом аж наружу по M[i][j] меньше 0 через while без goto и без лишнего условия в while() - ReAl(07.03.2006 17:59, , ссылка)
- разница в том, что goto не обязательно, а код становится прямолинейнопонятным bialix(460 знак., 07.03.2006 16:37, )
- Какая разница? Всё равно или goto для выхода, или if/else и дополнительная проверка в while() - ReAl(07.03.2006 15:43, )
- от цикла for можно уйти к циклу while и там будет гораздо проще контролировать поведение программы bialix(27 знак., 07.03.2006 15:32, )
- не каждый компилятор даст изменить вручную счетчик цикла - ivs(07.03.2006 09:03, )
- как это? мы об одном языке говорим? :) maxvid(144 знак., 07.03.2006 09:20, )
- имел в виду Delphi ivs(134 знак., 07.03.2006 10:24, )
- как это? мы об одном языке говорим? :) maxvid(144 знак., 07.03.2006 09:20, )
- Такие финты ничем не лучше goto и я не уверен, что лучше читаются при сопровождении. ReAl(2021 знак., 07.03.2006 14:08, )
- Выделяем проверку в процедуру и делаем return вместо break ivs(171 знак., 07.03.2006 05:43, )
- +1-- это единственное "чистое" решения для любого языка - bialix(07.03.2006 15:33, )
- Да, как уже писал - сам часто пользуюсь. Но при отсутствии в стандартном С локальных функций - зачастую требующее передавать стопку параметров, многие из которых - по наименованию. Тогда уж лучше goto. ReAl(129 знак., 07.03.2006 18:05, )
- и в классическом си можно извратиться. bialix(128 знак., 07.03.2006 22:55, )
- Да, как уже писал - сам часто пользуюсь. Но при отсутствии в стандартном С локальных функций - зачастую требующее передавать стопку параметров, многие из которых - по наименованию. Тогда уж лучше goto. ReAl(129 знак., 07.03.2006 18:05, )
- Ответ: Перечитай ище раз. Ключевые слова "из ВЛОЖЕННОГО" - PaulS(07.03.2006 09:05, )
- ну тогда полностью привожу ivs(198 знак., 07.03.2006 10:29, )
- +1-- это единственное "чистое" решения для любого языка - bialix(07.03.2006 15:33, )
- А не проще break поставить, если просто за цикл выскакивать наод ? ;) С наступающим, кстати ! - miv(07.03.2006 10:19, )
- Если нельзя, но очень хочется - то можно (с) - Сам я всегда стараюсь обойтись break и continue, но если без goto действительно получается коряво (бывает это крайне редко) - использую, и ничего... - Cидopгeк(06.03.2006 23:21, )
- дурной или не дурной тон, но использование goto (в С) иногда экономит ресурсы - Romario(06.03.2006 22:46, )
- Все хорошо в меру. И дурной тон получается, когда что-то не в меру: Bill(77 знак., 06.03.2006 23:50, )
- Короче я понял. Если без goto или brake совсем уж невмоготу, то можно. А если просто от лени - тогда иди на Васике пиши... MDenis(56 знак., 07.03.2006 14:19, )
- Где-то так. ReAl(1532 знак., 07.03.2006 14:52, )
- а зачем приводить явно к void? imho и без этого стандарты не нарушены. а вообще такой вот заворот с логическим ИЛИ очень похоже на питон-конструкции ;-) - bialix(07.03.2006 15:28, )
- Такое приведение - как флажок себе, что я не потерял перед этим длинным условием слово "if" :-) - ReAl(07.03.2006 15:44, )
- бррр... так ведь это не условие, это просто логическое выражение. По-моему там и без скобок все будет работать bialix(130 знак., 07.03.2006 16:18, )
- Приведение к (void) - это не неявный флажок, а ЯВНОЕ указание, что результат логического выражения никому не нужен, нужны только побочные эффекты. ReAl(360 знак., 07.03.2006 18:34, )
- внешние скобки и приведение к void. Я бы просто написал в комментах, что bialix(380 знак., 07.03.2006 22:55, )
- Как это делаю я vet1(369 знак., 07.03.2006 16:50, )
- тогда лучше ReAl(286 знак., 07.03.2006 18:07, )
- Именно на такой конструкции IAR почему-то спотыкается :( vet1(44 знак., 07.03.2006 18:19, )
- Это он ОЧЕНЬ зря. do { } while(0) - это традиционные "скобки" для макросов из нескольких операций. - ReAl(07.03.2006 18:48, )
- Именно на такой конструкции IAR почему-то спотыкается :( vet1(44 знак., 07.03.2006 18:19, )
- присваивание к status можно опустить, потому что не всегда компилятор может заоптимизировать такую переменную в /dev/null - bialix(07.03.2006 17:27, )
- тогда лучше ReAl(286 знак., 07.03.2006 18:07, )
- Приведение к (void) - это не неявный флажок, а ЯВНОЕ указание, что результат логического выражения никому не нужен, нужны только побочные эффекты. ReAl(360 знак., 07.03.2006 18:34, )
- бррр... так ведь это не условие, это просто логическое выражение. По-моему там и без скобок все будет работать bialix(130 знак., 07.03.2006 16:18, )
- Такое приведение - как флажок себе, что я не потерял перед этим длинным условием слово "if" :-) - ReAl(07.03.2006 15:44, )
- а зачем приводить явно к void? imho и без этого стандарты не нарушены. а вообще такой вот заворот с логическим ИЛИ очень похоже на питон-конструкции ;-) - bialix(07.03.2006 15:28, )
- я как раз от лени goto и ставлю Romario(377 знак., 07.03.2006 14:39, )
- А вот это, IMHO, рецидивы ассемблера. ReAl(154 знак., 07.03.2006 14:55, )
- Ответ: Romario(133 знак., 07.03.2006 15:07, )
- НЕ.. Так нельзя... Так в MS работают. Нельзя написать хреново кусок что б "потом когда-нибудь" его привести в порядок. MDenis(393 знак., 07.03.2006 15:15, )
- задача профессионала зарабатывать себе на жизнь, а не мусолить строки в коде доводя его до идеала ((с) с некоторыми поправками:) Romario(125 знак., 07.03.2006 15:35, )
- Ещё раз - на мой взгляд, если быстро не сочиняется нужная структура - значит недообдумана ЛОГИКА РАБОТЫ программы (на фазе "до кодирования"), и она работать будет ПЛОХО. - ReAl(07.03.2006 15:46, )
- это уже религиозное... иногда, чтобы написать алгоритм "чисто" нужно потратить больше времени на кодирование и в результате получить менее оптимальный код. bialix(158 знак., 07.03.2006 16:40, )
- Ключевое слово ПРОДЖУМАНО. А romario в исходном посте написал ReAl(78 знак., 07.03.2006 18:11, )
- ok Romario(2434 знак., 07.03.2006 18:24, )
- Попытался отрешиться от твоего кода и прикинуть - а как бы я решал эту задачу. ReAl(3880 знак., 08.03.2006 20:37, )
- Пардон! Ошибочка вышла - для исходного подсчёты были не для меги8, а для classic AVR. Правильная табличка ReAl(164 знак., 08.03.2006 20:57, )
- А!!! Так это же ниагарский водопад!!! - ReAl(07.03.2006 19:51, )
- (ччёрт, enter не вовремя нажал) - в смысле классическая (в некотором смысле "типовая" - см соседний тред "без претензии на флейм") конструкция switch/do-while ReAl(1710 знак., 07.03.2006 19:53, )
- мда. не знал, что такое в си можно делать. постараюсь забыть этот трюк и никогда не использовать bialix(391 знак., 08.03.2006 01:59, )
- Да, "никогда не использовать" - это я понимаю и согласен, но забывать не стоит - иначе скоро выйдет "фортран-программу можно написать на любом языке" - ReAl(08.03.2006 21:09, )
- Это не совсем мой код. Чья идея - не помню, но в книжке было указано - чьё изобретение. ReAl(588 знак., 08.03.2006 21:07, )
- я смотрел 15 минут и не ржал, потому что bialix(83 знак., 08.03.2006 22:00, )
- Тем не менее именно это и есть штатное использование case Сергей Борщ(350 знак., 08.03.2006 02:30, )
- завернутость заключается не в подряд идущих case а то что сразу после switch влез цикл do/while, причем Romario(70 знак., 08.03.2006 13:07, )
- "case" - никогда вообще не "отрабатывает". Он просто *метка* для перехода, осуществляемого switch. ReAl(98 знак., 08.03.2006 21:17, )
- я имел ввиду что "логически" отрабатывается (строится таблица переходов) - Romario(09.03.2006 12:28, )
- Да, я это потом заметил но сообщение то ли затерлось то ли не дошло. - Сергей Борщ(08.03.2006 17:45, )
- даже не так bialix(220 знак., 08.03.2006 15:05, )
- "case" - никогда вообще не "отрабатывает". Он просто *метка* для перехода, осуществляемого switch. ReAl(98 знак., 08.03.2006 21:17, )
- завернутость заключается не в подряд идущих case а то что сразу после switch влез цикл do/while, причем Romario(70 знак., 08.03.2006 13:07, )
- хм...хитра конструкция. я такую первый раз вижу:) честно. - Romario(07.03.2006 19:57, )
- Всё, печатаю дампы накомпилированного с твоего и "моего" варианта компилятором avr-gcc и иду в метро разницу смотреть. - ReAl(07.03.2006 19:55, )
- да, на первый взгляд это эквивалентно, согласен. НО..бл@ть, извиняюсь, как завернуто!!!:)) - Romario(07.03.2006 19:58, )
- Как-то в инете напоролся на подобную штуку, засунул в ИАР АВРовский... she(306 знак., 07.03.2006 20:20, )
- а для 32 битника этот вариант даже лучше. 1 раз сделал табличку по переходу на case и в цикле. однако, имхо, этот код из разряда tips & tricks - Romario(07.03.2006 20:49, )
- Дело не в разрядности... she(800 знак., 07.03.2006 22:50, )
- да, пардон. под 32 битником я имел ввиду более ''правильные'' компилеры и более мощную архитектуру проца. и этот код для них ничем не отличается с goto. - Romario(08.03.2006 13:10, )
- Просто он сделал switch как раз через табличку и IJUMP ReAl(535 знак., 08.03.2006 12:35, )
- Дело не в разрядности... she(800 знак., 07.03.2006 22:50, )
- а для 32 битника этот вариант даже лучше. 1 раз сделал табличку по переходу на case и в цикле. однако, имхо, этот код из разряда tips & tricks - Romario(07.03.2006 20:49, )
- Как-то в инете напоролся на подобную штуку, засунул в ИАР АВРовский... she(306 знак., 07.03.2006 20:20, )
- да, на первый взгляд это эквивалентно, согласен. НО..бл@ть, извиняюсь, как завернуто!!!:)) - Romario(07.03.2006 19:58, )
- мда. не знал, что такое в си можно делать. постараюсь забыть этот трюк и никогда не использовать bialix(391 знак., 08.03.2006 01:59, )
- есть такой термин? я про него не в курсе:) - Romario(07.03.2006 19:52, )
- Не, ниагарсикй водопад - это из анекдота про ушастых туземцев и их вождя с шишкой на лбу. - ReAl(07.03.2006 19:56, )
- (ччёрт, enter не вовремя нажал) - в смысле классическая (в некотором смысле "типовая" - см соседний тред "без претензии на флейм") конструкция switch/do-while ReAl(1710 знак., 07.03.2006 19:53, )
- sz на входе произвольное? - ReAl(07.03.2006 19:13, )
- нет конечно, макс 256 байт. для упакованных это будет 224. ну вот енкодер если что (без goto:)) Romario(1790 знак., 07.03.2006 19:18, )
- А вот это ты зря :-) Тебе надо было сюда кинуть, скажем, только верхний комментарий из того кода и словесное описание "чего надо" ReAl(150 знак., 07.03.2006 19:10, )
- p.s. Romario(354 знак., 07.03.2006 18:39, )
- Попытался отрешиться от твоего кода и прикинуть - а как бы я решал эту задачу. ReAl(3880 знак., 08.03.2006 20:37, )
- ok Romario(2434 знак., 07.03.2006 18:24, )
- Ключевое слово ПРОДЖУМАНО. А romario в исходном посте написал ReAl(78 знак., 07.03.2006 18:11, )
- речь не о логике ВСЕЙ ПРОГРАММЫ, речь о некоторых вспомогательных, мелких, процедурках. - Romario(07.03.2006 15:49, )
- Чем продседура мельче - тем проще ее "вылизать". А уж коль с мелкой не получается нефиг за крупные браться.. Нельзя за спиной недобитых врагов оставлять... - MDenis(07.03.2006 16:37, )
- Вы наверное никогда не писали крупных проектов. Вылизывание _работающей_, но не "красивой" мелочи приводит к увеличению времени разработки до перевернутой 8, зато можно гордиться тем, Romario(168 знак., 07.03.2006 16:54, )
- Тут ещё бабуля на двое сказала ! miv(303 знак., 07.03.2006 18:00, )
- кто хотел, тот понял про частоту вызовов, критичность выполнения и прочее. - Romario(07.03.2006 18:08, )
- Да всё понятно ! Прегибы везде не здорого ! - miv(07.03.2006 18:20, )
- Пардонте ! Ну совсем устал ! Перегибы везде не здорово ! =)))) - miv(07.03.2006 18:21, )
- Да всё понятно ! Прегибы везде не здорого ! - miv(07.03.2006 18:20, )
- кто хотел, тот понял про частоту вызовов, критичность выполнения и прочее. - Romario(07.03.2006 18:08, )
- +1 - bialix(07.03.2006 17:21, )
- На мой взгляд - сами по себе те слова очень правильные, но как оправдание "по быстрячку goto напихать" - нет. - ReAl(07.03.2006 18:09, )
- Что за "+1" ? - MDenis(07.03.2006 17:30, )
- Ответ: bialix(77 знак., 07.03.2006 17:34, )
- Жжош, аццкий сотона! :)) - AVR(08.03.2006 14:16, )
- выпей йоду - bialix(08.03.2006 15:03, )
- Жжош, аццкий сотона! :)) - AVR(08.03.2006 14:16, )
- Ответ: bialix(77 знак., 07.03.2006 17:34, )
- Тут ещё бабуля на двое сказала ! miv(303 знак., 07.03.2006 18:00, )
- Вы наверное никогда не писали крупных проектов. Вылизывание _работающей_, но не "красивой" мелочи приводит к увеличению времени разработки до перевернутой 8, зато можно гордиться тем, Romario(168 знак., 07.03.2006 16:54, )
- Чем продседура мельче - тем проще ее "вылизать". А уж коль с мелкой не получается нефиг за крупные браться.. Нельзя за спиной недобитых врагов оставлять... - MDenis(07.03.2006 16:37, )
- это уже религиозное... иногда, чтобы написать алгоритм "чисто" нужно потратить больше времени на кодирование и в результате получить менее оптимальный код. bialix(158 знак., 07.03.2006 16:40, )
- Ещё раз - на мой взгляд, если быстро не сочиняется нужная структура - значит недообдумана ЛОГИКА РАБОТЫ программы (на фазе "до кодирования"), и она работать будет ПЛОХО. - ReAl(07.03.2006 15:46, )
- задача профессионала зарабатывать себе на жизнь, а не мусолить строки в коде доводя его до идеала ((с) с некоторыми поправками:) Romario(125 знак., 07.03.2006 15:35, )
- НЕ.. Так нельзя... Так в MS работают. Нельзя написать хреново кусок что б "потом когда-нибудь" его привести в порядок. MDenis(393 знак., 07.03.2006 15:15, )
- Ответ: Romario(133 знак., 07.03.2006 15:07, )
- А вот это, IMHO, рецидивы ассемблера. ReAl(154 знак., 07.03.2006 14:55, )
- Где-то так. ReAl(1532 знак., 07.03.2006 14:52, )
- Короче я понял. Если без goto или brake совсем уж невмоготу, то можно. А если просто от лени - тогда иди на Васике пиши... MDenis(56 знак., 07.03.2006 14:19, )
- Все хорошо в меру. И дурной тон получается, когда что-то не в меру: Bill(77 знак., 06.03.2006 23:50, )
- перечитал исходный пост bialix(286 знак., 08.03.2006 01:53, )