Базы и банки знаний

Prolog имеет внутренние подпрограммы для выполнения сопоставления и

Базы и банки знаний

Информация

Компьютеры, программирование

Другие материалы по предмету

Компьютеры, программирование

Сдать работу со 100% гаранией
чтение*/

openread(datafile,Datafile),

/*открывает индексный файл на модификацию*/

openmodify(indexfile,Indexfile),

/*испльзуется вспомогательный модуль, который осуществляет поиск

нужной записи и её удаление */

dbret1(Term,-1),

/*закрывает файл данных*/

closefile(datafile),

/*закрывает индексный файл*/

closefile(indexfile).

dbret1(Term,Datpos):-

Datpos>=0,

filepos(datafile,Datpos,0),

readdevice(datafile),

readterm(dbasedom,Term),!,

filepos(indexfile,-9,1),

 

/*Этот предикат вызывает запись на диск содержимого внутреннего буфера индексного файла. Таким образом dbret1 предотвращает возможность работы с

данными, которые были удалены до этого.*/

flush(indexfile),

writedevice(indexfile),

writef("%7.0\n",-1),

readdevice(keyboard),

writedevice(screen).

 

/*осуществляет поиск нужного индекса в индексном файле*/

dbret1(Term,_):-

readdevice(indexfile),

readreal(Datpos1),

dbret1(Term,Datpos1).

/* Правило dbrd извлекает информацию из файла datafile */

dbrd(Term,Indexfile,Datafile):-

openread(datafile,Datafile),

openread(indexfile,Indexfile),

 

/*испльзуется вспомогательный модуль dbaaccess, осуществляющий

поиск и выборку данных из файла БД*/

dbaaccess(Term,-1),

closefile(datafile),

closefile(indexfile).

 

/*Этот предикат читает данные, логически связанные со значением индекса,

задаваемым переменной Datapos.*/

dbaaccess(Term,Datpos):-

Datpos>=0,

filepos(datafile,Datpos,0),

readdevice(datafile),

readterm(dbasedom,Term).

 

/*Это правило пытается найти в базе такую запись, индекс которой присутствует в индексном файле. Если индекс находится, то правило успешно; если нет, то неуспешно.В случае успеха переменная Term получает нужные пользователю значения*/

dbaaccess(Term,_):-

readdevice(indexfile),

readreal(Datpos1),

dbaaccess(Term,Datpos1).

/* Правила работы со списками */

/*Чтение списка*/

readlist([H|T]):-

write("> "),nl,

readln(H),!,

readlist(T).

readlist([]).

/*Вывод списка*/

writelist([H|T]):-

write(H, " "),

writelist(T).

writelist([]).

/*Присоединение списка*/

append([],L,L).

append([N|L1],L2,[N|L3]):-

append(L1,L2,L3).

/*Удаление элемента списка*/

delete_it(_,[],[]).

delete_it(X,[H|T],L):-H=X,!,delete_it(X,T,L).

delete_it(X,[H|T],[H|L]):-delete_it(X,T,L).

 

 

 

 

 

 

 

 

 

 

Выводы.

 

Была написана программа, реализующая поставленную задачу. При написании программы автор ознакомился с основными понятиями, касающимися баз данных, использованием предикатов и правил для работы с файлами, списками, элементами списков. Работа над составлением программы позволила детально ознакомиться с вопросами организации данных в БД и извлечения из неё необходимой пользователю информации.

 

 

 

Литература.

Ц. Ин, Д. Соломон «Использование Турбо-Пролога» , Издательство «Мир»

Похожие работы

<< < 1 2 3