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/ |