Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Дополнительные средства. (defrule take-a-vacation




Пример.

Пример.

Пример.

Переменные

Пример.

(defrule take-a-vacation

(work clone)

(money plenty)

(reservations made)

= >

(printout t "Let's go!" crlf))

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

Идентификатор переменной всегда начинается с вопросительного знака, за которым следует ее имя. В общем случае формат переменной выглядит следующим образом:?<имя переменной>.

 

?sensor

?noun

?color

 

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

 

(defrule make-quack

(duck-sound?sound)

= >

(assert (sound-is?sound))

 

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

(defrule addition)

(numbers?x?y)

=>

(assert (answer (+?x?y)))

(bind?answer (+?x?y))

(printout t "answer is "?answer crlf))

 

Кроме значения самого факта, переменной может быть присвоено значение адреса факта. Это может оказаться удобным при необходимости манипулировать фактами непосредственно из правила. Для такого присвоения используется комбинация «<−».

 

Пример. Присвоение переменой значения адреса факта

(defrule get-married

?duck <- (bachelor Dopey)

=>

(retract?duck))

 

Для определения глобальных переменных, которые видны всюду в среде CLIPS, используется конструкция defglobal. К глобальной переменной можно обратиться в любом месте, и ее значение остается независимым от других конструкций. Глобальные переменные CLIPS подобны глобальным переменным в процедурных языках программирования, но они значительно слабее типизированы (на них не налагаются ограничения хранения данных только одного типа).

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

 




Поделиться с друзьями:


Дата добавления: 2014-12-29; Просмотров: 417; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.