|
|
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Навожу пример обычного цикла FOR f1=1 to 3. В цикле вложен еще один цикл (f2) и еще один (f3). В коде ниже я сделал пример пошагового выполнения цикла. Такой метод необходим при использовании желаемой задержки, а также если виртуальное или физическое устройство дает ответ с опозданием, и нужно подстроиться асинхронно (немножко другой пример), а также еще используется в случае парсинга сайта (с нужной задержкой дабы не попасть в чёрный список) или сканирования папок (если есть такова задача делать несколько операций, чтобы визуально ничего не подтормаживало). Так вот написание { } в крутых языках конечно же удобней чем end if. Но почему то нам еще в лицее уже говорили что метки лучше никогда не использовать, что в крутых языках их просто нет или не используют. Sleep использовать вообще смысла нет. Sleep заморозит программу полностью. Зачем, если в то время можно анализировать и анимировать. Как данный пример будет выглядеть на C++ ? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. с уважением Андрей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2014, 10:42 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Андрей159Навожу пример обычного цикла FOR f1=1 to 3. В цикле вложен еще один цикл (f2) и еще один (f3). В коде ниже я сделал пример пошагового выполнения цикла. Такой метод необходим при использовании желаемой задержки, а также если виртуальное или физическое устройство дает ответ с опозданием, и нужно подстроиться асинхронно (немножко другой пример), а также еще используется в случае парсинга сайта (с нужной задержкой дабы не попасть в чёрный список) или сканирования папок (если есть такова задача делать несколько операций, чтобы визуально ничего не подтормаживало).Это очень неправильно. Надо либо таймер заводить, либо просто sleep() использовать. Таймер - даст возможность делать что-то еще пока ждешь, а sleep просто заморозит выполнение (и отдаст ресурсы машины другим процессам). Набор циклов для организации задержки, очень глупо: все ресурсы компьютера будут заняты данным циклом, ничего не давая другим процессам и при этом никакой полезной работы выполняться не будет. Андрей159 Так вот написание { } в крутых языках конечно же удобней чем end if. Но почему то нам еще в лицее уже говорили что метки лучше никогда не использовать, что в крутых языках их просто нет или не используют.Нет, фигурные скобки не удобнее чем end if. Их быстрее писать, но впоследствии ты будешь гадать что закрывает вот эта конкретная скобка - это цикл или условие? А тот кто вас в лицее учил не использовать метки - идиот. Метки и goto считались плохими в 70-ых годах прошлого века, когда самыми популярными языками были Basic и Fortran. В этих языках просто не было никаких end if и вся логика была организована на goto. Это было очень сложно отлаживать и все последующие языки начали придумывать со структурным синтаксисом (ввели всяческие "end if" и "}" ) . Вот как раз в те времена когда вводили языки с end if и } и появились несколько статей о "плохом goto" чтобы отвадить людей писать лапше-образные программы. Ну а некоторые старперы и примазывающиеся к ним до сих пор борются с лапше-образным кодом которому подвержены только языки без структурного синтаксиса. Андрей159 Sleep использовать вообще смысла нет. Sleep заморозит программу полностью. Зачем, если в то время можно анализировать и анимировать.Если хочешь делать анимацию - заводи таймер. Если анимация не нужна - делай sleep. Далеко не все программы вообще имеют красивенькие окошечки в которых можно что-то рисовать. Но если в такой программе нужно сделать паузу, то sleep - очень полезен. Он заморозит программу и отдаст не используемые ресурсы другим программам. Андрей159 Как данный пример будет выглядеть на C++ ?Никак. Современные С++ компиляторы достаточно умные чтобы соптимизировать весь набор этих циклов в один вызов MessageBox. Если тебе нужна задержка на С++: либо таймер и что-то делаешь, либо просто sleep если делать ничего не нужно. А еще можно делать всю работу в фоновом потоке а в главном получать от него события "сделал такую-то часть, стартовать следующую?". А вообще тема к С++ отношения не имеет. Если ты решил кроме Visual Basic выучить еще какой-нибудь язык, то лучше возьми учебник по этому языку и забудь все что ты знаешь о Visual Basic. Сравнивать как сделано в одном языке и как сделано в другом начнешь только когда у тебя будет как минимум с полдюжины языков в активе, до тех пор лучше считай что каждый ЯП это уникальная вещь не имеющая ничего общего с другими ЯП. Модератор: Тема перенесена из форума "C++". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2014, 19:38 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
А если ты хочешь понять смысл запрета использования меток, то вот так например выглядит программа на Basic: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Если сможешь перевести этот код на Visual Basic - поймешь за что в древности не любили goto. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2014, 19:44 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Андрей159в крутых языках их просто нет Этого аргумента недостаточно? на счет "крутости" можно спорить, но goto просто нет и надо учиться жить без него. Кстати его отсутствие жизнь не усложняет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2014, 21:23 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Андрей159В коде ниже я сделал пример пошагового выполнения цикла. В коде ниже Вы дали пример довольно классического кода. Разница с "древним" кодом в основном в том, что тогда ещё и подпрограммы мало использовались, и типичный фрагмент занимал сотни строк с соответствующим количеством меток, переходов и прочих запутываний. Но почему то нам еще в лицее уже говорили что метки лучше никогда не использовать, Пенделя учителю в лицее. Некто Дейкстра сотоварищи однажды обнаружили, что существует яркая корреляция между количеством goto в программе и сложностью её отладки и сопровождения. Иначе говоря, goto чаще всего используется в "плохих" конструкциях и провоцирует их использование. Для борьбы с этим они предложили некие паттерны "хороших" конструкций, которые в принципе позволяли писать вообще без явного goto. Ну а дальше, как водится, появились любители расшибать лоб. Тем не менее, по состоянию на сегодняшний день, все "основные" сценарии использования goto уже прикрыты более удобными конструкциями - break, continue, catch итп. Поэтому вариант, в котором целесообразно использование goto, не связанное с очень вымученной оптимизацией кода, назвать очень и очень непросто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2014, 23:10 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Я хотел акцент сделать именно на метке . Метку ставить в C, C++ ,C+, C#, Java можно или нет такого понятия как метка ? Если нет, то как-то все через клизму, так как на машинном коде все работает именно обычными MOV,GOTO. А вариант нужен именно через таймер (не sleep) и именно чтоб я имел возможность реализовать себе подобный пример. Цикл в цикле нужен. (одним не обойдусь). Только я цикл сделал пошаговым. И с установленным таймером должны эти шаги работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2014, 23:44 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
если кто код не проверял это обычный Код: vbnet 1. 2. 3. 4. 5. 6. 7. просто мне нужно чтоб код не выполнился сразу, а с интервалом в 2 секунды и sleep здесь не канает, так как асинхронное общение (передача данных) + анимация пользователю + некоторые фичи (в фоновом режиме тоже через таймера) Простая задачка. метки и переход на метки в C++ есть ? как сделать тогда мой цикл пошагового выполнения на C++ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2014, 23:53 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Андрей159 Метку ставить в C, C++ ,C+, C#, Java можно метку ставить можно.В списке все, кроме Java, поддерживают goto Андрей159 Цикл в цикле нужен. (одним не обойдусь). ничего не понял, причём здесь goto ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2014, 00:07 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Учись задавать вопросы. Метки отдельно, задержки отдельно. Это две совершенно разных темы. По меткам: Андрей159 Я хотел акцент сделать именно на метке . Метку ставить в C, C++ ,C+, C#, Java можно или нет такого понятия как метка ? В С, С++ и C# - метки и goto на метку есть. В Java - нету. Андрей159 Если нет, то как-то все через клизму, так как на машинном коде все работает именно обычными MOV,GOTO.Нет, в машинном коде таких команд. Во многих ассемблерах есть MOV, но занимается эта команда перемещением данных из одного места в другое. GOTO вообще нету. В ассемблерах традиционно используется мнемоника J* и B* (jump и brunch). Первое в CISC процессорах, второе в RISC. По задержкам: Андрей159 А вариант нужен именно через таймер (не sleep) и именно чтоб я имел возможность реализовать себе подобный пример. Цикл в цикле нужен. (одним не обойдусь). Только я цикл сделал пошаговым. И с установленным таймером должны эти шаги работать.Что именно тебе нужно? И не говори что нужна абстрактная задержка, потому что такое делается как раз через sleep() с его аналогами. У тех задач которые ты описал в первом топике есть решения: - Для физических устройств делается реакция на события. Когда устройство готово оно посылает сигнал, ОС его получает и отдает твоей программе. Как именно это происходит зависит от устройства и от ОС. - Для "парсинга сайта" задержка вообще не нужна. А вот чтобы повторять запросы к сайту - sleep() подходит идеально. - Сканирование папок делается через фоновые потоки. Делается вторичный поток, который занимается диском и наполняет найденными данными какой-то массив. А главный поток рисует то что в этом массиве находится. При этом вторичный поток посылает главному сообщения типа "поиск начат", "найдено X штук", "поиск закончен" и главный либо запускает перерисовку, либо игнорирует эти сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2014, 00:08 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Андрей159просто мне нужно чтоб код не выполнился сразу, а с интервалом в 2 секунды итерация внутреннего цикла с шагом 2 сек? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2014, 00:09 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Андрей159просто мне нужно чтоб код не выполнился сразу, а с интервалом в 2 секунды и sleep здесь не канает, так как асинхронное общение (передача данных) + анимация пользователю + некоторые фичи (в фоновом режиме тоже через таймера) Запусти в отдельном потоке, делов-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2014, 09:35 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Спасибо. Получил ответ (в C++ есть метки). Значит плохо искал. О проекте: В ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2014, 09:42 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Последние 8 лет на Делфи и 2 года на Java не помню ни одной задачи, которую нельзя было решить без меток. Было бы даже интересно посмотреть на такую задачу. Я даже синтаксис их толком не помню. Метки порождают, как правило, спагетти-код. У Вас всего 11 строк, а уже надо скакать взглядом по всему модулю. А а если их будет 100, 1000? Да Вас проклянут, те кто будет это читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2014, 10:16 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Андрей159Второй проект занимается поиском музыки, сортировкой и удалением дубликатов (анализирует по спектру). Задержка без sleep нужна была чтоб находить новые контакты методом парсинга из сайта вконтакте. Во время задержки качается музыка из этих контактов, анализируется, ищется дубликаты (если есть, то дубликат удаляется, на его месте только ярлык на оригинал). На сайте банят если постить без задержки. сделай всё в отдельных потоках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2014, 10:31 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
как отдельные потоки. у меня и так все отдельные потоки: анализ, скнирование, слежка за новым содержанием в папке, четыре анимации одновременно. а вот парсинг тоже отдельный поток, но как можно его на еще отдельные потоки сделать если нужна только задерка. ищем парней 16 лет из указаного города. дает результат 40 человек, пауза (и все работает при этом и не останавливается), снова 20 человек..... конец списка, ищем девушек 16 лет.... дальше 17 лет и так пока не получу всех людей из указаного города, дальше город другой. потом сканирую содержимое музыки (кто что слушает), загружаю. короче у меня свое мнение. пока что делаю все правильно. все работает. без меток (а их мне нужно до 5ти только) код будет по дибильному читаться точно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2014, 11:29 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Андрей159 Я хотел акцент сделать именно на метке . Метку ставить в C, C++ ,C+, C#, Java можно или нет такого понятия как метка ? Про остальное уже сказали, а в Java есть метки, но нет goto. Метки можно использовать для "досрочного выхода из цикла" (break) и "досрочного завершения итерации" (continue).Если нет, то как-то все через клизму, так как на машинном коде все работает именно обычными MOV,GOTO.Даже в машинных кодах (x86) есть и поддержка циклов и поддержка процедур (call) и поддержка рекурсивных вызовов (enter/leave). Только вопрос: если вам так удобно думать на ассемблере - зачем вы используете языки высокого уровня? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2014, 11:46 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
боюсь что недостаточно знаний по ассемблер (только 20% практики и теория), не наработано букет своих функций. да и не знаю что будет если новый проц выпустят и вообще на какие процах работать будет. и так спалился. был противник чужого кода. думал без JQuery работать (когда сайт делал с нуля), обсуждал, спорил... Все было отлично, пока не повалились просьбы отладить сайт, так как не на каждом бравзере работает (к примеру на новом бравзере от Яндекс не работает JS). Как-то так. Ок. Закрываем темку. Всем спасибо. Лечу сегодня на отдых в Side. Всем хороших выходных и безотказного кода)) После приезда есть еще вопросы, много тестил, есть фото, видео по материалам експериментов, темка на вынос мозгов, связано с распознаванием звука (речь, ноты), но это на потом. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2014, 12:47 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Dima TАндрей159в крутых языках их просто нет Этого аргумента недостаточно? на счет "крутости" можно спорить, но goto просто нет и надо учиться жить без него. Кстати его отсутствие жизнь не усложняет. Надо сказать, что в самых-то крутых языках есть метки. Либо для goto, либо метки блоков для указания в continue и break. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2014, 13:10 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Андрей159Так вот написание { } в крутых языках конечно же удобней чем end if Какая разница { } или if ... end if ? Просто разный синтаксис для одного и того же. Андрей159без меток (а их мне нужно до 5ти только) код будет по дибильному читаться точно Вот твой код с end if Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. просто заменил GoTo на End If и убрал лишние обнуления. по моему так читабельнее. Данный пример не показательный, по мере накопления опыта и более смелого использования GoTo твой код превратится в такое месиво что сам перестанешь понимать как он работает. Учись четко отделять решаемые задачи, а то даже в таком простом примере пытаешься обосновать конструкцию аргументами, которые к ней никакого отношения не имеют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 11:09 |
|
||
|
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
|
|||
|---|---|---|---|
|
#18+
Андрей159 все работает. без меток (а их мне нужно до 5ти только) код будет по дибильному читаться точно К сожалению, этот конкретный код читается по-дебильному вне зависимости от наличия или отсутствия меток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 14:39 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=45&tid=1341372]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 410ms |

| 0 / 0 |
