Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
За GOTO в цикле на C надо убивать лопатой с деревянной ручкой!
Отправлено
amateur
26 мая 2008 г. 23:14
В ответ на:
Коллеги, как строку хранящуюся во внутренней флэш через UART выдать
отправлено smartleds 26 мая 2008 г. 23:03
Составить ответ
|
Вернуться на конференцию
Ответы
В Java с помощью break можно выйти из любого уровня вложенности циклов. В Си это невозможно и иногда goto - лучший выход.
—
AlexD
(27.05.2008 08:40:19
192.168.2.82,193.200.21.5
,
пустое
)
Это показатель крутости джавы? Насчет лучшего выхода - с точки зрения чего он лучший?
—
amateur
(27.05.2008 15:28:37
192.168.100.151,80.64.99.60
,
пустое
)
1) Это показатель того, что С/С++ не обладают полнотой синтаксических конструкций, позволяющих безболезненно обойтись без goto 2) С точки зрения читаемости ессно.
—
AlexD
(28.05.2008 11:19:40
192.168.2.82,193.200.21.5
, 119 байт)
Любых фанатиков надо сжигать на костре. Если удобно использовать какой-либо оператор, то его надо использовать, а не городить 4-х этажные непонятные глазу конструкцию, чтобы обойти высказанную кем-то глупость.
—
Elektronik
(27.05.2008 08:31:37
93.81.124.244
,
пустое
)
Потом как-нить через месяц будешь редактировать довольно простую конструкцию, и сдвинешь метку, на которую твой любимый GOTO указывает. Удивишься результату, спросишь себя о разном, пересмотришь понятие "удобно". (-)
—
Анатоль
(27.05.2008 12:26:15
77.87.32.224
,
пустое
)
бред какой несёте...
—
basilmak
(27.05.2008 12:51:0
82.142.173.231
,
пустое
)
Это диагноз? Спасибо. Есть метка, сколько GOTO на нее ссылается? (+)
—
Анатоль
(27.05.2008 13:12:8
77.87.32.224
, 785 байт)
"Кто за этим следит"?? Я лично беру и слежу за тем что пишу. Или компилятор должен следить? Подождем может туесос допишет суперкомпилятор, тогда все изменится:)
—
1111111
(27.05.2008 16:57:36
92.112.9.53
,
пустое
)
да, похоже Вы уже думаете на Си... ))
—
basilmak
(27.05.2008 13:17:37
82.142.173.231
,
пустое
)
Ту ты хотябы просто думай, это уже будет хорошо (-)
—
Анатоль
(27.05.2008 13:30:8
77.87.32.224
,
пустое
)
я подумаю над этим предложением))
—
basilmak
(27.05.2008 13:34:54
82.142.173.231
,
пустое
)
:-) (-)
—
Анатоль
(27.05.2008 13:49:26
77.87.32.224
,
пустое
)
можно подумать что через это же время вы что-то без проблем сможете поменять в случае 4-х этажной конструкции из while и do, да еще вложенных
—
Elektronik
(27.05.2008 12:49:49
194.85.99.225
,
пустое
)
Ну вот как объяснить очевидную вещь. GOTO это жесткое вмешательство в код. И вот если при редакции других конструкций понятно что меняется, зачем (конструкция обозрима и вообще имеет место быть) и компилятор хоть как-то следит за их целостностью, то при GOTO этого нет (конструкции нет есть метка и жесткий переход на нее). Этим оператором вы можете заставить компилятор сгенерить код, которого он бы вообще не делал. (-)
—
Анатоль
(27.05.2008 13:02:25
77.87.32.224
,
пустое
)
глупость говорите. компилятор преобразует все эти конструкции в набор условных и безусловных переходов и насрать ему for там, while там или goto
—
Elektronik
(27.05.2008 13:14:40
194.85.99.225
,
пустое
)
Отвечу в том же духе: Глупость говорите, любезнейший, компилятор преобразует это в байты! И ему пофиг, условные это или безусловные переходы. (-)
—
Анатоль
(27.05.2008 13:28:21
77.87.32.224
,
пустое
)
+1000
—
Имя
(27.05.2008 10:19:49
217.118.66.37
,
пустое
,
ссылка
)
Всегда хотелось узнать как досрочно выйти из двух вложенных while без goto
—
1111111
(27.05.2008 00:53:36
92.112.9.53
,
пустое
)
Если C++ то откуда угодно можно выйти, применяя try - throw - catch.
—
Сидоргек
(27.05.2008 10:24:8
89.209.87.196
,
пустое
)
Для нашего случая это костыли, предназначенные для совсем других целей. Религия "никаких goto" изначально ущербна, ибо думать надо над реализацией алгоритма, а не над тем "как бы мне выкрутиться без goto". Пустая трата времени.
—
1111111
(27.05.2008 12:41:10
92.112.9.53
,
пустое
)
Тебе не надо думать над реализацией алгоритма, думай над его формализацией, напиши на Си, как нужно чтоб оно работало, остальное сделает компилятор. Не делай чужую работу, делай свою. (-)
—
Анатоль
(27.05.2008 12:46:13
77.87.32.224
,
пустое
)
Очень просто - пиши так, чтоб этот изврат не понадобился - глядишь сама задача понятней станет. Как это по-русски: мастер просто не попадает в ловушки, из которых чемпион выходит всего с двумя переломами. (-)
—
Анатоль
(27.05.2008 02:08:49
77.87.32.224
,
пустое
)
То есть, всячески избегать ракообразных конструкций и пр., но ни в коем случае GOTO не применять? :-)) "...Вы можете заказать любой цвет при условии, что этот цвет чёрный..."
—
=L.A.=
(27.05.2008 09:01:50
79.139.244.220
,
пустое
)
Да.И ничего сложного в этом нет. (-)
—
Анатоль
(27.05.2008 12:20:41
77.87.32.224
,
пустое
)
Допустим. Как к примеру "упонятнить" поиск значения в двухмерном массиве?
—
1111111
(27.05.2008 02:50:36
92.112.9.53
,
пустое
)
:-) Т.е. задача вывалиться из цикла по двум условиям? :-) Или вывалиться из двух циклов по одному условию? Всего-то? :-) Кстати, есть еще такие волшебные слова как "brake" и "continue". Правда хоть они и не ставят копилятор раком, но наглядности не добавляют."Один вход -> один выход". Порограмы, писаные по этому принципу легко отлаживать и модифицировать через год. (-)
—
Анатоль
(27.05.2008 03:03:58
77.87.32.224
,
пустое
)
Волшебное слово
"brake"
относится исключительно к твоей туесосной пиздобратии :))
—
MBedder
(27.05.2008 11:03:28
80.92.96.19
,
пустое
)
2 часа ночи, 0.4 коньяка в пузе - ошибиться легко. Но доктор Туесос, на страже, вот за это спасибо, Туесос. Уважил.(-)
—
Анатоль
(27.05.2008 12:33:14
77.87.32.224
,
пустое
)
Из двух циклов по одному условию. Красиво, без извратов и без goto. Как?
—
1111111
(27.05.2008 03:34:32
92.112.9.53
,
пустое
)
return;
—
МихаилЕ
(27.05.2008 07:36:41
195.91.181.193
,
пустое
)
return это если в функции
—
Elektronik
(27.05.2008 08:32:43
93.81.124.244
,
пустое
)
точно, да и ретурны плодить в функции тоже не кошерно. А вот гото налепить ...{+}
—
Fanta
(27.05.2008 10:50:3
213.168.26.170
, 190 байт)
а в main - применить RESET :-)) И это будет не извращение, а образец изящества :))))
—
=L.A.=
(27.05.2008 09:03:52
79.139.244.220
,
пустое
)
;)ПсевдоGOTO (лёгкий изврат)
—
Vit
(27.05.2008 01:46:52
77.123.35.27
, 687 байт)
Условие в вайлах у вас для выхода по continue написаны и тяжеловато выглядя...{+}
—
VasilyS
(27.05.2008 09:44:34
80.92.96.25
, 262 байт)
Это зависит от задачи. Если нужно выйти только из самого глубокого цикла, а остальные такого "сквозного" выхода не требуют, то действительно нафиг лишние проверки
—
Vit
(27.05.2008 09:58:18
77.123.35.27
, 122 байт)
Ближе к тяжелому изврату:) один из показательных случаев, когда лучше не выпендриваться и поставить один goto, который сделает в точности то, что нужно
—
1111111
(27.05.2008 01:57:36
92.112.9.53
,
пустое
)
Тяжелый это когда по GOTO попадают в тело цикла. (видел. оценил. запомнил. не забуду)
—
Vit
(27.05.2008 02:05:47
77.123.35.27
,
пустое
)
:-))))))))))))))))))))))) (-)
—
Анатоль
(27.05.2008 13:14:39
77.87.32.224
,
пустое
)
Ну если чувак втыкает метки в тело цикла и переходит на них ХЗ откуда по GOTO, то это не проблема команды, а проблема того чудака.:))
—
=L.A.=
(27.05.2008 09:12:59
79.139.244.220
,
пустое
)
Для некоторых тяжелый изврат это норма;) Фразочка: Для некрофила любовь до гроба - всего лишь легкий флирт.
—
Vit
(27.05.2008 09:40:38
77.123.35.27
,
пустое
)
Никакой из принципов нельзя возводить в абсолют. "Серебряной пули" (+)
—
Имя
(26.05.2008 23:50:27
217.118.66.33
, 94 байт)
отголоски асма :)
—
Aleksey75
(26.05.2008 23:18:56
92.49.144.173
,
пустое
)
Да... Иной раз лучше гото ничего не придумать...
—
Samsony
(27.05.2008 00:00:0
89.254.233.59
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 93:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru