OberonCore https://forum.oberoncore.ru/ |
|
Еще один робот (подсистема Sk) https://forum.oberoncore.ru/viewtopic.php?f=7&t=858 |
Страница 2 из 6 |
Автор: | Info21 [ Суббота, 28 Январь, 2012 05:39 ] |
Заголовок сообщения: | Re: Еще один робот |
Info21 писал(а): Плохо, что роботу уделяется непропорциональное внимание, в ущерб другим, не менее -- а, может, и более -- важным темам. Вот и всё. Уточнение: речь о темах школьного предмета, а не этого форума И ещё: речь (с моей стороны) не о том, чтобы робота запретить, а о том, чтобы 1) доработать его, в том числе с учетом того, что 2) не нужно забывать о других темах. |
Автор: | Trurl [ Суббота, 28 Январь, 2012 11:06 ] |
Заголовок сообщения: | Re: Еще один робот |
Info21 писал(а): Плохо, что роботу уделяется непропорциональное внимание, в ущерб другим, не менее -- а, может, и более -- важным темам. Ну не знаю. По моим наблюдениям, если роботу и уделяется внимание, то только в ущерб Старкрафту. |
Автор: | Info21 [ Суббота, 28 Январь, 2012 12:35 ] |
Заголовок сообщения: | Re: Еще один робот |
Trurl писал(а): Info21 писал(а): Плохо, что роботу уделяется непропорциональное внимание, в ущерб другим, не менее -- а, может, и более -- важным темам. Ну не знаю. По моим наблюдениям, если роботу и уделяется внимание, то только в ущерб Старкрафту. Но всё-таки речь об обучающей стороне, а не обучаемой. |
Автор: | Trurl [ Суббота, 28 Январь, 2012 14:56 ] |
Заголовок сообщения: | Re: Еще один робот |
Да я тоже об обучающей. |
Автор: | ___ [ Понедельник, 06 Февраль, 2012 13:00 ] |
Заголовок сообщения: | Re: Еще один робот |
Код: МОДУЛЬ задание1; ПОДКЛЮЧИТЬ Р:=SkRobotRu, Ч := i21eduЧерепашка, Ввод := i21eduВвод, Вывод := i21eduВывод; НАЧАЛО ПОКА Р.СнизуСвободно() ДЕЛАТЬ Р.Вниз; КОНЕЦ; КОНЕЦ задание1. Если Р.Вниз поменять на Р.Вправо например (логическая ошибка), то робот до правой стены не доходит и не разбивается, а ББ зацикливается (ctrl+break не помогает). Начальная обстановка - поле 10*10 , по периметру стены. Код: MODULE AK_Rob1; IMPORT Log := StdLog, In := i21sysIn, Math, R:=SkRobot; BEGIN R.Start; WHILE R.DownClear() DO R.Right; END; END AK_Rob1. тут так же... в чем может быть причина? |
Автор: | Info21 [ Понедельник, 06 Февраль, 2012 14:45 ] |
Заголовок сообщения: | о визуализации движения робота |
Вот какая мысль: Если программа для робота -- обычная КП-программа, но за кадром все команды отправляются в список, и пошаговый показ идёт после выполнения собственно программы. Причём *без* обратной связи насчёт где именно оно в программе гробанулось Штоб крепче думали |
Автор: | Trurl [ Понедельник, 06 Февраль, 2012 15:25 ] |
Заголовок сообщения: | Re: Еще один робот |
___ писал(а): тут так же... в чем может быть причина? В SkRobot Код: PROCEDURE Error; BEGIN Dialog.Beep; robo.err := 1; IF trap#NIL THEN trap ELSE (* HALT(20) *) END; END Error; вот этот комментарий вокруг HALT(20) надо бы убрать. Но все равно получается нехорошо: ошибка вывалится внутри SkRobot. |
Автор: | Илья Ермаков [ Понедельник, 06 Февраль, 2012 15:33 ] |
Заголовок сообщения: | Re: о визуализации движения робота |
Info21 писал(а): но за кадром все команды отправляются в список, и пошаговый показ идёт после выполнения собственно программы. В давешнем моём Lab так и делалось, там был такой механизм отложенного показа для исполнителей. Сейчас я думаю, что и такой показ не нужен, достаточно начертить траекторию движения... |
Автор: | ___ [ Понедельник, 06 Февраль, 2012 15:52 ] |
Заголовок сообщения: | Re: Еще один робот |
Trurl писал(а): комментарий вокруг HALT(20) надо бы убрать. Но все равно получается нехорошо: ошибка вывалится внутри SkRobot. контрл+брэйк срабатывает. но почему робот всё же зацикливается, а не разбивается о правую стену? |
Автор: | Trurl [ Вторник, 07 Февраль, 2012 07:21 ] |
Заголовок сообщения: | Re: Еще один робот |
Так разбивание же закомментировано. |
Автор: | ___ [ Вторник, 07 Февраль, 2012 11:01 ] |
Заголовок сообщения: | Re: Еще один робот |
Trurl писал(а): Так разбивание же закомментировано. ... не понятно%) если мы просто идем влево, то робот перекрашивается и выполнение останавливается, он разбился. (даже если после влево добавить др команд то они не будут выполнены): Вложение: rob1.pngесли же эту команду поставить в цикл, то бб зацикливается, т.е. разбитие о стену не останавливает выполнение...если же прервать контрол брэйком, то будет видно, что робот разбился (красный). так и должно быть?... Вложение: (rob2.png)
|
Автор: | Александр Ильин [ Вторник, 07 Февраль, 2012 11:05 ] |
Заголовок сообщения: | Re: Еще один робот |
___ писал(а): Так и должно быть? А с чего бы он останавливался? У вас же чётко написано: пока внизу свободно... Вот он и работает, пока свободно.Вот если бы вы написали в цикле "пока внизу свободно и робот не разбился", был бы другой результат. Альтернатива - траповать в процедуре R.Left, если робот разбился. То есть, отлавливать и пресекать попытку продолжать управление уже разбившимся роботом. (Для этого вам рекомендовали раскомментировать вызов HALT.) Да, окно трапа будет показывать на модуль робота. Надо просто читать ниже, и вообще - уметь пользоваться окном трапа. |
Автор: | ___ [ Вторник, 07 Февраль, 2012 11:12 ] |
Заголовок сообщения: | Re: Еще один робот |
Александр Ильин писал(а): ___ писал(а): Так и должно быть? А с чего бы он останавливался? У вас же чётко написано: пока внизу свободно... Вот он и работает, пока свободно.Вот если бы вы написали в цикле "пока внизу свободно и робот не разбился", был бы другой результат. разбивание о стену - это отказ (трап в терминологии бб), если трап происходит в цикле то он не выпадывает?) если не ошибаюсь, то разбивание робота о стену должно прерывать программу полностью, в цикле бы произошло крушение или в линейной последовательности операторов... хотя если эвм командует роботом, то она конечно может продолжать посылать команды разбившемуся)) Цитата: "пока внизу свободно и робот не разбился" а у робота есть запрос "робот разбился"?) Цитата: Надо просто читать ниже, и вообще - уметь пользоваться окном трапа. не хотелось бы на роботе учить детей пользоваться трапом... |
Автор: | ___ [ Вторник, 07 Февраль, 2012 11:19 ] |
Заголовок сообщения: | Re: Еще один робот |
Александр Ильин писал(а): Альтернатива - траповать в процедуре R.Left, если робот разбился. То есть, отлавливать и пресекать попытку продолжать управление уже разбившимся роботом. (Для этого вам рекомендовали раскомментировать вызов HALT.) Да, окно трапа будет показывать на модуль робота. Надо просто читать ниже, и вообще - уметь пользоваться окном трапа. вызов халт я раскомментировал и модуль перекомпилировал, изменилось то, что теперь повисший бб реагирует на контрол+брэйк (и то далеко не всегда, в старых бб версии до сп3 контрол брэйк срабатывал вроде хорошо, а в школьной не всегда). хотелось бы конечно без выброса трапа, просто остановка программы и робот покрасневший... |
Автор: | Александр Ильин [ Вторник, 07 Февраль, 2012 11:41 ] |
Заголовок сообщения: | Re: Еще один робот |
___ писал(а): вызов халт я раскомментировал и модуль перекомпилировал Забыли перезапустить ББ.___ писал(а): не хотелось бы на роботе учить детей пользоваться трапом... Ну, тогда учите писать заканчивающиеся циклы. : )Если напишете WHILE TRUE DO END, тоже на робота будете пенять? : ) ___ писал(а): а у робота есть запрос "робот разбился"?) IF R.robo.err = 0 THEN (* работаем *) ELSE (* робот разбился*) END.
|
Автор: | ___ [ Вторник, 07 Февраль, 2012 11:55 ] |
Заголовок сообщения: | Re: Еще один робот |
Александр Ильин писал(а): Забыли перезапустить ББ. не забыл. Александр Ильин писал(а): Если напишете WHILE TRUE DO END, тоже на робота будете пенять? : ) на робота пенять не буду) WHILE TRUE DO END тоже зацикливает так, что контрл+брэйк не помогает( но это уже к роботу не относится. Цитата: IF R.robo.err = 0 THEN (* работаем *) ELSE (* робот разбился*) END. угу. в любом цикле делать частью охраны R.robo.err = 0 оч забавный методический приём) |
Автор: | Евгений Темиргалеев [ Вторник, 07 Февраль, 2012 12:05 ] |
Заголовок сообщения: | Re: Еще один робот |
___ писал(а): Цитата: IF R.robo.err = 0 THEN (* работаем *) ELSE (* робот разбился*) END. угу. в любом цикле делать частью охраны R.robo.err = 0 оч забавный методический приём) Пример обратной связи. |
Автор: | ___ [ Вторник, 07 Февраль, 2012 12:07 ] |
Заголовок сообщения: | Re: Еще один робот |
Александр Ильин писал(а): ___ писал(а): Так и должно быть? А с чего бы он останавливался? У вас же чётко написано: пока внизу свободно... Вот он и работает, пока свободно.Вот если бы вы написали в цикле "пока внизу свободно и робот не разбился", был бы другой результат. Александр Ильин и Евгений Темиргалеев хотите убедить, что так и должно быть?) в кумире: Код: использовать Робот алг нач нц пока снизу свободно влево кц кон выполнение останавливается в SkRobot (используя скрипт) Код: SkScript.DoThis начало пока СправаСвободно выполнять Влево конец конец выполнение останавливается так что похоже это все-таки не нормально... |
Автор: | Info21 [ Вторник, 07 Февраль, 2012 12:14 ] |
Заголовок сообщения: | Re: Еще один робот |
Вот пример того, как посознание профи отталкивает проблемы, возникающие в классе, как непроблемы. Когда с десятком галдящих бойцов начинаешь бегать и с какой-нибудь хренью полчаса бороться, сразу и понимаешь... |
Автор: | Александр Ильин [ Вторник, 07 Февраль, 2012 12:42 ] |
Заголовок сообщения: | Re: Еще один робот |
___ писал(а): Александр Ильин писал(а): Забыли перезапустить ББ. не забыл.Вложение: ___ писал(а): WHILE TRUE DO END тоже зацикливает так, что контрл+брэйк не помогает( но это уже к роботу не относится. Покажите ваш модуль Kernel.___ писал(а): угу. в любом цикле делать частью охраны R.robo.err = 0 Не только забавный, но и правильный.оч забавный методический приём) Можете сделать процедуру RobotWorks(): BOOLEAN, если сравнение с нулём затрудняет понимание. ___ писал(а): выполнение останавливается Когда HALT заработает, и у вас будет останавливаться.так что похоже это все-таки не нормально... Для сравнения попробуйте в Кумире убрать вызов "влево". Остановится? Info21 писал(а): Вот пример того, как подсознание профи отталкивает проблемы, возникающие в классе, как непроблемы. Попрошу не додумывать.Есть интерфейсная проблема (работает не так, как ожидается; показывает лишние окна трапов), и есть алгоритмическая проблема (необходимо учитывать все условия остановки цикла; необходимо писать так, чтобы работало как надо). |
Страница 2 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |