Qubot Script/ru

From QuData
Revision as of 15:31, 25 March 2022 by Slavinsky (talk | contribs)
Jump to navigation Jump to search

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 - логическое ‘ИЛИ’

Например:

res = (a and b) or c

Арифметические операции

  • + - сложение
  • - - вычитание
  • * - умножение
  • / - деление

Например:

res = 2+3-4*5+(1.5-0.2/2)

Условный оператор

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'

Работа со словарем (объектом)

Объявление словаря:

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' // сложение строк

Функции перехода

step(state) - установка шага перехода по умолчанию в значение state (строка или значение слота $STATE)

goto(state) - мгновенный переход в шаг state (строка или значение слота $STATE)

Функции работы с контентом

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")

button(obj) - вывести в текщее сообщение кнопку. Аргумент obj аналогичен действию text.

button("Hi world!")

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].