Программа предназначена для обучения программированию детей школьного возраста (~5-7 классы). Программа представляет из себя среду для разработки на простом ЯП (языке программирования), включая редактор, интерпретатор, отладчик и несколько ИО (игровых окружений).
Среда разработки включает в себя редактор и отладчик. В среду разработки можно загрузить определенное ИО и начальную обстановку к нему. В специальной области (панельке) отображается специфичная для ИО информация (координатная плоскость для рисования и т.п.). Область ИО можно сбросить до первоначального состояния (очистить область рисования и т.п.).
Редактор должен обладать следующими возможностями:
Отладчик должен обладать следующими возможностями:
ЯП должен быть простым и лаконичным. Типизация динамическая. Синтаксис языка должен быть Pascal-подобным, с некоторыми изменениями. Ключевые слова должны быть в латинице (for, end, и т.п.), однако язык должен позволять объявлять и использовать переменные с кириллическими именами. Язык должен позволять объявлять функции, пользовательские модули.
Пример простого скрипта для ИО "Turtle" (черновой вариант синтаксиса):
# рисуем 15 равносторонних треугольников # со сторонами 1, 1, 2, 3, 5, 8, 13 ... def triangle(n) for i from 1 to 3 do forward(n) left(120) end end var n = 15 var fb = array(n) # встроенная функция array создает новый массив fb[1] = 1 fb[2] = 1 for i from 3 to n do fb[i] = fb[i - 2] + fb[i - 1] end for i from 1 to n do # рисуем треугольник triangle(fb[i]) forward(fb[i]) end
Поддерживаемые типы должны включать в себя:
В языке должны быть реализованы классические управляющие операторы:
Переменные вводятся в текущую область видимости при помощи оператора var. Переменная доступна до конца текущего блока кода (до ключевого слова end). Пример:
var A for I from 1 to 10 do # A и I доступны var B # A, B, и I доступны ... end # A доступна
Должно быть предусмотрено несколько стандартных библиотек:
ИО могут добавлять собственные библиотеки.
В программе должно быть реализовано 2 ИО (с возможностью добавления новых).
На плоском поле с декартовыми координатами находится исполнитель "черепаха". Черепаха может двигаться вперед/назад на вещественное расстояние. При этом черепаха оставляет за собой след в виде линии. Черепаха может поворачивать на определенное число градусов. Суть данного ИО - начертить при помощи черепахи определенный рисунок: треугольник, елочку и т.п. Черепаха может менять цвет и стиль следа, "поднимать живот" (при перемещении след не оставляется) и т.п.
На плоском сетчатом поле в некоторых клетках находятся различные предметы: камни, ямы и т.п. В одной из клеток находится робот. Некоторые клетки поля закрыты "облаками", такие клетки не отличаются от обычных, однако ребенок не может посмотреть, что на них находится (это вынуждает ребенка использовать алгоритмы с ветвлениями и циклами). Роботом можно управлять, отдавая ему различные команды: вверх, вниз, поднять предмет из текущей клетки, опустить предмет и т.п. Робот может переносить предметы. На поле также могут находится другие роботы, настроенные враждебно. При встрече с враждебным роботом наш робот "погибает". Некоторые роботы двигаются по определенным правилам (например, по направлению нашего робота), некоторые двигаются в случайном направлении. Суть данного ИО - выолнять различные задания, начиная от "добраться из А в Б" и "перенести все камни в точку Б", заканчивая "добраться до Б, не встретившись с вражескими роботами".
Программа должна позволять создавать новые библиотеки и игровые окружения. Для этого должен быть предусмотрен API (набор Java классов и интерфейсов) для создания новых библиотек и ИО.