Читайте также:
|
|
Предикаты, принадлежащие внутренней базе фактов, доступны точно так же, как и другие предикаты. Единственное видимое различие состоит в том, что объявления таких предикатов расположены в разделе database вместо раздела predicates. В следующем примере:
domains name=string sex=char database person(name,sex) clauses person("Helen",'F'). person ("Maggie",'F'). person("Suzanne",'F'). person("Per",'M').вы можете вызвать person с целью person (Name,'F') для нахождения всех женщин, или person ("Maggie",'F') для проверки того, что женщина по имени Maggie существует в вашей базе данных.
По своей природе предикаты в разделе database всегда недетерминированные. Так как факты могут быть добавлены в любой момент во время выполнения программы, компилятор всегда должен учитывать, что существует возможность найти альтернативные решения в ходе поиска с возвратом.
71. Организация ввода-вывода данных различных типов.
readln(StringVariable)
(string) – (o)
Считывает строку с текущего устройства ввода и связывает ее с заданной переменной StringVariable. Обычно чтение производится с клавиатуры. В качестве конца строки используется символ возврата каретки. Readln считывает до 150 символов в строке при вводе с клавиатуры и до 64К при вводе с других устройств.
readint(IntgVariable)
(integer) – (o)
Читает целое число с текущего устройства ввода и связывает его с заданной переменной.
readreal(RealVariable)
(real) – (o)
Читает действительное число с текущего устройства чтения и связывает его с заданной переменной RealVariable. Обычно чтение производится с клавиатуры.
readchar(CharVariable)
(char) – (o)
Читает символ с текущего устройства ввода и связывает его с заданной переменной CharVariable. В отличие от inkey устанавливает режим ожидания ввода.
inkey(CharVariable)
(Char) – (o)
Читает символ со стандартного устройства ввода. В отличие от предиката readchar выполнение программы не прерывается. Поэтому inkey применяют главным образом для организации циклов ожидания.
keypressed
Выполняется успешно, если нажата некоторая клавиша. В отличие от предиката inkey с помощью keypressed можно установить, нажата ли клавиша, не читая при этом введенный с клавиатуры символ.
write(Variable|Constant *)
Запись заданных значений переменных и констант в заданное активное окно на текущем устройстве вывода.
nl
Вызывает возврат каретки и перевод строки.
72. Прямая и обратная цепочки рассуждений.
CLIPS представляет собой систему, в которой строится прямая цепочка рассуждений, а порождающие правила в системе MYCIN используются в большинстве случаев для построения обратной цепочки рассуждений. В CLIPS всегда сопоставляются состояние рабочей памяти и левые части правил, а затем выполняются действия, предусмотренные правой частью выбранного правила. А в MYCIN ведущей в рассуждениях является правая часть правила. Если мы задались целью установить природу некоторого микроорганизма, то отбираются все правила, в правой части которых дается соответствующее заключение, и затем анализируется, предпосылки какого из них удовлетворяются текущими данными.
Проще всего представить отличие между прямой и обратной цепочками рассуждений в терминах грамматических правил, аналогичных представленным в разделе 5.1. Как было показано, набор правил:
· (Р1) $ › а$а
· (Р2) $ › b$b
· (РЗ) $ › с$с
Дата добавления: 2015-07-20; просмотров: 134 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Domains | | | Упражнение 168 |