Изменения в базе данных

 

asserta(факт)

(dbasedom): (i)

 

Добавляет новый факт перед остальными фактами того жe предиката

в оперативную базу данных. Факт должен быть термом, который

относится к области определения dbasedom.

 

assertz(факт)

(dbasedom): (i)

 

Добавляет новый факт после остальных фактов того же предиката.

 

Геtгасt(факт)

(dbasedom): (i)

 

Убирает из оперативной базы данных первый факт, который

сопоставляется с указанным фактом.

 

save(имя_файла)

(string) :(i)

 

Пишет в файл с указанным именем все дизъюнкты из оперативной

базы данных.

 

consult(имя_файла)

(string): (i)

 

Добавляет в оперативную базу данных все дизъюнкты из указанного

именем файла, который был создан, например, .с помощью предиката

save.

Например, работать с адресником (создание, чтение, запись,добавление):

 

database person(string,string)

predicates adresa adresal(char)

clauses

adresa: -

not(person(_,)), /* имеются адреса? */

write("укажите имя файла адресов и/или <ВК>: "),

readln(X),

Х<>"",consult(X),faiI.

adresa: - •

nl,write("ввод или вывод адреса (о/ы): "), ••

readchar( X),wrlte(X),

adresa1(X),

nl,wrlte("eщe (д/н): "),

readchar(Y),wite( Y),

Y='д',!,adresa.

adresa: -

person(_,_), /* есть что-то записать? */

nl,write("HMH файла для хранения адресов и/или <ВК>: "),

readln(F),F<>"",save(F).

adresa.

adresal('о'):-

nl.

wrlte("укажите фамилию: ") ,readln(F),

wrlte("укажите адрес: "),readln(A),

not(person(F,A)), /* запись, если еще нет в БД */

asserta(person(F,A)),!.

adresa1('ы'): -

nl,wrlte("укажите фамилию: "),readln(F),

person(F,A),!,

nl,write(F," живет под адресом: ",А).

adresa1(' ы ):-!,

nl,wrlte(", нет адреса!"),nl.

adresa1(_). /* если ошибка, то ничего не делается */

goal

makewindow(1,121,0,"",10,0,15,80),adresa.