Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prolog.doc
Скачиваний:
31
Добавлен:
12.03.2015
Размер:
929.28 Кб
Скачать

Считывание утверждений в базу данных

Для того чтобы добавить новые утверждения в базу данных, пользователь вводит

:- consult(user).

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

?- consult(user). /* начало считывания

/* утверждений

: утверждение 1 /* Обратите внимание, что

/* использован другой знак

/* приглашения системы

: утверждение 2

:$ /* символ конец_файла

?- /* снова появилось обычное

/* приглашение системы

Утверждения 1 и 2 добавлены к базе данных и будут выбраны при попытке Пролога доказать цель с теми же функтором и арностью. Более короткий вариант записи consult(user):

?- [user].

В данном случае используется тот же символ конца файла $.

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

?- consult(мой-файл).

считывает содержимое файла мой-файл. Целевое утверждение consult(X) всегда выполняется успешно. В результате утверждения из файла мой-файл добавляются в базу данных Пролога. Если при чтении одного из утверждений обнаруживается синтаксическая ошибка, выдается сообщение об этом утверждении, но обработка ос­тавшихся утверждений продолжается до тех пор, пока не будет най­ден конец файла. Целевое утверждение consult(X) нельзя передоказать. Если Х не является именем реально существующего файла или файл не может быть открыт, то выдастся сообщение об ошибке. При вводе программы из файла в ней иногда встречаются команды или директивы, относящиеся к системе Пролог. Они отличаются от ут­верждений, добавляемых в базу данных, тем, что им предшествует оператор ?- или :-.

Целевое утверждение consult(F) добавляет утверждения из фай­ла F в конец существующей базы данных. Пролог пытается сопоста­вить цель с добавленным утверждением только в том случае, если при прямом доказательстве попытка согласования существующего утверждения закончилась неудачей. Допускается замена новым утверждением утверждения, ранее записанного в базу данных, для че­го используется встроенный предикат reconsult. Он работает анало­гично предикату consult, но утверждения, считываемые в базу данных, замещают ранее записанные утверждения с теми же функтором и арностью.

В качестве аргументом предикатов consult и reconsult могут вы­ступать списки файлов. Например:

consult(['F1','F2',...]).

reconsult(['F1','F2',...]).

Предикаты сохранения и восстановления

После добавления новых утверждений в базу данных пользова­тель имеет возможность сохранить копию текущего состояния систе­мы и в следующем сеансе продолжить работу, начиная с записанного состояния. Для этого применяется предикат save. Утверждение

save ('мой-фаил').

сохраняет текущее состояние базы данных Пролога в файл, называе­мый мой-файл. Целевое утверждение save(X) нельзя передоказать. В случае, если не существует файла с именем Х или если его невоз­можно открыть, то выдастся сообщение об ошибке.

Успешно выполнив сохранение текущего состояния базы данных Пролога в файл, мы можем вернуться к прежнему состоянию, ис­пользуя предикат restore:

Restore('мой-файл').

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]