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

3) Функция «.My_name»

В переменную аргумент помещается уникальное имя агента, присвоенное ему при создании автоматически или разработчиком.

Например, .my_name(I).

После выполнения команды значением переменной можно манипулировать в теле плана или его контекстных ограничениях.

Функции над строками и списками

  1. Функция «.concat»

Объединяет (конкатенирует) аргументы в строки и списки. Имеет N аргументов.

Первые N-1 аргументы определяю конкатенируемые величины. Это могут быть любые термы, но термы, не являющиеся строками и списками автоматически преобразуются в строки.

Последний («N»-ый) параметр это переменная или список, куда будет помещен результат.

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

a) .concat("a","b",X): В переменную X помещается строка "ab".

b) .concat("a b",1,a,X): В переменную X помещается строка "a b1a".

c) .concat([a,b,c],[d,e],[f,g],X): В переменную X помещается список [a,b,c,d,e,f,g].

2) Функция «.Length»

Определяет или проверяет длину строки или списка. Первый аргумент – проверяемая величина, второй – переменная для хранения результата или константа для сравнения.

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

a) .length("abc",X): в X помещается 3.

b) .length([a,b],X): в X помещается 2.

c) .length("a",2): возвращает false – размер строки не равен 2.

3) Функция «.Min»

Ищет минимум среди списка заданных (возможно разнородных) величин. Может использоваться для проверки истинности суждений о минимуме. Работает с двумя параметрами, назначение которых понятно из следующих примеров.

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

a) .min([c,a,b],X): в результате элемент «а» будет помещен в переменную Х, поскольку в алфавите он расположен раньше других букв.

b) .min([b,c,10,g,f(10),5,f(4)],X): здесь Х станет равным 5, поскольку сравнивается как бы простота элементов списка. Самые сложные элементы – функции с аргументами, проще – величины, обозначаемые буквами, самые простые – числа. Внутри названных категорий элементов тоже происходит сравнение. Среди чисел - ищется минимальное по величине; среди буквенных последовательностей – самые короткие и состоящие из букв, расположенных ближе к началу алфавита; среди функций – с самым маленьким числом аргументов, каждый из которых тоже должен быть максимально «простым».

c) .min([3,2,5],2): результат «true» - 2 это минимальный элемент в списке.

d) .min([3,2,5],5): результат «false».

e) .min([],X): результат «false» - нечего помещать в переменную X.

4) Функция «.Max»

Обратная операция по отношению к «.min». Назначение аргументов то же самое.

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

a) .max([c,a,b],X): в X помещается «c».

b) .max([b,c,10,g,f(10),5,f(4)],X): в X помещается «f(10)».

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

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

e) .max([],X): возвращает false.

5) Функция «.Member»

Проверяет, содержится ли некоторый терм в списке. Если терм свободная переменная, то последовательно (если используется в цикле) унифицирует ее с элементами списка.

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

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

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

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

d) +!start <- for ( .member(X,[a,b,c]))

{ .print(X)

}. – в переменную X последовательно помещаются элементы списка, «[a,b,c]» с целью выполнения над этими элементами операций, предусмотренных в теле цикла (в данном случае это просто печать в консоль вывода).