-
- перечитал исходный пост bialix(286 знак., 08.03.2006 01:53,
)
- Не стоит, запутаться можно, но сложно. Но классику надо читать внимательно - _vvv(443 знак., 08.03.2006 13:01,
)
- Да, так точно НЕЛЬЗЯ. Но дальше пошло обсуждение goto "вообще" :-) - ReAl(08.03.2006 12:21,
)
- Не стоит, запутаться можно, но сложно. Но классику надо читать внимательно - _vvv(443 знак., 08.03.2006 13:01,
- Ответ: Основоположники Си не запрещают использовать 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,
)
- Пардон погорячился ! Действительно не проще ! - miv(07.03.2006 13:32,
- ..не проще: 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,
)
- говорят 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,
)
- имел в виду 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,
)
- и в классическом си можно извратиться. 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,
)
- ну тогда полностью привожу 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,
)
- внешние скобки и приведение к 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,
)
- Это он ОЧЕНЬ зря. 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,
)
- Пардон! Ошибочка вышла - для исходного подсчёты были не для меги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,
)
- я смотрел 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,
)
- я имел ввиду что "логически" отрабатывается (строится таблица переходов) - 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,
- Да, "никогда не использовать" - это я понимаю и согласен, но забывать не стоит - иначе скоро выйдет "фортран-программу можно написать на любом языке" - ReAl(08.03.2006 21:09,
- хм...хитра конструкция. я такую первый раз вижу:) честно. - 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,
)
- да, пардон. под 32 битником я имел ввиду более ''правильные'' компилеры и более мощную архитектуру проца. и этот код для них ничем не отличается с goto. - Romario(08.03.2006 13:10,
- Дело не в разрядности... 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,
)
- Не, ниагарсикй водопад - это из анекдота про ушастых туземцев и их вождя с шишкой на лбу. - 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,
)
- нет конечно, макс 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: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,
)
- выпей йоду - bialix(08.03.2006 15:03,
- Жжош, аццкий сотона! :)) - AVR(08.03.2006 14:16,
- Ответ: bialix(77 знак., 07.03.2006 17:34,
- На мой взгляд - сами по себе те слова очень правильные, но как оправдание "по быстрячку goto напихать" - нет. - ReAl(07.03.2006 18:09,
- Тут ещё бабуля на двое сказала ! 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,