Введение в проблему искусственного интеллекта


ТЕМА: АГРЕГАТЫ ФАКТОВ - часть 2


  Sp = integer* ( Sp = Kol*)

  Kod = string

predicates

  tmc ( P, Kol, Cena)

  sum ( Sp, Sum)

goal

  write ( “ Введите код”),

  readln ( Kod),

  nl,

  findall ( Kol, tmc ( Pos1, Kod, Kol, Cena), Sp),

  sum (Sp, Sum),

  write ( “Количество =” , Sum)

clauses

  tmc ( “ 001”, “001”, 45, 80)

  sum ( [ ], 0).

  sum ( [ H/T ], Sum) if

              sum ( T, Sum1).

              Sum = H + Sum1.

 

В языке имеется возможность работы с динамической базой фактов, в которой м. объединяться как однородные, так и разнородные предикаты-факторы.

База фактов — нечто среднее м-у реляционной СУБД и массивом. В момент активизации все факты базы переносятся в ОЗУ с внешнего зап. устройства. Для работы с БД создается новый раздел программы, в кот. определяются прототипы предикатов-фактов, объедененных в базу.

DATABASE

прототипы в этом разделе описываются по тем же правилам, что и в predicates.

Раздел database записывается перед разделом predicates и предикаты, кот. в нем описываются не могут описываться в разделе predicates, а ис-ся в разделах clouses и goal. Активизация базы происходит в области ОЗУ, кот. по умолчанию имеет тип домена dbasedom. Этот тип программист не указывает явно в программе в разделе domains, но м. его использовать в качестве аргументов встроенных предикатов языка, что позволяет сократить текст программы при работе с базой.

 

domains

  dbasedom = tms(Post, Kod, Kol, Cena)

  database

              tmc (Post, Kod, Kol, Cena)

 

Возможно дополнение базы новыми фактами, удаление устаревших, корректировка отдельных фактов. Все операции в базе фактов производятся с помощью стандартных встроенных предикатов:

asserta

              ( < факт >) ( dbasedom) :   (i)

assertz

— используется для добавления нового факта в базу. Факт д.б. обязательно определен и относится к области dbasedom. При использовании предиката asserta факт добавляется перед остальными фактами имеющегося предиката.

assertz — добавление после — “ —




Начало  Назад  Вперед