| OberonCore https://forum.oberoncore.ru/ |
|
| Еще один робот (подсистема Sk) https://forum.oberoncore.ru/viewtopic.php?f=7&t=858 |
Страница 1 из 6 |
| Автор: | Trurl [ Среда, 06 Февраль, 2008 18:18 ] | ||
| Заголовок сообщения: | Еще один робот (подсистема Sk) | ||
Вот, сделал для проверки идеи. Исполнитель, язык и примеры заимствованы из "вводного курса" Школьника.
|
|||
| Автор: | Илья Ермаков [ Среда, 06 Февраль, 2008 19:05 ] |
| Заголовок сообщения: | Re: Еще один робот |
А я что-то только с клавиатуры порулить смог, а скрипт запустить не сумел... Что надо сделать? При нажатии DoThis в Tool.odc он ставит квадратик с ошибкой перед началом скрипта. |
|
| Автор: | Trurl [ Среда, 06 Февраль, 2008 22:50 ] |
| Заголовок сообщения: | Re: Еще один робот |
Меня терзают смутные подозрения начет юникода, русификации и разных версий ББ. |
|
| Автор: | Илья Ермаков [ Среда, 06 Февраль, 2008 22:53 ] |
| Заголовок сообщения: | Re: Еще один робот |
1.5, с SP3. А Вы уже на 1.6 перебрались, наверное? |
|
| Автор: | Trurl [ Четверг, 07 Февраль, 2008 10:02 ] |
| Заголовок сообщения: | Re: Еще один робот |
Точно. Сейчас установил 1.5 - как раз квадратик без текста. Собствено, так и должно быть |
|
| Автор: | Info21 [ Четверг, 07 Февраль, 2008 20:40 ] |
| Заголовок сообщения: | Re: Еще один робот |
Trurl писал(а): Вот, сделал для проверки идеи. Исполнитель, язык и примеры заимствованы из "вводного курса" Школьника. Выражаю интерес, скачал, но быстро не смогу посмотреть. |
|
| Автор: | LeoparD [ Среда, 13 Февраль, 2008 03:33 ] |
| Заголовок сообщения: | Re: Еще один робот |
Скачал файл и как ни странно тоже выставляет ошибку вначале... |
|
| Автор: | Trurl [ Среда, 13 Февраль, 2008 10:00 ] | ||
| Заголовок сообщения: | Re: Еще один робот | ||
Ничего странного. Вот, перекодировал для 1.5.
|
|||
| Автор: | Info21 [ Среда, 25 Июнь, 2008 21:05 ] |
| Заголовок сообщения: | Re: Еще один робот |
Добрался до робота: Робот хороший, простой -- то, что надо. Только бы еще документацию для тех, кто первый раз про робот слышит. |
|
| Автор: | Trurl [ Понедельник, 30 Июнь, 2008 14:02 ] |
| Заголовок сообщения: | Re: Еще один робот |
В ближайшее время буду отлучен от компьютера, полноценную документацию сделать не успею. Пока очень кратко. Первоисточник: http://www.sch57.msk.ru/collect/progboo ... /part1.zip Там в первой части про робота, с примерами. Про Sk: SkScript – интерпретатор, выполняющий в фоне простенькие программки, состоящие из команд и проверок без параметров. SkLangRu - синтаксический анализатор, подключаемый к SkScript. Предполагается возможность делать разные языки. Например, с русскими или английскими ключевыми словами. SkRobot – исполнитель "робот" и редактор лабиринтов. Возможно, надо бы эти функции разделить. Можно использовать и отдельно. SkRoboScript – модуль с процедурой инициализации. Подключает к SkScript SkLangRu и SkRobot. |
|
| Автор: | Trurl [ Понедельник, 30 Июнь, 2008 14:04 ] |
| Заголовок сообщения: | Re: Еще один робот |
Код: MODULE SkScript управление интерпретатором: PROCEDURE Compile; - "скомпилировать" программу в активном окне. PROCEDURE CompileThis; - то же, для коммандера. PROCEDURE Run; - запустить программу. PROCEDURE Stop; - остановить. PROCEDURE Do; скомпилировать и запустить. PROCEDURE DoThis; две команды для пошагового выполнения: PROCEDURE Start; - начать сначала. PROCEDURE Step; - выполнить шаг. описание исполнителя: PROCEDURE DefPerfomer (IN name: ARRAY OF CHAR; init: PROCEDURE); PROCEDURE DefCommand (IN name: ARRAY OF CHAR; cmd: PROCEDURE); PROCEDURE DefTest (IN name: ARRAY OF CHAR; tst: PROCEDURE (): BOOLEAN); остальное - интерфейс с парсером и т.п. END SkScript. Код: MODULE SkRobot; управление роботом: PROCEDURE Up; PROCEDURE Down; PROCEDURE Right; PROCEDURE Left; PROCEDURE Paint; PROCEDURE Erase; PROCEDURE UpClear (): BOOLEAN; PROCEDURE DownClear (): BOOLEAN; PROCEDURE LeftClear (): BOOLEAN; PROCEDURE RightClear (): BOOLEAN; PROCEDURE Painted (): BOOLEAN; PROCEDURE Start; - устанавливает все в начальное состояние. окошко: PROCEDURE OpenView; PROCEDURE CloseView; PROCEDURE Deposit; лабиринт: создание, сохранение, загрузка. PROCEDURE InitMaze; PROCEDURE CreateMaze; PROCEDURE OpenMaze; PROCEDURE OpenThisMaze (IN name: ARRAY OF CHAR); PROCEDURE SaveMaze; PROCEDURE SaveMazeAs; END SkRobot. Код: MODULE SkRoboScript;
(* Вызов SkRoboScript.Init предполагается вставлять куда-нибудь в Config.Setup *) PROCEDURE Init; BEGIN (* выбираем язык *) SkScript.SetParser(SkLangRu.Parse); (* определяем исполнителя: имя, процедура инициализации *) SkScript.DefPerfomer('Robot', SkRobot.Start); (* описываем команды и проверки: имя, процедура *) SkScript.DefCommand('Вверх', SkRobot.Up); SkScript.DefCommand('Вниз', SkRobot.Down); SkScript.DefCommand('Вправо', SkRobot.Right); SkScript.DefCommand('Влево', SkRobot.Left); SkScript.DefCommand('Закрасить', SkRobot.Paint); SkScript.DefTest('СверхуСвободно', SkRobot.UpClear); SkScript.DefTest('СнизуСвободно', SkRobot.DownClear); SkScript.DefTest('СправаСвободно', SkRobot.RightClear); SkScript.DefTest('СлеваСвободно', SkRobot.LeftClear); SkScript.DefTest('Закрашено', SkRobot.Painted); (* устанавливаем обработчик ошибок *) SkRobot.SetErrorHandler(SkScript.HandleError) END Init; |
|
| Автор: | Борис Рюмшин [ Понедельник, 30 Июнь, 2008 15:42 ] |
| Заголовок сообщения: | Re: Еще один робот |
Trurl писал(а): В ближайшее время буду отлучен от компьютера, ...звучит как приговор инквизиции... |
|
| Автор: | Info21 [ Понедельник, 30 Июнь, 2008 15:55 ] |
| Заголовок сообщения: | Re: Еще один робот |
Trurl писал(а): В ближайшее время буду отлучен от компьютера, полноценную документацию сделать не успею. Пока очень кратко. Спешки нет, пока пусть так, остальное после обратного прилучения Мне нужно позаниматся своей главной работой Всем хорошо отдохнуть! |
|
| Автор: | ___ [ Четверг, 26 Январь, 2012 13:05 ] |
| Заголовок сообщения: | Re: Еще один робот |
подскажите, возможно ли малой кровью сделать "не моментальное" исполнение робота (используя SkRobot, без SkScript)? в справке: Цитата: Интерпретатор позволяет исполненять программы на учебном языке медленно или даже пошагово. Для запуска программы надо открыть окно, содержащее её текст и выбрать пункт "Выполнить" в меню "Программа". но используя интерпретатор работаем не с модулями бб, а с учебным языком... (свои плюсы есть конечно, но...) Русифицировать сами команды робота легко, в школьной сборке команды кп на русском есть, т.е. робот на русском получается и работает норм (разбиваясь об стены трап не выкидывает), но все происходит моментально. Код: МОДУЛЬ задание1; ПОДКЛЮЧИТЬ Р:=SkRobotRu, Ч := i21eduЧерепашка, Ввод := i21eduВвод, Вывод := i21eduВывод; НАЧАЛО ПОКА Р.СнизуСвободно() ДЕЛАТЬ Р.Вниз; КОНЕЦ; КОНЕЦ задание1. Как я понял из форума у черепашки методически не стали делать медленное выполнение, но робот совсем не наглядный получается... сам слабо в бб разбираюсь, но ощущение, что просто не получится... |
|
| Автор: | Trurl [ Четверг, 26 Январь, 2012 14:00 ] |
| Заголовок сообщения: | Re: Еще один робот |
Малой кровью не выйдет. Собсвенно, интерпретатор ради этого и делался. |
|
| Автор: | ___ [ Четверг, 26 Январь, 2012 15:50 ] |
| Заголовок сообщения: | Re: Еще один робот |
Trurl писал(а): Малой кровью не выйдет. Собсвенно, интерпретатор ради этого и делался. понятно, т.е. либо учебный интерпретируемый с задержками, либо как у черепахи с модулями, но моментальный. хм... скажите(исходники посмотрел, но не разобрался), сложилось впечатление, что интерпретатор не завязан на операторы кп (цикл пока, если и тд), т.е. в интерпретаторе можно (малой кровью) реализовать цикл "повтори Н раз"? (хотя вроде процедуры параметров не поддерживают, так, что реализовать влево_на (50) в котором используется цикл н-раз все равно не получится...) |
|
| Автор: | Info21 [ Четверг, 26 Январь, 2012 16:39 ] |
| Заголовок сообщения: | Re: Еще один робот |
Чтобы робот не был светом в оконце, засвидетельствую, что люди более опытные в школьной тематике замечали, что Кумир сам противоречит своим же принципам: слишком много исполнителей etc. Введение еще одного языка для интерпретации -- это усложнение из разряда тех, которые нужно стремиться избегать. В силу ограниченности часов. Робот попадает в нехороший резонанс из-за легкости сочинения множества задач. Но не в этом цель алгоритмики. ---- И на самом деле не нужно пренебрегать соображением, что программировать, ориентируюясь на видимое движение, подобно пошаговой отладке -- и прямо противоречит задаче развития способности и привычки к планированию. Что это трудно, понятно, -- но ровно для этого всякие методы с псевдокодами, "разделяй и властвуй" и существуют. Я пока не вижу, что без подобных роботов нельзя обойтись. Пока обойтись удается, и вполне содержательно. |
|
| Автор: | Trurl [ Пятница, 27 Январь, 2012 09:33 ] |
| Заголовок сообщения: | Re: Еще один робот |
___ писал(а): скажите(исходники посмотрел, но не разобрался), сложилось впечатление, что интерпретатор не завязан на операторы кп (цикл пока, если и тд), т.е. в интерпретаторе можно (малой кровью) реализовать цикл "повтори Н раз"? (хотя вроде процедуры параметров не поддерживают, так, что реализовать влево_на (50) в котором используется цикл н-раз все равно не получится...) Там внутре "цикл Дейктры". |
|
| Автор: | Trurl [ Пятница, 27 Январь, 2012 09:41 ] |
| Заголовок сообщения: | Re: Еще один робот |
Info21 писал(а): Робот попадает в нехороший резонанс из-за легкости сочинения множества задач. Да, для робота легко сочинять содержательные алгоритмические задачи. Не вижу в этом никакого вреда, кроме пользы. Info21 писал(а): Но не в этом цель алгоритмики. А в чём? |
|
| Автор: | Info21 [ Пятница, 27 Январь, 2012 19:46 ] |
| Заголовок сообщения: | Re: Еще один робот |
Trurl писал(а): Info21 писал(а): Робот попадает в нехороший резонанс из-за легкости сочинения множества задач. Да, для робота легко сочинять содержательные алгоритмические задачи. Не вижу в этом никакого вреда, кроме пользы.Trurl писал(а): Info21 писал(а): Но не в этом цель алгоритмики. А в чём? |
|
| Страница 1 из 6 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |
|