OberonCore
https://forum.oberoncore.ru/

Еще один робот (подсистема Sk)
https://forum.oberoncore.ru/viewtopic.php?f=7&t=858
Страница 1 из 6

Автор:  Trurl [ Среда, 06 Февраль, 2008 18:18 ]
Заголовок сообщения:  Еще один робот (подсистема Sk)

Вот, сделал для проверки идеи.

Исполнитель, язык и примеры заимствованы из "вводного курса" Школьника.

Вложения:
Sk.zip [28.04 КБ]
Скачиваний: 852

Автор:  Илья Ермаков [ Среда, 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.

Вложения:
Sk15.zip [27.77 КБ]
Скачиваний: 824

Автор:  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 писал(а):
В ближайшее время буду отлучен от компьютера,

...звучит как приговор инквизиции...
:mrgreen:

Автор:  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/