Особенности УТКИ



Описание
языка УТКА

Язык программирования «УТКА» является предельно простым (и, соответственно, слабым) подростковым объектно-ориентированным утиным языком программирования, предназначенным для изучения ключевых понятий современного программирования.

Примитивные объекты (примитивы)

Числом мы называем вещественные числа, слово – это произвольный упорядоченный набор символов, биты – это множество из двух символов {0, 1}, когда речь идёт о битах, символ 0 иногда обозначают через false, а символ 1 – через true.

Вычисления

В множестве чисел имеются следующие операции:

Название операции Обозначение
Сложение +
Умножение *
Вычитание -
Деление /
Для целых чисел остаток от деления %


В множестве слов имеется операция конкатенации (составление двух слов в одно), она обозначается знаком +.
В множестве битов имеются операции:

Название операции Обозначение
И &&
ИЛИ ||
Отрицание !


Операция Результат
1 && 1 1
1 && 0 0
0 && 1 0
0 && 0 0


Операция Результат
1 || 1 1
1 || 0 1
0 || 1 1
0 || 0 0


Операция Результат
! 1 0
! 0 1


Обозначения

Обозначение – это пара (имя: значение), где имя – слово, а значение – произвольный объект. Пока мы определили только примитивные объекты.
Команда «имя = значение;» создаёт обозначение, например, команда
x = 5;
создаёт обозначение (x: 5) и после этой команды имена x и 5 взаимозаменяемы.

Объект

К числу объектов отнесём также конечные множества обозначений, записанных в фигурных скобках:
{имя1: значение1, имя2: значение2, … имяN: значениеN}
Имена не должны совпадать, а значения – произвольные объекты.

Оператор show()

Оператор show() выводит в консоль значение выражения в скобках.

Классы

Классы – это объекты, в которых на все значения обозначений заданы. Простейшие классы:
single = {x:},
pair = {x:, y:}.
Подстановка в пустые места после двоеточия произвольных объектов даёт уже полноценный объект, зависящий от подставленного значения. Эта зависимость называется конструктором объекта и обозначается тем же словом, что и класс:
single(объект) = {x: объект}.
pair(объект1, объект2) = {x: объект1,y: объект2}.

Встроенные объекты

Язык УТКА содержит некоторое количество встроенных объектов, вот полный список:

Объекты Свойства и методы
show() Функция вывода в консоль значения выражения в скобках
math sin(x) - синус x,
cos(x) - косинус x,
abs(х) - модуль x,
tan(х) - тангенс x,
asin(х) - арксинус x,
acos(х) - арккосинус x,
atan(х) - арктангенс x,
atan2(y, x) - угол между осью x и направлением на точку (x, y),
pow(y, x) - возведение в степень yx,
random() - датчик случайных чисел в интервале (0, 1),
round(х) - округление числа x до ближайшуго целого, 0.5 округляется в большую сторону,
exp(х) - экспонента ex,
sqrt(x) - квадратный корень числа x,
draw system(width, color) - рисование системы координат на всю графическую панель,
line(matrix, width, color) - отрезок с концами в столбцах матрицы ,
rect(matrix, width, color) - прямоугольник,
circle(vector, radius, width, color) - окружность,
triangle(matrix3, width, color) - треугольник,
fillrect(matrix, color) - закрашенный прямоугольник,
filltriangle(matrix3, color) - закрашенный треугольник,
fillcircle(vector, radius, color) - круг,
clear() - очистить графическую панель,
Любая коллекция коллекция = Set(); - создание пустой коллекции,
sss.addu() - добавление объекта,
sss.foreachu(){} - выполнения кода для всех элементов множества,
sss.hasu() - определение, есть ли конкретный объект в коллекции?,
sss.deleteu() - удаление объекта,
sss.clearu() - удаление всех объектов,
timer Id = start(fun, ms) - запуск анимации, т.е. выполнение функции fun через каждые ms милисекунд. Id – идентификатор анимации,
stop(Id) - остановка анимации.


Зарезервированные термины

Все слова, используемые в качестве обозначений встроенных объектов или их свойств и методов, а также стандартных операторов, являются зарезервированными, и их не следует использовать для других целей. Вот полный список таких зарезервированных терминов:

show, If, while, function, math, sin, cos, abs, tan, atan, atan2, exp, pow, random, round, sqrt, draw, system, line, rect, circle, triangle, fillrect, filltriangle, fillcircle, clear, Set, addu, hasu, delete, clearu, start, stop.