Предикаты для работы с базой данных в целом.

 

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

Предикат save cохраняет находящуюся в оперативной памяти базу данных в текстовом файле. Синтаксис этого предиката

 

save(DOS_file_name).

 

где DOS_file_name есть произвольное допустимое в MS DOS или PC DOS имя файла.

Для того, чтобы сохранить содержимое футбольной БД в файле с именем football.dba, требуется предикат

 

save("football.dba").

 

В результате все утверждения находящейся в оперативной памяти динамической БД будут записаны в файл football.dba.

Если файл с таким именем уже имелся на диске, то этот старый файл будет затерт. Следует поэтому использовать предикат save с известной долей осторожности.

Файл БД может быть считан в память (загружен) при помощи предиката consult, систаксис которого таков:

 

consult(DOS_file_name).

Для загрузки файла футбольной БД требуется выражение

 

consult("football.dba").

 

Предикат consult неуспешен, если файл с указанным именем отсутствует на диске, или если этот файл содержит ошибки, как, например, в случае несоответствия синтаксиса предиката из файла описаниям из раздела программы database, или если содержимое файла невозможно разместить в памяти ввиду отсутствия места.

Предикат readterm используется для чтения из файла объектов, относящихся к определенному в программе домену. Синтаксис этого предиката

 

readterm(Domain,Term).

где Domain задает имя домена, а Term - различные наборы значений объектов этого домена. Рассмотрим, к примеру, предикатное выражение

 

readterm(auto_record,auto(Name,Year,Price)).

 

В этом выражении Domain замещен на auto_record, Term - на auto(Name,Year,Price). Терм auto определяет все наборы значений этого домена.

Необходимое описание доменов должно выглядеть так:

domains

name = string

year = integer

price = real

auto_record = auto(name,year,price)

file = auto_file

 

Предикат readterm обычно используется для считывания с диска данных, записанных в форме утверждений. Так в нашем случае, например, в файле могут находиться такие строки:

 

auto("Pontiac",1984,8550)

auto("Chevrolet",1982,2300)

auto("Chevette",1982,1500)

auto("Toyota",1986,11000)

 

Для получения доступа к файлу сначала необходимо воспользоваться предикатами openread и readdevice, после чего можно применить readterm.

В нашем примере предикат readterm пытается сопоставить auto с соответствующими утверждениями из файла. Если предикат успешен, переменные Name, Year и Price получают значения из соответствующего утверждения. Эти значения можно вывести на экран видео или же на любое другое выводное устройство.

 

Предикат findall позволяет собрать все имеющиеся в базе данные в список, который может быть полезен при дальнейшей работе.

Так, findall можно использовать для получения списка имен всех игроков.

После того, как успешным будет предикат

 

findall(Name,dplayer(Name,_,_),Name_list)

 

переменная Name_list содержит список имен всех игроков.

 








Дата добавления: 2016-05-05; просмотров: 955;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.