powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
20 сообщений из 20, страница 1 из 1
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637365
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Навожу пример обычного цикла 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.
Private Sub Command1_Click()
  Static f1 As Long, f2 As Long, f3 As Long, meh As Long

  If f3 < 3 Then GoTo meh3
  If f2 < 3 Then f3 = 0: GoTo meh2
  If f1 < 3 Then f2 = 0: f3 = 0: GoTo meh1
  MsgBox "end": f1 = 0: f2 = 0: f3 = 0

meh1: f1 = f1 + 1 
meh2: f2 = f2 + 1
meh3: f3 = f3 + 1
    Label1 = f1
    Label2 = f2
    Label3 = f3
End Sub





с уважением Андрей
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637480
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей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++".
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637484
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если ты хочешь понять смысл запрета использования меток, то вот так например выглядит программа на Basic:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10 input $a
20 if $a="yes" then goto 60
30 if $a="no" then goto 80
40 print "huh?"
50 goto 90
60 print "You agreed!"
70 goto 90
80 print "Really?"
90 print "Ok, bye"
100 end

Если сможешь перевести этот код на Visual Basic - поймешь за что в древности не любили goto.
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637515
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159в крутых языках их просто нет
Этого аргумента недостаточно? на счет "крутости" можно спорить, но goto просто нет и надо учиться жить без него. Кстати его отсутствие жизнь не усложняет.
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637546
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159В коде ниже я сделал пример пошагового выполнения цикла.
В коде ниже Вы дали пример довольно классического кода. Разница с "древним" кодом в основном в том, что тогда ещё и подпрограммы мало использовались, и типичный фрагмент занимал сотни строк с соответствующим количеством меток, переходов и прочих запутываний.

Но почему то нам еще в лицее уже говорили что метки лучше никогда не использовать,
Пенделя учителю в лицее.

Некто Дейкстра сотоварищи однажды обнаружили, что существует яркая корреляция между количеством goto в программе и сложностью её отладки и сопровождения. Иначе говоря, goto чаще всего используется в "плохих" конструкциях и провоцирует их использование. Для борьбы с этим они предложили некие паттерны "хороших" конструкций, которые в принципе позволяли писать вообще без явного goto. Ну а дальше, как водится, появились любители расшибать лоб.

Тем не менее, по состоянию на сегодняшний день, все "основные" сценарии использования goto уже прикрыты более удобными конструкциями - break, continue, catch итп. Поэтому вариант, в котором целесообразно использование goto, не связанное с очень вымученной оптимизацией кода, назвать очень и очень непросто.
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637558
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хотел акцент сделать именно на метке . Метку ставить в C, C++ ,C+, C#, Java можно или нет такого понятия как метка ? Если нет, то как-то все через клизму, так как на машинном коде все работает именно обычными MOV,GOTO. А вариант нужен именно через таймер (не sleep) и именно чтоб я имел возможность реализовать себе подобный пример. Цикл в цикле нужен. (одним не обойдусь). Только я цикл сделал пошаговым. И с установленным таймером должны эти шаги работать.
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637559
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если кто код не проверял это обычный
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
for f1=1 to 3
for f2=1 to 3
for f3=1 to 3
 print f1, f2, f3
next
next
next


просто мне нужно чтоб код не выполнился сразу, а с интервалом в 2 секунды и sleep здесь не канает, так как асинхронное общение (передача данных) + анимация пользователю + некоторые фичи (в фоновом режиме тоже через таймера)

Простая задачка. метки и переход на метки в C++ есть ? как сделать тогда мой цикл пошагового выполнения на C++ ?
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637564
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159 Метку ставить в C, C++ ,C+, C#, Java можно
метку ставить можно.В списке все, кроме Java, поддерживают goto

Андрей159 Цикл в цикле нужен. (одним не обойдусь).
ничего не понял, причём здесь goto
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637566
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учись задавать вопросы. Метки отдельно, задержки отдельно. Это две совершенно разных темы.

По меткам:
Андрей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 штук", "поиск закончен" и главный либо запускает перерисовку, либо игнорирует эти сообщения.
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637567
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159просто мне нужно чтоб код не выполнился сразу, а с интервалом в 2 секунды
итерация внутреннего цикла с шагом 2 сек?
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637605
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159просто мне нужно чтоб код не выполнился сразу, а с интервалом в 2 секунды и sleep здесь не канает, так как асинхронное общение (передача данных) + анимация пользователю + некоторые фичи (в фоновом режиме тоже через таймера)

