OberonCore https://forum.oberoncore.ru/ |
|
Еще один робот (подсистема Sk) https://forum.oberoncore.ru/viewtopic.php?f=7&t=858 |
Страница 4 из 6 |
Автор: | Александр Ильин [ Вторник, 07 Февраль, 2012 14:54 ] |
Заголовок сообщения: | Re: Еще один робот |
Внимание! Если на одной машине запущено два или более экземпляров ББ, то первый прерывается по Ctrl+Break, второй прерывается по Ctrl+Shift+Break, третий и последующие - не прерываются. Дело в том, что клавиатурные комбинации глобальны в системе. ББ пытается сначала захватить Ctrl+Break. Если не получилось, пробует Ctrl+Shift+Break. Пока захвативший комбинацию экземпляр ББ продолжает работать, новые экземпляры эту комбинацию захватить не могут. Может быть, у вас Ctrl+Break не работает потому, что фоном запущен другой ББ (ну, скажем, в одном вы пишете диссертацию, а в другом экспериментируете с роботом). |
Автор: | ___ [ Вторник, 07 Февраль, 2012 14:56 ] |
Заголовок сообщения: | Re: Еще один робот |
убрал из конфига вызов скскрипт.инит, перекомпилил запустил blackbox1 зациклился, но по контрлбрэйку такое получилось (серый модуль остался и после нажатия на ок): Вложение: в логе значений фалс 3 шт но не отдает управление пока контрлбрэйк не нажму... перепроверил если подождать около 10 сек, то управление отдает норм норм отдает управление ждать не надо, просто часики висели 10сек |
Автор: | ___ [ Вторник, 07 Февраль, 2012 15:07 ] |
Заголовок сообщения: | Re: Еще один робот |
итак: раскоментирование халта не помогало из-за скскрипт.инит в конфиге т.е. если в скробот раскомментировать халт и исправить 20 на 128 и не вызывать сксрипт.инит из конфига или вручную, то робот не зацикливает программу и ведет себя "хорошо" (стоит там где разбился, цвет поменял) с контролбрэйком пока не понятно, но тестировать тогда надо на пустом вайле уже |
Автор: | ___ [ Вторник, 07 Февраль, 2012 15:14 ] |
Заголовок сообщения: | Re: Еще один робот |
Александр Ильин писал(а): Внимание! Если на одной машине запущено два или более экземпляров ББ, то первый прерывается по Ctrl+Break, второй прерывается по Ctrl+Shift+Break, третий и последующие - не прерываются. Дело в том, что клавиатурные комбинации глобальны в системе. ББ пытается сначала захватить Ctrl+Break. Если не получилось, пробует Ctrl+Shift+Break. Пока захвативший комбинацию экземпляр ББ продолжает работать, новые экземпляры эту комбинацию захватить не могут. Может быть, у вас Ctrl+Break не работает потому, что фоном запущен другой ББ (ну, скажем, в одном вы пишете диссертацию, а в другом экспериментируете с роботом). запускался бб единожды, но... например со старыми виндовыми играми под вин7-64 была такая заморочка, они запускались со второго раза, первый раз запускался ран32.длл а второй раз уже сама игра и когда выходишь из игры, то 1 ядро процессора занято тем ран32.длл. его вручную надо было убивать. правда с какого-то времени это прекратилось (мб заплатки). но тут в диспетчере задач подозрительного ничего нету вроде |
Автор: | Александр Ильин [ Вторник, 07 Февраль, 2012 15:18 ] |
Заголовок сообщения: | Re: Еще один робот |
___ писал(а): т.е. если в скробот раскомментировать халт и исправить 20 на 128 и не вызывать сксрипт.инит из конфига или вручную, то робот не зацикливает программу и ведет себя "хорошо" (стоит там где разбился, цвет поменял) А я-то всё не могу понять, в чём тут дело. А вы, оказывается, в конфиге прописали. Ясно.Можно просто в начале программы вызывать R.SetErrorHandler(NIL). Это отменит нежелательный эффект от SkScript.Init, если таковой имеется. |
Автор: | Trurl [ Вторник, 07 Февраль, 2012 15:29 ] |
Заголовок сообщения: | Re: Еще один робот |
Александр Ильин писал(а): Можно просто в начале программы вызывать R.SetErrorHandler(NIL). А Можно R.SetErrorHandler(MyErrorHandler), где Код: PROCEDURE MyErrorHandler;
BEGIN Log.String('Апстену!!!111');Log.Ln; HALT(128); END MyErrorHandler; |
Автор: | Trurl [ Вторник, 07 Февраль, 2012 15:44 ] |
Заголовок сообщения: | Re: Еще один робот |
Trurl писал(а): Если бы был отдельный модуль робота для КП, в каждую команду можно было бы вставить предусловие и трап был бы всего в одном шаге от нужного места. Хотел сделать интерфейсный модуль типа Вложение: но так робот не успевает сломаться (в смысле - покраснеть). |
Автор: | ___ [ Вторник, 07 Февраль, 2012 15:53 ] |
Заголовок сообщения: | Re: о визуализации движения робота |
Info21 писал(а): Вот какая мысль: Если программа для робота -- обычная КП-программа, но за кадром все команды отправляются в список, и пошаговый показ идёт после выполнения собственно программы. Причём *без* обратной связи насчёт где именно оно в программе гробанулось Штоб крепче думали даже такую штуку прикрутить не смогу%) Илья Ермаков писал(а): Info21 писал(а): но за кадром все команды отправляются в список, и пошаговый показ идёт после выполнения собственно программы. В давешнем моём Lab так и делалось, там был такой механизм отложенного показа для исполнителей. Сейчас я думаю, что и такой показ не нужен, достаточно начертить траекторию движения... вообще хотел посмотреть, что для робота есть для бб. просто позанимался с тремя учениками (5, 8, 11кл на кумире), темы линейного алгоритма все схватывают просто мигом, процедуры у 5кл уже вызывают затруднения, 11кл быстро (но не всегда видит, какие выделить в процедуры). все трое использовали для запуска ф9 (весь алгоритм разом, не пошагово, хотя в кумире он хоть и быстро, но видно как пробегал). поэтому вполне возможно, что при знакомстве с роботом, можно просто использовать режим с клавиатуры (погонять клавишами, позакрашивать - почувствовать робота), а когда писать программы, то мб моментальное исполнение приемлемо (со старшими школьниками). у интерпретатора хоть и есть свои плюшки (пошагово, показывает на какой команде, не надо модуль писать, следить за компиляцией, можно реализовать конструкции которых нет в кп (н-раз) и тд), но надо дорабатывать эти доп конструкции (процедур с параметрами например и др) и тогда теряется находка школьной сборки: единая среда+единый язык на всем протяжении курса (робо+черепах+кп+англ+рус). почему я и спрашивал "малой кровью", потому, что у самого квалификации нет сделать что-то "ух", а другим явно не до этого. |
Автор: | ___ [ Вторник, 07 Февраль, 2012 16:28 ] |
Заголовок сообщения: | Re: Еще один робот |
Код: MODULE AK_Rob1; IMPORT Log := StdLog, In := i21sysIn, Math, R:=SkRobot; BEGIN Log.Bool(R.trap # NIL); WHILE R.DownClear() DO Log.Bool(R.trap # NIL); R.Right; Log.Bool(R.trap # NIL); END; Log.Bool(R.trap # NIL); (**)R.Left; R.Right; R.Right; END AK_Rob1. если перед запуском поставить робота в начальное положение, то разбившись отдаст управление, если запустить сразу повторно, то зациклится |
Автор: | Info21 [ Вторник, 07 Февраль, 2012 17:34 ] |
Заголовок сообщения: | Re: Еще один робот |
Робота хорошо бы дожать до реального удобства. Тут два направления: 1) дожать "стандартного" робота, дописав документацию для учителей и вписав в школьный комплект 2) взяв идею, -- но не делая культ из каждой детали, -- доковать до настоящей методической простоты, м.б. в духе черепашки (хотя та тоже ещё хочет поразвиваться). |
Автор: | Trurl [ Среда, 08 Февраль, 2012 08:24 ] |
Заголовок сообщения: | Re: Еще один робот |
___ писал(а): если перед запуском поставить робота в начальное положение, то разбившись отдаст управление, если запустить сразу повторно, то зациклится Программа на КП должна начинаться с вызова процедуры SkRobot.Start, которая устаналивает робота в начальное положение и очищает поле. Код: MODULE AK_Rob1; IMPORT Log := StdLog, In := i21sysIn, Math, R:=SkRobot; BEGIN Robot.Start; WHILE R.DownClear() DO R.Right; END; END AK_Rob1. Интерпретатор вызывает её автоматически. |
Автор: | Info21 [ Среда, 08 Февраль, 2012 11:41 ] |
Заголовок сообщения: | Re: Еще один робот |
Trurl писал(а): Код: WHILE R.DownClear() DO Робот -- он для самых начинающих. Вроде. И функцию там вводить -- нехорошо. |
Автор: | Trurl [ Четверг, 09 Февраль, 2012 08:40 ] |
Заголовок сообщения: | Re: Еще один робот |
А ведь если управлять роботом из КП, то смысла во всей этой анимации нет. Достаточно выводить итоговую ситуацию. Так ведь? |
Автор: | Евгений Темиргалеев [ Четверг, 09 Февраль, 2012 09:14 ] |
Заголовок сообщения: | Re: Еще один робот |
Trurl писал(а): А ведь если управлять роботом из КП, то смысла во всей этой анимации нет. Достаточно выводить итоговую ситуацию. Так ведь? Очень возможно. Типовые задачи, вроде, провести робота из А в Б по какому-то маршруту. Поэтому итог: следы робота + его конечное положение (разбитое или целое). Илья Евгеньевич выше говорил.
|
Автор: | Info21 [ Четверг, 09 Февраль, 2012 09:39 ] |
Заголовок сообщения: | Re: Еще один робот |
Trurl писал(а): А ведь если управлять роботом из КП, то смысла во всей этой анимации нет. Достаточно выводить итоговую ситуацию. Так ведь? С точки зрения методики обучения без отладчика -- да.Но как завлекалочка -- оно, вроде, и невредно. |
Автор: | Илья Ермаков [ Четверг, 09 Февраль, 2012 10:54 ] |
Заголовок сообщения: | Re: Еще один робот |
Нарисуйте путь линией - да и всё. |
Автор: | Trurl [ Четверг, 09 Февраль, 2012 14:59 ] |
Заголовок сообщения: | Re: Еще один робот |
А если путь туда-сюда? |
Автор: | Борис Рюмшин [ Четверг, 09 Февраль, 2012 15:26 ] |
Заголовок сообщения: | Re: Еще один робот |
Не, на самом деле, когда я лабовского робота применял в процессе, его видимое перемещение очень даже стимулировало обучающихся... |
Автор: | Info21 [ Четверг, 09 Февраль, 2012 16:27 ] |
Заголовок сообщения: | Re: Еще один робот |
Борис Рюмшин писал(а): когда я лабовского робота применял в процессе, его видимое перемещение очень даже стимулировало обучающихся... Любое движение стимулирует рептилийную часть мозга.Важно найти сочетание с правильной мета:)методической ... аттитюдой Оторвать движение от хайлайтинга кода -- это, наверное, правильно. Ну, и включать только для начинающих. |
Автор: | ___ [ Пятница, 10 Февраль, 2012 13:56 ] |
Заголовок сообщения: | Re: Еще один робот |
прототип, как может выглядеть робот в "стиле черепашки" использовал команды "СвободноСверху" вместо "СверхуСвободно" тк мне кажется, что отрицания "НЕ СвободноСверху" звучат лучше чем "НЕ СверхуСвободно" (если не вводить дубликаты "СверхуСтена"). но в полной версии "НЕ Р.СвободноСверху()" уже похуже%) R.Start перевел как Р.НаСтарт Вложение:
|
Страница 4 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |