OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 23 Октябрь, 2018 17:38

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 102 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Суббота, 28 Январь, 2012 05:39 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7861
Откуда: Троицк, Москва
Info21 писал(а):
Плохо, что роботу уделяется непропорциональное внимание, в ущерб другим, не менее -- а, может, и более -- важным темам. Вот и всё.
Уточнение: речь о темах школьного предмета, а не этого форума :)

И ещё: речь (с моей стороны) не о том, чтобы робота запретить, а о том, чтобы
1) доработать его, в том числе с учетом того, что
2) не нужно забывать о других темах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Суббота, 28 Январь, 2012 11:06 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1086
Info21 писал(а):
Плохо, что роботу уделяется непропорциональное внимание, в ущерб другим, не менее -- а, может, и более -- важным темам.

Ну не знаю. По моим наблюдениям, если роботу и уделяется внимание, то только в ущерб Старкрафту.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Суббота, 28 Январь, 2012 12:35 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7861
Откуда: Троицк, Москва
Trurl писал(а):
Info21 писал(а):
Плохо, что роботу уделяется непропорциональное внимание, в ущерб другим, не менее -- а, может, и более -- важным темам.

Ну не знаю. По моим наблюдениям, если роботу и уделяется внимание, то только в ущерб Старкрафту.
А!.. Мысль понятна.

Но всё-таки речь об обучающей стороне, а не обучаемой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Суббота, 28 Январь, 2012 14:56 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1086
Да я тоже об обучающей. :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Понедельник, 06 Февраль, 2012 13:00 

Зарегистрирован: Четверг, 01 Июнь, 2006 11:14
Сообщения: 240
Код:
МОДУЛЬ  задание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.


тут так же... в чем может быть причина?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: о визуализации движения робота
СообщениеДобавлено: Понедельник, 06 Февраль, 2012 14:45 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7861
Откуда: Троицк, Москва
Вот какая мысль:

Если программа для робота -- обычная КП-программа,
но за кадром все команды отправляются в список, и пошаговый показ идёт после выполнения собственно программы.

Причём *без* обратной связи насчёт где именно оно в программе гробанулось :)
Штоб крепче думали :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Понедельник, 06 Февраль, 2012 15:25 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1086
___ писал(а):
тут так же... в чем может быть причина?

В SkRobot
Код:
PROCEDURE Error;
BEGIN
  Dialog.Beep;
  robo.err := 1;
  IF trap#NIL THEN trap ELSE (* HALT(20) *) END;
END Error;

вот этот комментарий вокруг HALT(20) надо бы убрать.
Но все равно получается нехорошо: ошибка вывалится внутри SkRobot.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: о визуализации движения робота
СообщениеДобавлено: Понедельник, 06 Февраль, 2012 15:33 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9011
Откуда: Россия, Орёл
Info21 писал(а):
но за кадром все команды отправляются в список, и пошаговый показ идёт после выполнения собственно программы.


В давешнем моём Lab так и делалось, там был такой механизм отложенного показа для исполнителей.

Сейчас я думаю, что и такой показ не нужен, достаточно начертить траекторию движения...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Понедельник, 06 Февраль, 2012 15:52 

Зарегистрирован: Четверг, 01 Июнь, 2006 11:14
Сообщения: 240
Trurl писал(а):
комментарий вокруг HALT(20) надо бы убрать.
Но все равно получается нехорошо: ошибка вывалится внутри SkRobot.

контрл+брэйк срабатывает. но почему робот всё же зацикливается, а не разбивается о правую стену?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Вторник, 07 Февраль, 2012 07:21 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1086
Так разбивание же закомментировано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Вторник, 07 Февраль, 2012 11:01 

Зарегистрирован: Четверг, 01 Июнь, 2006 11:14
Сообщения: 240
Trurl писал(а):
Так разбивание же закомментировано.


... не понятно%)

если мы просто идем влево, то робот перекрашивается и выполнение останавливается, он разбился. (даже если после влево добавить др команд то они не будут выполнены):
Вложение:
rob1.png
rob1.png [ 107.85 КБ | Просмотров: 4884 ]
rob1.png

если же эту команду поставить в цикл, то бб зацикливается, т.е. разбитие о стену не останавливает выполнение...если же прервать контрол брэйком, то будет видно, что робот разбился (красный). так и должно быть?...
Вложение:
rob2.png
rob2.png [ 114.62 КБ | Просмотров: 4884 ]
(rob2.png)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Вторник, 07 Февраль, 2012 11:05 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2289
Откуда: Россия, Санкт-Петербург
___ писал(а):
Так и должно быть?
А с чего бы он останавливался? У вас же чётко написано: пока внизу свободно... Вот он и работает, пока свободно.
Вот если бы вы написали в цикле "пока внизу свободно и робот не разбился", был бы другой результат.

Альтернатива - траповать в процедуре R.Left, если робот разбился. То есть, отлавливать и пресекать попытку продолжать управление уже разбившимся роботом. (Для этого вам рекомендовали раскомментировать вызов HALT.)
Да, окно трапа будет показывать на модуль робота. Надо просто читать ниже, и вообще - уметь пользоваться окном трапа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Вторник, 07 Февраль, 2012 11:12 

Зарегистрирован: Четверг, 01 Июнь, 2006 11:14
Сообщения: 240
Александр Ильин писал(а):
___ писал(а):
Так и должно быть?
А с чего бы он останавливался? У вас же чётко написано: пока внизу свободно... Вот он и работает, пока свободно.
Вот если бы вы написали в цикле "пока внизу свободно и робот не разбился", был бы другой результат.

разбивание о стену - это отказ (трап в терминологии бб), если трап происходит в цикле то он не выпадывает?)
если не ошибаюсь, то разбивание робота о стену должно прерывать программу полностью, в цикле бы произошло крушение или в линейной последовательности операторов...

хотя если эвм командует роботом, то она конечно может продолжать посылать команды разбившемуся))

Цитата:
"пока внизу свободно и робот не разбился"

а у робота есть запрос "робот разбился"?)

Цитата:
Надо просто читать ниже, и вообще - уметь пользоваться окном трапа.

не хотелось бы на роботе учить детей пользоваться трапом...


Последний раз редактировалось ___ Вторник, 07 Февраль, 2012 11:27, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Вторник, 07 Февраль, 2012 11:19 

Зарегистрирован: Четверг, 01 Июнь, 2006 11:14
Сообщения: 240
Александр Ильин писал(а):
Альтернатива - траповать в процедуре R.Left, если робот разбился. То есть, отлавливать и пресекать попытку продолжать управление уже разбившимся роботом. (Для этого вам рекомендовали раскомментировать вызов HALT.)
Да, окно трапа будет показывать на модуль робота. Надо просто читать ниже, и вообще - уметь пользоваться окном трапа.


вызов халт я раскомментировал и модуль перекомпилировал, изменилось то, что теперь повисший бб реагирует на контрол+брэйк (и то далеко не всегда, в старых бб версии до сп3 контрол брэйк срабатывал вроде хорошо, а в школьной не всегда).

хотелось бы конечно без выброса трапа, просто остановка программы и робот покрасневший...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Вторник, 07 Февраль, 2012 11:41 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2289
Откуда: Россия, Санкт-Петербург
___ писал(а):
вызов халт я раскомментировал и модуль перекомпилировал
Забыли перезапустить ББ.
___ писал(а):
не хотелось бы на роботе учить детей пользоваться трапом...
Ну, тогда учите писать заканчивающиеся циклы. : )
Если напишете WHILE TRUE DO END, тоже на робота будете пенять? : )
___ писал(а):
а у робота есть запрос "робот разбился"?)
IF R.robo.err = 0 THEN (* работаем *) ELSE (* робот разбился*) END.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Вторник, 07 Февраль, 2012 11:55 

