русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Определение 2.2.1. Синтаксис конструктора deftemplate


Дата добавления: 2014-11-28; просмотров: 3009; Нарушение авторских прав


(deftemplate <имя-шаблона>[<необязательные-комментарии>] [<определение-слота>*])

<определение-слота> ::= <определение-простого-слота>|<определение-составного-слота>

<определение-простого-слота> ::= (slot <имя-поля> <атрибуты-шаблона>)

<определение-составного-слота> ::= (multislot <имя-поля> <атрибуты-шаблона>)

<атрибуты-шаблона> ::= <атрибут-значение-по-умолчанию>|<атрибут-ограничения>

<атрибут-значение-по-умолчанию> ::= (default ?DERIVE I ?NONE |<Выражение>)|

(default-dynamic <Выражение>)

Имена шаблонов и слотов должны быть значениями типа symbol, кроме того, на имена шаблонов распространяется запрет на использование некоторых слов.

Комментарии являются необязательными и, как правило, описывают назначения шаблона. Комментарии необходимо заключать в кавычки. Кроме данного типа комментариев в конструкторе deftempiate также применимы обычные комментарии CLIPS, начинающиеся с символа ; . Отличие этих комментариев заключается в том, что комментарии, начинающиеся с сим­вола ; , полностью игнорируются системой CLIPS, а комментарии, следую­щие после имени шаблона и заключенные в кавычки, сохраняются в базе знаний системы. Эти комментарии доступны при просматривании опреде­ления шаблона. Определим в среде CLIPS следующий шаблон:

Пример 2.2.2. Применение конструктора deftemplate

(deftemplate MyObject "Template for storage name and location"

; Slots for storage name and location

(slot name) ;slot for name of object

(slot location) ; slot for location of object

Комментарии "Template for storage name and location" сохранены в памяти системы и отображаются вместе с определением шаблона.

Рис. 2.2.2.Использование комментариев в конструкторе deftemplate



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

При создании шаблона с помощью конструктора deftemplate каждому полю можно назначать определенные атрибуты, задающие значения по умол­чанию или ограничения на значение слота. Рассмотрим эти атрибуты под­робней.

<Атрибут-значение-по-умолчанию> определяет значение, которое будет ис­пользовано в случае, если при создании факта не задано конкретное значе­ние слота. В CLIPS существует два способа определения значения по умол­чанию, поэтому в конструкторе deftemplate предусмотрено два различных атрибута, задающих значения по умолчанию: default и default-dynamic.

Атрибут default определяет статическое значение по умолчанию. С его по­мощью задается выражение, которое вычисляется один раз при конструиро­вании шаблона. Результат вычислений сохраняется вместе с шаблоном. Этот результат присваивается соответствующему слоту в момент объявления нового факта. В случае если в качестве значения по умолчанию используется ключевое слово ?derive, то это значение будет извлекаться из ограничений, заданных для данного слота. По умолчанию для всех слотов установлен ат­рибут default ?DERIVE.

В случае если в место выражения для значения по умолчанию используется ключевое слово ?none, то значение поля обязательно должно быть явно за­дано в момент выполнения операции добавления факта. Добавление факта без определения значений полей с атрибутом default ?none вызовет ошибку.

Атрибут default-dynamic предназначен для установки динамического значе­ния по умолчанию. Этот атрибут определяет выражение, которое вычисля­ется всякий раз при добавлении факта по данному шаблону. Результат вы­числений присваивается соответствующему слоту.

Простой слот может иметь только одно значение по умолчанию. У состав­ного слота может быть определено любое количество значений по умолча­нию (количество значений по умолчанию должно соответствовать количест­ву данных, сохраняемых в составном слоте).

Ниже приведен пример использования атрибута, устанавливающего значение по умолчанию:

Пример 2.2.3. Использование атрибутов значения по умолчанию

(deftemplate foo

(slot w (default ?NONE))

(slot x (default ?DERIVE))

(slot у (default (gensym*)))

(slot z (default-dynamic (gensym*))))

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

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

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

Конструктор deffacts

Помимо конструктора deftemplates, CLIPS предоставляет конструктор deffacts, также предназначенный для работы с фактами. Данный конструк­тор позволяет определять список фактов, которые будут автоматически до­бавляться всякий раз после выполнения команды reset, очищающей теку­щий список фактов. Факты, добавленные с помощью конструктора deffacts, могут использоваться и удаляться так же, как и любые другие факты, добав­ленные в базу знаний пользователем или программой, с помощью команды assert.



<== предыдущая лекция | следующая лекция ==>
Инициализация фактов | Определение 2.2.2. Синтаксис конструктора deffacts


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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