Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_по_jason_(итог).doc
Скачиваний:
79
Добавлен:
21.03.2016
Размер:
1.79 Mб
Скачать

6) Функция «.Nth»

Обращается к n-ному элементу списка. Может использоваться как для считывания элемента списка, так и для проверки его значения. Обладает 3-мя параметрами. Первый –индекс элемента, к которому производится обращение; второй – список элементов; третий – либо свободная переменная для считывания значения, либо константа для сравнения. Индексация элементов списка начинается с 0.

Примеры использования

a) .nth(0,[a,b,c],X): в переменную Х помещается «a».

b) .nth(2,[a,b,c],X): в переменную Х помещается «c».

c) .nth(0,[a,b,c],d): возвращает false – нулевой элемент списка не равен «d».

d) .nth(0,[a,b,c],a): возвращает true.

e) .nth(5,[a,b,c],X): возвращает error – в списке нет 5-го элемента.

7) Функция «.Sort»

Выполняет сортировку списка элементов по возрастанию. Может применяться как для получения отсортированного списка, так и для проверки того, является ли один список отсортированным вариантом второго. Среди разных типов элементов установлен следующий порядок сортировки: сначала упорядочиваются числа, потом атомы, потом выражения со структурой, потом списки (см. также пример «b», Функции «.min»).

Примеры использования

a) .sort([c,a,b],X): в переменную Х помещается «[a,b,c]».

b) .sort([b,c,10,g,casa,f(10),[3,4],5,[3,10],f(4)],X): в переменную Х помещается [5,10,b,c,casa,g,f(4),f(10),[3,4],[3,10]].

c) .sort([3,2,5],[2,3,5]): возвращает true.

d) .sort([3,2,5],[a,b,c]): возвращает false.

8) Функция «.Substring»

Функция проверяет, принадлежит ли элемент множеству. В частности можно проверять, является ли одна строка подстрокой другой строки, принадлежит ли элемент списку. Может использоваться для определения индекса очередного вхождения элемента. Обладает 2-мя или 3-мя параметрами. Первый – искомый элемент, второй – множество, в котором производится поиск, третий (может отсутствовать) – переменная, в которую помещается индекс вхождения.

Примеры использования

a) .substring("b","aaa"): возвращает false – «b» не входит в «a».

b) .substring("b","aaa",X): возвращает false – аналогично.

c) .substring("a","bbacc"): возвращает true.

d) .substring("a","abbacca",X): возвращает true и в переменную X помещается 0.

e ) +!start <-

for ( .substring("a","abbacca",X) )

{

.print(X)

}. - в переменную X последовательно помещаются все индексы вхождения подстроки в строку (0,3,6).

f) .substring("a","bbacc",0): возвращает false – подстрока «а» не расположена в позиции 0.

g) .substring(a(10),b(t1,a(10)),X): возвращает true и в переменную X помещается 5, поскольку первый и второй аргументы предварительно преобразуются в строки.

h) .substring(a(10),b("t1,a(10)"),X): возвращает true и в переменную X помещается 6.

i) .substring (asd,[dsd, sde, asd, frd]) : возвращает true

Функции над библиотекой планов

1) Функция «.Add_plan»

Добавляет новые планы в библиотеку планов агента в процессе его работы. Обладает двумя параметрами. Первый – строка или список строк, содержащих планы на языке AgentSpeak. Второй – необязательный параметр, указывающий источник получения данного плана. Если второй параметр опущен, то считается, что источником плана является сам агент, выполняющий данную функцию.

Примеры использования

a) .add_plan("+b : true <- .print(b)."): добавляет план «+b : true <- .print(b).» в библиотеку планов текущего агента с аннотацией [source(self)].

b) .add_plan("+b : true <- .print(b).", rafa): аналогично предыдущему примеру, только источник плана агент «rafa», поэтому аннотация будет [source(rafa)].

c) .add_plan(["+b : true <- .print(b).", "+b : bel <- .print(bel)."], rafa): добавляет 2 плана от агента rafa, представленных в виде списка.