Difference between revisions of "Qubot Script/ru"
m (Category:Qubot) |
|||
| Line 28: | Line 28: | ||
* '''and''' - логическое ‘И’ | * '''and''' - логическое ‘И’ | ||
* '''or''' - логическое ‘ИЛИ’ | * '''or''' - логическое ‘ИЛИ’ | ||
| + | * '''not''' - отрицание ‘НЕТ’ | ||
| + | |||
Например: | Например: | ||
<syntaxhighlight lang="python">res = (a and b) or c</syntaxhighlight> | <syntaxhighlight lang="python">res = (a and b) or c</syntaxhighlight> | ||
| + | |||
<span id="арифметические-операции"></span> | <span id="арифметические-операции"></span> | ||
== Арифметические операции == | == Арифметические операции == | ||
| Line 43: | Line 46: | ||
<syntaxhighlight lang="js">res = 2+3-4*5+(1.5-0.2/2)</syntaxhighlight> | <syntaxhighlight lang="js">res = 2+3-4*5+(1.5-0.2/2)</syntaxhighlight> | ||
| + | |||
| + | == Комментарии == | ||
| + | |||
| + | Комментарии используются для документирования фрагментов скрипта. | ||
| + | Могут быть многострочыми и однострочными: | ||
| + | <syntaxhighlight lang="js"> | ||
| + | /* | ||
| + | Пример | ||
| + | многострочного | ||
| + | комментария | ||
| + | */ | ||
| + | |||
| + | a = 2253 // пример однострочного комментария | ||
| + | </syntaxhighlight> | ||
| + | |||
<span id="условный-оператор"></span> | <span id="условный-оператор"></span> | ||
| + | |||
== Условный оператор == | == Условный оператор == | ||
| + | Оператор '''if''' используется, если необходимо ветвление логики в зависимости от условия | ||
<syntaxhighlight lang="js">if (a > 7) | <syntaxhighlight lang="js">if (a > 7) | ||
| Line 89: | Line 109: | ||
Объявление массива: | Объявление массива: | ||
| − | <syntaxhighlight lang="js">arr = [1,2,3] // создает массив с тремя элементами со значениями 1,2,3</syntaxhighlight> | + | <syntaxhighlight lang="js">arr = [1,2,3] // создает массив с тремя элементами со значениями 1,2,3 |
| + | |||
| + | </syntaxhighlight> | ||
| + | |||
Доступ к элементам массива: | Доступ к элементам массива: | ||
| Line 103: | Line 126: | ||
arr.pop() // удалить последний элемент массива | arr.pop() // удалить последний элемент массива | ||
arr.shift() // удалить первый элемент массива | arr.shift() // удалить первый элемент массива | ||
| − | arr.slice(start,end) // возращает часть массива начиная с позиции 'start' и заканчивая если указано позицией 'end' | + | arr.slice(start,end) // возращает часть массива начиная с позиции 'start' и заканчивая если указано позицией 'end' |
| + | arr.splice(start,end) // удаляет часть массива начиная с позиции 'start' и заканчивая если указано позицией 'end' | ||
| + | |||
<span id="работа-со-словарем-объектом"></span> | <span id="работа-со-словарем-объектом"></span> | ||
== Работа со словарем (объектом) == | == Работа со словарем (объектом) == | ||
| Line 110: | Line 135: | ||
<syntaxhighlight lang="js">dic = { n: 1, s: "Wine" } </syntaxhighlight> | <syntaxhighlight lang="js">dic = { n: 1, s: "Wine" } </syntaxhighlight> | ||
| + | |||
Доступ к значениям словаря: | Доступ к значениям словаря: | ||
| Line 120: | Line 146: | ||
Объявление строковых слотов: | Объявление строковых слотов: | ||
| − | <syntaxhighlight lang="js">str = "hello" // используя двойные кавычки | + | <syntaxhighlight lang="js"> |
| + | str = "hello" // используя двойные кавычки | ||
str = 'hello' // используя одинарные кавычки</syntaxhighlight> | str = 'hello' // используя одинарные кавычки</syntaxhighlight> | ||
| + | |||
Операции со строками: | Операции со строками: | ||
| − | <syntaxhighlight lang="js">base = 'http://imgs/' | + | <syntaxhighlight lang="js"> |
| − | url = base + 'img1.png' // сложение строк</syntaxhighlight> | + | base = 'http://imgs/' |
| + | url = base + 'img1.png' // сложение строк | ||
| + | </syntaxhighlight> | ||
| + | <span id="функции-перехода"></span> | ||
| + | |||
| + | Подстановка слотов в строки: | ||
| + | <syntaxhighlight lang="js"> | ||
| + | a = 5 | ||
| + | str = "a = $a" // вместо $a будет подставлено значение слота a | ||
| + | print(str) // выведет: "a = 5" | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | Вставка выражений в строки: | ||
| + | |||
| + | Выражения можно вставлять в строки, обрамляя их двойными фигурными скобками: | ||
| + | <syntaxhighlight lang="js"> | ||
| + | str = "2 + 3 = {{2+3}}" // вычислит выражение и вставит результат в строку | ||
| + | print(str) // выведет: "2 + 3 = 5" | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | Функции работы со строками: | ||
| + | <syntaxhighlight lang="js"> | ||
| + | str = "hello" | ||
| + | len = str.length // получить длинну строки | ||
| + | </syntaxhighlight> | ||
| + | |||
<span id="функции-перехода"></span> | <span id="функции-перехода"></span> | ||
== Функции перехода == | == Функции перехода == | ||
| Line 132: | Line 185: | ||
'''''goto(state)''''' - мгновенный переход в шаг state (строка или значение слота $STATE) | '''''goto(state)''''' - мгновенный переход в шаг state (строка или значение слота $STATE) | ||
| + | |||
| + | <span id="оператор-button"></span> | ||
| + | == Оператор ```button``` | ||
| + | |||
| + | Данный оператор добавляет в интерфейс кнопку | ||
| + | с необходимым текстом и логику, которая должна быть | ||
| + | выполнена при нажатии | ||
| + | <syntaxhighlight lang="js"> | ||
| + | button('click me') // текст в кнопке | ||
| + | { | ||
| + | // скрипт, который выполнится после нажатия | ||
| + | print('button was clicked!') | ||
| + | step('STATE_AFTER_CLICK') | ||
| + | } | ||
| + | </syntaxhighlight> | ||
<span id="функции-работы-с-контентом"></span> | <span id="функции-работы-с-контентом"></span> | ||
| Line 138: | Line 206: | ||
'''''text(obj)''''' - вывести в текущее сообщение текст. Если obj - это сторока, то она выводится не зависимо от текущего языка. Если obj - объект, то он должен состоять из двубуквенных ключей (идентификаторов языка: en, ru,…) со строковыми значения на этих языках. | '''''text(obj)''''' - вывести в текущее сообщение текст. Если obj - это сторока, то она выводится не зависимо от текущего языка. Если obj - объект, то он должен состоять из двубуквенных ключей (идентификаторов языка: en, ru,…) со строковыми значения на этих языках. | ||
| − | <syntaxhighlight lang="js">text("Hi world!") | + | <syntaxhighlight lang="js"> |
| − | text({ en: "Hi world!", ru: "Привет мир!", es: "¡Hola mundo!"}) </syntaxhighlight> | + | text("Hi world!") |
| + | text({ en: "Hi world!", ru: "Привет мир!", es: "¡Hola mundo!"}) | ||
| + | </syntaxhighlight> | ||
| + | |||
'''''images()''''' - создать новую строку картинок. Каждый последующий вызов image будет добавляться в эту строку, пока снова не будет вызван images(). | '''''images()''''' - создать новую строку картинок. Каждый последующий вызов image будет добавляться в эту строку, пока снова не будет вызван images(). | ||
| − | <syntaxhighlight lang="js">URL = "https://qudata.com/qubot/im/" | + | <syntaxhighlight lang="js"> |
| + | URL = "https://qudata.com/qubot/im/" | ||
images() | images() | ||
image(URL + "owl_a.png") | image(URL + "owl_a.png") | ||
image(URL + "owl_b.png") </syntaxhighlight> | image(URL + "owl_b.png") </syntaxhighlight> | ||
| + | |||
'''''image(url)''''' - вывести в текущее сообщение картинку, находящуюся по адресу url. | '''''image(url)''''' - вывести в текущее сообщение картинку, находящуюся по адресу url. | ||
| − | <syntaxhighlight lang="js">URL = "https://qudata.com/qubot/im/" | + | <syntaxhighlight lang="js"> |
| + | URL = "https://qudata.com/qubot/im/" | ||
image(URL + "owl_a.png") </syntaxhighlight> | image(URL + "owl_a.png") </syntaxhighlight> | ||
| − | |||
| − | |||
'''''get_check(list)''''' - записать в слот с именем list значения кнопок типа check (1 - нажата, 0 - отжата) | '''''get_check(list)''''' - записать в слот с именем list значения кнопок типа check (1 - нажата, 0 - отжата) | ||
'''''set_check(list)''''' - задать значения кнопок типа check из массива list. | '''''set_check(list)''''' - задать значения кнопок типа check из массива list. | ||
| − | <syntaxhighlight lang="js">CHECK = [0,1,0] | + | <syntaxhighlight lang="js"> |
| − | set_check(CHECK) | + | CHECK = [0,1,0] |
| + | set_check(CHECK) | ||
| + | </syntaxhighlight> | ||
| + | |||
'''''get_radio(list)''''' - записать в слот с именем list значения кнопок типа radio (1 - нажата, 0 - отжата). Единица будет одна. | '''''get_radio(list)''''' - записать в слот с именем list значения кнопок типа radio (1 - нажата, 0 - отжата). Единица будет одна. | ||
| Line 185: | Line 260: | ||
<syntaxhighlight lang="js">round(3.14159265, 2) // 3.14</syntaxhighlight> | <syntaxhighlight lang="js">round(3.14159265, 2) // 3.14</syntaxhighlight> | ||
| + | |||
<span id="случайные-числа"></span> | <span id="случайные-числа"></span> | ||
== Случайные числа == | == Случайные числа == | ||
Revision as of 07:59, 28 March 2022
Qubot Script
Qubot Script - это язык программирования, используемый для выполнения логических и математических операций при решении задач бота
Объявление слотов (переменных)
Объявление слотов происходит при первом присваивании в них значений
Например:
a = 7
объявляет слот с именем a и присваивает ему значение 7
Типы слотов
int = 7 // целочисленный
float = 7.3 // вещественный
str = "hello" // строковый
arr = [7, 7.3, "hello", str] // массив
dic = { n: 1, s: "Wine" } // словарь
bool = true // бинарный
Логические операции
- and - логическое ‘И’
- or - логическое ‘ИЛИ’
- not - отрицание ‘НЕТ’
Например:
res = (a and b) or c
Арифметические операции
- + - сложение
- - - вычитание
- * - умножение
- / - деление
Например:
res = 2+3-4*5+(1.5-0.2/2)
Комментарии
Комментарии используются для документирования фрагментов скрипта. Могут быть многострочыми и однострочными:
/*
Пример
многострочного
комментария
*/
a = 2253 // пример однострочного комментария
Условный оператор
Оператор if используется, если необходимо ветвление логики в зависимости от условия
if (a > 7)
{
res = 'a more than 7'
}
else
{
res = 'a less or equal 7'
}
В данном примере проверяется условие a > 7 и если оно истинно, то выполняется первый блок скрипта, окрыженный фигурными скобками, иначе выполняется блок после служебного слова “else”
Цикл while
Оператор цикла проверяет условие и пока оно истинно, выполняет код окруженный фигурными скобками
a = 7
while (a > 0)
{
a = a - 1
}
В данном примере скрипт a = a - 1 будет выполнятся до тех пор пока значение слота a не станет равным нулю
Итератор for
Итератор используется для перебора всех значений массива, либо ключей из словаря
arr = [3,2,1]
for(val in arr)
{
print(val)
}
output:
3
2
1
В данном примере цикл последовательно перебирает значения массива и заносит их во временную переменную “val” соответственно для каждого элемента массива выполняется окруженный фигурными скобками скрипт “print(val)” выводящий значение в отладочное окно
Работа с массивами
Объявление массива:
arr = [1,2,3] // создает массив с тремя элементами со значениями 1,2,3
Доступ к элементам массива:
first = arr[0] // получить первый элемент массива
last = arr[-1] // получить последний элемент массива
last = arr[-2] // получить предпоследний элемент массива
arr[0] = 7 // изменить значение первого элемента
Функции работы с массивом:
len = arr.length // получить длинну массива
arr.push(4) // добавить в конец массива элемент со значением '4'
arr.unshift(0) // добавить в начало массива элемент со значением '0'
arr.pop() // удалить последний элемент массива
arr.shift() // удалить первый элемент массива
arr.slice(start,end) // возращает часть массива начиная с позиции 'start' и заканчивая если указано позицией 'end'
arr.splice(start,end) // удаляет часть массива начиная с позиции 'start' и заканчивая если указано позицией 'end'
<span id="работа-со-словарем-объектом"></span>
== Работа со словарем (объектом) ==
Объявление словаря:
<syntaxhighlight lang="js">dic = { n: 1, s: "Wine" }
Доступ к значениям словаря:
a = dic.n // доступ к полю с именем "n" через точку
a = dic["n"] // доступ к полю с именем "n" через оператор доступа
dic["food"] = "milk" // добавление в словарь пары ключ-значение
Работа со строками
Объявление строковых слотов:
str = "hello" // используя двойные кавычки
str = 'hello' // используя одинарные кавычки
Операции со строками:
base = 'http://imgs/'
url = base + 'img1.png' // сложение строк
Подстановка слотов в строки:
a = 5
str = "a = $a" // вместо $a будет подставлено значение слота a
print(str) // выведет: "a = 5"
Вставка выражений в строки:
Выражения можно вставлять в строки, обрамляя их двойными фигурными скобками:
str = "2 + 3 = {{2+3}}" // вычислит выражение и вставит результат в строку
print(str) // выведет: "2 + 3 = 5"
Функции работы со строками:
str = "hello"
len = str.length // получить длинну строки
Функции перехода
step(state) - установка шага перехода по умолчанию в значение state (строка или значение слота $STATE)
goto(state) - мгновенный переход в шаг state (строка или значение слота $STATE)
== Оператор ```button```
Данный оператор добавляет в интерфейс кнопку с необходимым текстом и логику, которая должна быть выполнена при нажатии
button('click me') // текст в кнопке
{
// скрипт, который выполнится после нажатия
print('button was clicked!')
step('STATE_AFTER_CLICK')
}
Функции работы с контентом
text(obj) - вывести в текущее сообщение текст. Если obj - это сторока, то она выводится не зависимо от текущего языка. Если obj - объект, то он должен состоять из двубуквенных ключей (идентификаторов языка: en, ru,…) со строковыми значения на этих языках.
text("Hi world!")
text({ en: "Hi world!", ru: "Привет мир!", es: "¡Hola mundo!"})
images() - создать новую строку картинок. Каждый последующий вызов image будет добавляться в эту строку, пока снова не будет вызван images().
URL = "https://qudata.com/qubot/im/"
images()
image(URL + "owl_a.png")
image(URL + "owl_b.png")
image(url) - вывести в текущее сообщение картинку, находящуюся по адресу url.
URL = "https://qudata.com/qubot/im/"
image(URL + "owl_a.png")
get_check(list) - записать в слот с именем list значения кнопок типа check (1 - нажата, 0 - отжата)
set_check(list) - задать значения кнопок типа check из массива list.
CHECK = [0,1,0]
set_check(CHECK)
get_radio(list) - записать в слот с именем list значения кнопок типа radio (1 - нажата, 0 - отжата). Единица будет одна.
set_radio(list) - задать значения кнопок типа radio из массива list.
Отладчные функции
print(args) - вывод информации в окно отладки
Округление
floor(val) - округление чисел в меньшую сторону:
floor(5.8) // 5
floor(-6.1) // -7
trunc(val) - отбрасывание дробной части:
trunc(5.51) // 5
trunc(-6.99) // -6
ceil(val) - округление чисел в большую сторону:
ceil(5.15) // 6
round(val, num) - округление val до num чисел после запятой:
round(3.14159265, 2) // 3.14
Случайные числа
randint(min,max) - возвращает целое случайное число в диапазоне [min,max].
random() - возвращает случайное вещественное число в диапазоне [0,1].