Difference between revisions of "Qubot Script/ru"
| Line 34: | Line 34: | ||
Например: | Например: | ||
| − | <syntaxhighlight lang=" | + | <syntaxhighlight lang="vb"> |
a = true | a = true | ||
b = false | b = false | ||
Revision as of 06:26, 29 March 2022
Qubot Script
Qubot Script - это язык программирования, используемый для выполнения логических и математических операций при решении задач бота
Объявление слотов (переменных)
Объявление слотов происходит при первом присваивании в них значений
Например:
a = 7
объявляет слот с именем a и присваивает ему значение 7
Типы слотов
sInt = 7 // целочисленный
sFloat = 7.3 // вещественный
sStr = "hello" // строковый
sArr = [7, 7.3, "hello", sStr] // массив
sDic = { n: 1, s: "Wine" } // словарь
sBool = true // бинарный
Логические операции
- and - логическое ‘И’
- or - логическое ‘ИЛИ’
- not - отрицание ‘НЕТ’
Например:
a = true
b = false
c = true
res = not((a and b) or c)
Арифметические операции
- + - сложение
- - - вычитание
- * - умножение
- / - деление
Например:
res = 2+3-4*5+(1.5-0.2/2)
Комментарии
Комментарии используются для документирования фрагментов скрипта. Могут быть многострочыми и однострочными:
/*
Пример
многострочного
комментария
*/
a = 2253 // пример однострочного комментария
Условный оператор
Оператор if используется, если необходимо ветвление логики в зависимости от условия
a = 9
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'
Работа со словарем (объектом)
Объявление словаря:
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].