Автокликер Clickermann :: Форум

Основной раздел => Предложения => Topic started by: Сергей on November 04, 2012, 12:14:46 PM

Title: Конструкции break, continue
Post by: Сергей on November 04, 2012, 12:14:46 PM
Собственно сабж.
break - выход из цикла
continue - переход к следующей итерации без завершения текущей

Намного удобней использования переменных-флагов и лишних условий.
Title: Re: Конструкции break, continue
Post by: СлавьЯнИнъ on November 11, 2012, 05:22:38 PM
Поддерживаю!
Title: Re: Конструкции break, continue
Post by: MaxP on September 04, 2014, 04:14:03 PM
+1
Title: Re: Конструкции break, continue
Post by: Луций on November 18, 2014, 10:57:48 PM
и я поддерживаю, пусть будет больше питона в кликермане
Title: Re: Конструкции break, continue
Post by: Kedrick on November 18, 2014, 11:43:10 PM
Присоединяюсь к просьбе.
Еще можно было бы добавить
exit - выход из подпрограммы (не путать с break) иногда удобно использовать как одно из условий цикла, переходить не просто в конец цикла, а сразу к следующей подпрограмме (мне их удобнее называть процедурами или функциями, но ладно, привыкну).

И команда pause - пауза скрипта, удобно для отладки
Title: Re: Конструкции break, continue
Post by: aden on November 20, 2014, 02:41:46 PM
И команда pause - пауза скрипта, удобно для отладки
пауза есть, если нажать на play после запуска скрипта
Title: Re: Конструкции break, continue
Post by: Kedrick on November 20, 2014, 09:20:16 PM
И команда pause - пауза скрипта, удобно для отладки
пауза есть, если нажать на play после запуска скрипта

В процессе отладки скрипта пауза должна быть нажатой строго после определенного действия, чтобы не гнать весь скрипт а проверить работу одного цикла или подпрограммы. Как правило время для ручного нажатия паузы исчисляется сотней миллисекунд. Оно вообще надо если можно просто вбить специальную команду? Сейчас можно и wait(999) написать, но это не интересно :)
Title: Re: Конструкции break, continue
Post by: Vint on November 21, 2014, 09:42:26 AM
Для отладки много чего не хватает. И пошагового выполнения и изменение скорости (замедление). Вывод значения выбранных переменных в реальном времени. Много можно придумать.
А пока пауза решается просто.
Вот прям с лёту пару вариантов
1
Code: (clickermann) [Select]
SUB(pause)
   WHILE(ISKEYDOWN(#space)=0)
      WAITMS (100)
   END_CYC
   WHILE(ISKEYDOWN(#space)=1)
      WAITMS (100)
   END_CYC
END_SUB

pause()  // где нужна пауза ставим эту строку. Пробел - продолжить

2 с потоками
Code: (clickermann) [Select]
THREAD(pause, 1)
   IF(ISKEYDOWN(#space)=1)
      SETTHREAD (основной_скрипт, 1)
      WHILE(ISKEYDOWN(#space)=0)
         WAITMS (100)
      END_CYC
   END_IF
   WAITMS (100)
END_THREAD

THREAD(основной_скрипт, 1)
   //  основной скрипт
   SETTHREAD (основной_скрипт, 0)   // где нужна пауза ставим эту строку. Пробел - продолжить
   //  основной скрипт
END_THREAD
Title: Re: Конструкции break, continue
Post by: Vint on November 21, 2014, 11:20:54 AM
Та тоже так делаю, но согласись, было бы удобно пошаговое исполнение и замедленное с выводом выбранных переменных, и тогда засорять скрипт отладочными логами будет не нужно почти.
Помню на спектруме в одном из вариантов был вшитый отладчик с режимом трассировки. Как же удобно было. Справа всегда выводилось состояние регистров и флагов. Можно было пошагово выполнять с показом строки. Можно замедленно или установить контрольную точку.
Короче отладчик бы не помешал. Только свой конечно, с особенностями, выводом return1/return2 показом области поиска и прочими вкусностями.
Во раскатал губу.
Title: Re: Конструкции break, continue
Post by: Vint on November 21, 2014, 11:47:49 AM
BREAK("message") - прерывает выполнение сценария диалоговым окном

DIALOGBOX("message", buttons, icon) - числовая функция; выводит диалоговое окно с кнопками

INPUTBOX("message", "default", [delay]) - строковая функция; выводит диалоговое окно для ввода строки.

Помоиму эти функции позволяют реализовать абсолютно любую пошаговость, какая только душе угодна! :)
Хотя на практике у меня таких задач пока не возникало.

Это всё не то. Множитель иногда использую. Можно для этой цели даже использовать параметр smart_delay из конфига, не засирая скрипт.

BREAK давно не работает если не в курсе.
DIALOGBOX, INPUTBOX это не удобно использовать для отладки. Опять же засорение скрипта.
А использование всех этих INPUTBOX в количестве больше 3 приведёт в бешенство. Можешь попробовать.

Я понимаю что почти всё можно заменить костылями, так пока и делаем. Но на костылях как здоровый не побегаешь.