Зарегистрирован: Четверг, 01 Июнь, 2006 11:14
Сообщения: 240
Александр Ильин писал(а):
Забыли перезапустить ББ.

не забыл.

Александр Ильин писал(а):
Если напишете WHILE TRUE DO END, тоже на робота будете пенять? : )

на робота пенять не буду)
WHILE TRUE DO END тоже зацикливает так, что контрл+брэйк не помогает( но это уже к роботу не относится.

Цитата:
IF R.robo.err = 0 THEN (* работаем *) ELSE (* робот разбился*) END.

угу. в любом цикле делать частью охраны R.robo.err = 0
оч забавный методический приём)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Вторник, 07 Февраль, 2012 12:05 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4485
Откуда: Россия, Орёл
___ писал(а):
Цитата:
IF R.robo.err = 0 THEN (* работаем *) ELSE (* робот разбился*) END.

угу. в любом цикле делать частью охраны R.robo.err = 0
оч забавный методический приём)
Робот не обязательно разбился. Может внутри что-то поломалось. Он на команду не так среагирует и прихлопнет испытателя.

Пример обратной связи. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Вторник, 07 Февраль, 2012 12:07 

Зарегистрирован: Четверг, 01 Июнь, 2006 11:14
Сообщения: 240
Александр Ильин писал(а):
___ писал(а):
Так и должно быть?
А с чего бы он останавливался? У вас же чётко написано: пока внизу свободно... Вот он и работает, пока свободно.
Вот если бы вы написали в цикле "пока внизу свободно и робот не разбился", был бы другой результат.


Александр Ильин и Евгений Темиргалеев
хотите убедить, что так и должно быть?)

в кумире:
Код:
использовать Робот
алг
нач
нц пока снизу свободно
влево
кц
кон

выполнение останавливается

в SkRobot (используя скрипт)
Код:
SkScript.DoThis
   начало
      пока СправаСвободно выполнять
         Влево
      конец
   конец

выполнение останавливается

так что похоже это все-таки не нормально...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Вторник, 07 Февраль, 2012 12:14 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7861
Откуда: Троицк, Москва
Вот пример того, как посознание профи отталкивает проблемы, возникающие в классе, как непроблемы.

Когда с десятком галдящих бойцов начинаешь бегать и с какой-нибудь хренью полчаса бороться, сразу и понимаешь...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один робот
СообщениеДобавлено: Вторник, 07 Февраль, 2012 12:42 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2289
Откуда: Россия, Санкт-Петербург
___ писал(а):
Александр Ильин писал(а):
Забыли перезапустить ББ.
не забыл.
У меня работает:
Вложение:
Trap.png
Trap.png [ 69.58 КБ | Просмотров: 4859 ]
___ писал(а):
WHILE TRUE DO END тоже зацикливает так, что контрл+брэйк не помогает( но это уже к роботу не относится.
Покажите ваш модуль Kernel.
___ писал(а):
угу. в любом цикле делать частью охраны R.robo.err = 0
оч забавный методический приём)
Не только забавный, но и правильный.
Можете сделать процедуру RobotWorks(): BOOLEAN, если сравнение с нулём затрудняет понимание.
___ писал(а):
выполнение останавливается
так что похоже это все-таки не нормально...
Когда HALT заработает, и у вас будет останавливаться.
Для сравнения попробуйте в Кумире убрать вызов "влево". Остановится?
Info21 писал(а):
Вот пример того, как подсознание профи отталкивает проблемы, возникающие в классе, как непроблемы.
Попрошу не додумывать.
Есть интерфейсная проблема (работает не так, как ожидается; показывает лишние окна трапов), и есть алгоритмическая проблема (необходимо учитывать все условия остановки цикла; необходимо писать так, чтобы работало как надо).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 102 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB