Author Topic: Конструкции break, continue  (Read 11660 times)

0 Members and 1 Guest are viewing this topic.

Сергей

  • Активный участник
  • ***
  • Posts: 159
    • View Profile
Конструкции break, continue
« on: November 04, 2012, 12:14:46 PM »
Собственно сабж.
break - выход из цикла
continue - переход к следующей итерации без завершения текущей

Намного удобней использования переменных-флагов и лишних условий.
Отсутствую.

СлавьЯнИнъ

  • Активный участник
  • ***
  • Posts: 179
    • View Profile
Re: Конструкции break, continue
« Reply #1 on: November 11, 2012, 05:22:38 PM »
Поддерживаю!
добрый смех равняет всех

MaxP

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Конструкции break, continue
« Reply #2 on: September 04, 2014, 04:14:03 PM »
+1

Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Re: Конструкции break, continue
« Reply #3 on: November 18, 2014, 10:57:48 PM »
и я поддерживаю, пусть будет больше питона в кликермане

Kedrick

  • Освоившийся
  • **
  • Posts: 70
    • View Profile
Re: Конструкции break, continue
« Reply #4 on: November 18, 2014, 11:43:10 PM »
Присоединяюсь к просьбе.
Еще можно было бы добавить
exit - выход из подпрограммы (не путать с break) иногда удобно использовать как одно из условий цикла, переходить не просто в конец цикла, а сразу к следующей подпрограмме (мне их удобнее называть процедурами или функциями, но ладно, привыкну).

И команда pause - пауза скрипта, удобно для отладки
« Last Edit: November 18, 2014, 11:57:37 PM by Kedrick »

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: Конструкции break, continue
« Reply #5 on: November 20, 2014, 02:41:46 PM »
И команда pause - пауза скрипта, удобно для отладки
пауза есть, если нажать на play после запуска скрипта

Kedrick

  • Освоившийся
  • **
  • Posts: 70
    • View Profile
Re: Конструкции break, continue
« Reply #6 on: November 20, 2014, 09:20:16 PM »
И команда pause - пауза скрипта, удобно для отладки
пауза есть, если нажать на play после запуска скрипта

В процессе отладки скрипта пауза должна быть нажатой строго после определенного действия, чтобы не гнать весь скрипт а проверить работу одного цикла или подпрограммы. Как правило время для ручного нажатия паузы исчисляется сотней миллисекунд. Оно вообще надо если можно просто вбить специальную команду? Сейчас можно и wait(999) написать, но это не интересно :)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Конструкции break, continue
« Reply #7 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


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Конструкции break, continue
« Reply #8 on: November 21, 2014, 11:20:54 AM »
Та тоже так делаю, но согласись, было бы удобно пошаговое исполнение и замедленное с выводом выбранных переменных, и тогда засорять скрипт отладочными логами будет не нужно почти.
Помню на спектруме в одном из вариантов был вшитый отладчик с режимом трассировки. Как же удобно было. Справа всегда выводилось состояние регистров и флагов. Можно было пошагово выполнять с показом строки. Можно замедленно или установить контрольную точку.
Короче отладчик бы не помешал. Только свой конечно, с особенностями, выводом return1/return2 показом области поиска и прочими вкусностями.
Во раскатал губу.
« Last Edit: November 21, 2014, 11:40:54 AM by Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Конструкции break, continue
« Reply #9 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 приведёт в бешенство. Можешь попробовать.

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