Встроенные предикаты VIsual Prolog для работы с внутренней базой данных 


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



ЗНАЕТЕ ЛИ ВЫ?

Встроенные предикаты VIsual Prolog для работы с внутренней базой данных



У стандартных предикатов баз данных Visual Prolog (assserta,assertz,retract, retactall, consult и save) может быть один или два аргумента. Необязательный второй аргумент - это имя внутренней базы данных.

Consult(ИмяФайлаДос)

(string) - (i)

Consult(ИмяФайлаДос,ИмяВнутреннейБазыДанных)

(string,InternalDatabaseName) - (i,i)

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

Предикат consult с одним аргументом (без имени базы данных) позволяет считывать факты, объявленные в стандартном разделе database.

При вызове предиката consult с двумя аргументами извлекаются факты только базы данных с именем ИмяВнутреннейБазыДанных.

/*===========================================================

Примеры добавления фактов базы данных из файла с помощъю предиката consult с

одним и двумя аргументами */

DOMAINS

ILIST=INTEGER*

FACTS

p1(INTEGER,CHAR,REAL,STRING,SYMBOL,ILIST)

p2(INTEGER)

GOAL

consult("dd.dat"), % чтение фактов р1 и р2 из файла dd.dat для текущей базы данных

retract(p1(1,_,_,_,_,_)),% удаление факта р1 из теущей базы данных, описание предиката см.ниже

save("dd. dat"). % сохранение фактов р1 и р2 текущей базы данных в файле dd. dat

/*---------- Пусть содержимое файла dd. dat было:-------------

p1(1,'a',44.44,"Turbo","Prolog",[1,2,3,4])

p1(2,'b',-4.444E-98,"---","++++",[])

p2(88)

p2(99)

Проверьте содержимое файла dd. dat после одноразового выполнения программы.

/*===========================================================

Save(ИмяФайлаДос)

(string) - (i)

Save(ИмяФайлаДос,ИмяВнутреннейБазыДанных)

(string,DatabaseName) - (i,i)

Оба предиката служат для сохранения фактов внутренней базы данных в файле с именем ИмяФайлаДос. Предикат save с одним аргументом сохраняет все факты стандартной базы данных, описанные в программе, в указанный файл (см.пример выше для consult с одним аргументом). Предикат save с двумя аргументами сохраняет в файле ИмяФайлаДос все факты базы данных ИмяВнутреннейБазыДанных.

/*===========================================================

Пример работы предиката save с одним аргументом */

DOMAINS

LIST = INTEGER*

DATABASE

fact1(INTEGER,STRING,LIST)

fact2(INTEGER,STRING)

CLAUSES

fact1(1,"факт1",[1,2,3]).

fact1(2,"факт2",[1,3]).

fact1(3,"факт2",[3,2,1]).

fact2(1,"один").

fact2(1,"один ещё раз").

fact2(2,"два").

Goal

save("fact. dat"). /* сохранение фактов fact1 и fact2 стандартной базы данных в файле fact. dat */

===========================================================*/

Следующие три предиката предназначены для добавления факта в текущую базу данных.

Assert(Отношение)

(InternalDatabaseDomain) - (i)

Использование предиката assert в точности соответствует использованию предиката assertz.

Asserta(Отношение)

(InternalDatabaseDomain) - (i)

Предикат asserta добавляет новый факт ОбъектВнутреннейБазыДанных к базе данных перед существующими фактами - в начало базы данных.

Assertz(Отношение)

(InternalDatabaseDomain) - (i)

Предикат assertz добавляет новый факт ОбъектВнутреннейБазыДанных после существующих фактов - в конец базы данных.

 

/*===========================================================

Пример работы предиката asserta c двумя аргументами */

DOMAINS

имя,адрес,название_города = STRING

возраст,код = INTEGER

FACTS - люди

человек(имя,возраст,адрес,код)

FACTS - города

город(код,название_города)

GOAL

assertа(человек("Петр",26,"",8600),люди), % все факты будут

assertа(человек("Лука",27,"",8600),люди), % добавляться в

assertа(человек("Хома",23,"",9800),люди), % начало соответ-

assertа(город(8600,"Жмеринка"),города), % ствующей базы

assertа(city(6800,"Париж"),города). % данных - люди или города

/*=========================================================*/

Предикат retract обеспечивает удаление первого факта базы данных (стандартной или соответствующей второму аргументу предиката - ИмяВнутреннейБазыДанных) соответствующего первому аргументу предиката Отношение. Предикат истинен, если удалось удалить что-либо из базы данных.

Retract(Отношение)

(InternalDatabaseDomain) - (_)



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 868; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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