Запусти в отдельном потоке, делов-то.
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637606
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Получил ответ (в C++ есть метки). Значит плохо искал.
О проекте:
В
YouTube Video
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637609
Фотография Zukora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последние 8 лет на Делфи и 2 года на Java не помню ни одной задачи, которую нельзя было решить без меток. Было бы даже интересно посмотреть на такую задачу. Я даже синтаксис их толком не помню. Метки порождают, как правило, спагетти-код. У Вас всего 11 строк, а уже надо скакать взглядом по всему модулю. А а если их будет 100, 1000? Да Вас проклянут, те кто будет это читать.
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637612
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159Второй проект занимается поиском музыки, сортировкой и удалением дубликатов (анализирует по спектру). Задержка без sleep нужна была чтоб находить новые контакты методом парсинга из сайта вконтакте. Во время задержки качается музыка из этих контактов, анализируется, ищется дубликаты (если есть, то дубликат удаляется, на его месте только ярлык на оригинал). На сайте банят если постить без задержки.

сделай всё в отдельных потоках
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637629
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как отдельные потоки. у меня и так все отдельные потоки: анализ, скнирование, слежка за новым содержанием в папке, четыре анимации одновременно. а вот парсинг тоже отдельный поток, но как можно его на еще отдельные потоки сделать если нужна только задерка. ищем парней 16 лет из указаного города. дает результат 40 человек, пауза (и все работает при этом и не останавливается), снова 20 человек..... конец списка, ищем девушек 16 лет.... дальше 17 лет и так пока не получу всех людей из указаного города, дальше город другой. потом сканирую содержимое музыки (кто что слушает), загружаю. короче у меня свое мнение. пока что делаю все правильно. все работает. без меток (а их мне нужно до 5ти только) код будет по дибильному читаться точно
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637632
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159 Я хотел акцент сделать именно на метке . Метку ставить в C, C++ ,C+, C#, Java можно или нет такого понятия как метка ? Про остальное уже сказали, а в Java есть метки, но нет goto.
Метки можно использовать для "досрочного выхода из цикла" (break) и "досрочного завершения итерации" (continue).Если нет, то как-то все через клизму, так как на машинном коде все работает именно обычными MOV,GOTO.Даже в машинных кодах (x86) есть и поддержка циклов и поддержка процедур (call) и поддержка рекурсивных вызовов (enter/leave).
Только вопрос: если вам так удобно думать на ассемблере - зачем вы используете языки высокого уровня?
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637652
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
боюсь что недостаточно знаний по ассемблер (только 20% практики и теория), не наработано букет своих функций. да и не знаю что будет если новый проц выпустят и вообще на какие процах работать будет. и так спалился. был противник чужого кода. думал без JQuery работать (когда сайт делал с нуля), обсуждал, спорил... Все было отлично, пока не повалились просьбы отладить сайт, так как не на каждом бравзере работает (к примеру на новом бравзере от Яндекс не работает JS). Как-то так. Ок. Закрываем темку. Всем спасибо. Лечу сегодня на отдых в Side. Всем хороших выходных и безотказного кода)) После приезда есть еще вопросы, много тестил, есть фото, видео по материалам експериментов, темка на вынос мозгов, связано с распознаванием звука (речь, ноты), но это на потом. Удачи.
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637663
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TАндрей159в крутых языках их просто нет
Этого аргумента недостаточно? на счет "крутости" можно спорить, но goto просто нет и надо учиться жить без него. Кстати его отсутствие жизнь не усложняет.


Надо сказать, что в самых-то крутых языках есть метки. Либо для goto, либо метки блоков для указания в continue и break.
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637911
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей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.
Private Sub Command1_Click()
  Static f1 As Long, f2 As Long, f3 As Long, meh As Long

  If f3 >= 3 Then 
    f3 = 0
    If f2 >= 3 Then 
      f2 = 0
      If f1 >= 3 Then 
          f1 = 0
          MsgBox "end"
      End If
      f1 = f1 + 1 
    End If
    f2 = f2 + 1
  End If
  f3 = f3 + 1

  Label1 = f1
  Label2 = f2
  Label3 = f3
End Sub


просто заменил GoTo на End If и убрал лишние обнуления. по моему так читабельнее.

Данный пример не показательный, по мере накопления опыта и более смелого использования GoTo твой код превратится в такое месиво что сам перестанешь понимать как он работает. Учись четко отделять решаемые задачи, а то даже в таком простом примере пытаешься обосновать конструкцию аргументами, которые к ней никакого отношения не имеют.
...
Рейтинг: 0 / 0
Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
    #38637974
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159 все работает. без меток (а их мне нужно до 5ти только) код будет по дибильному читаться точно
К сожалению, этот конкретный код читается по-дебильному вне зависимости от наличия или отсутствия меток.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Переведите пожалуйста код чтобы я понял смысл запрета использ. меток и фурчания на них
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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