Глава 15 основные функции clips 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Глава 15 основные функции clips



Функциями в CLIPS называются предопределенные системные действия, обрабатывающие заданный набор аргументов и возвращающие некоторый результат. Функции могут вводиться в диалоговом окне CLIPS с клавиатуры или использоваться в правилах, обработчиках сообщений, определенных пользователем в функциях или родовых функциях.

CLIPS предоставляет довольно большой набор функций, способный удовлетворить любые потребности пользователя, среди которых всевозможные ло­гические и математические функции, функции работы со строками и со­ставными величинами, функции ввода/вывода, процедурные функции, функции для работы с методами родовых функций, функции, ориентиро­ванные на поддержку объектно-ориентированных возможностей, а также функции для работы с конструкторами deftemplate, deffacts, defrule, defglobal, deffunction, defgeneric, defmethod, defmodule.

Логические функции

 

CLIPS предоставляет довольно богатый набор логических функций, описанию которых целиком посвящен этот раздел.

Среди всевозможных логических функций отдельной подгруппой выделяются предикатные функции, назначение которых заключается в тестировании своего единственного аргумента на принадлежность к тому или иному типу. Ниже приведен обобщенный синтаксис предикатных функций CLIPS.

Определение 15.1. Предикатные функции

(<имя-предикатной-функции> <выражение>)

При выполнении предикатной функции вычисляется выражение, переданное ей в качестве единственного параметра, и проверяется соответствие па­раметра некоторому типу. Если принадлежность к проверяемому типу подтверждается, функция возвращает значение true, в противном случае — false. Полный список предикатных функций приведен в табл. 15.1.

 

Таблица 15.1. Предикатные функции

Функция Описание
numberp Проверка, относится ли аргумент к типу float или integer
floatp Проверка, относится ли аргумент к типу float
integerp Проверка, относится ли аргумент к типу integer
lexemep Проверка, относится ли аргумент к типу symbol или string
stringp Проверка, относится ли аргумент к типу string
symbolp Проверка, относится ли аргумент к типу symbol
wordp Синоним функции symbolp
evenp Проверка целого числа на четность
oddp Проверка целого числа на нечетность
multifieldp Проверка, является ли аргумент составным полем
sequencep Синоним функции multifieldp
pointerp Проверка, относится ли аргумент к типу external-address

 

Другими полезными логическими функциями являются eq и neq, синтаксис которых приведен ниже.

Определение 15.2. Функции eq и neq

(eq <выражение1> <выражение2>+)

(neq <выражение1> <выражение2>+)

Функция eq возвращает значение true, если ее первый аргумент равен вто­рому и всем последующим аргументам (если они присутствуют). В против­ном случае функция возвращает значение false. Важной особенностью функции является то, что она сравнивает как значения аргументов, так и их типы. Например, результатом выполнения выражения (eq 3 3.О) будет значение false, т. к. число 3 принадлежит типу integer, а число 3.0 — типу float.

Функция neq, напротив, возвращает значение true, если ее первый аргумент не равен второму и последующим аргументам, и значение false — в противном случае. В примере 15.1 показано использование функций eq и neq.

 

Пример 15.1. Использование функций eq и neq

 

(eq foo bar mumble foo)

(eq foo foo foo foo)

(eq 3 4)

(neq foo bar yak bar)

(neq foo foo yak bar)

(neq 3 a)

 

Результат приведенных выше вызовов функций eq и neq представлен на рис. 15.1.

 

Рис. 15.1. Использование функций eq и neq

 

Помимо функций eq и neq, CLIPS предоставляет несколько функций, предназначенных для сравнения чисел. Общий синтаксис таких функций приведен ниже.

 



Поделиться:


Последнее изменение этой страницы: 2021-03-10; просмотров: 99; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.15.15 (0.006 с.)