53
clauses
book('Использование Турбо-Пролога', 'Ц,Ин,
Д.Соломон', 'Мир', 1998).
book('Программирование на языке Пролог для
искусственного интеллекта', И. Братко 'Мир',
1995).
book('Турбо-Пролог в сжатом изложении', 'А.Янсон',
'Мир', 1997)
..............................
create_database:–
book(Title, Author, Publ, Year) (1)
assertz(dbook(Title, Author, Publ, Year)
fail.
create_database:– ! (2)
Целевое утверждение данной программы create_database
представляет процедуру состоящую из правила (1) и правила (2).
Правило (1) использует метод откат после неудачи, которая создается
предикатом fail. Первая подцель правила (1) присваивает значения
переменным Titlе, Author, Publ, Year. Вторая подцель заносит эти
переменные в динамическую базу данных. Предикат book – предикат
статической БД, находящейся в разделе clauses.
Предикат dbook – предикат динамический БД.
Пример 6.2.2.
/*процедура создания динамической БД путем добавления новых
утверждений в БД */
create_database:– (1)
write (''Введите название книги''), nl,
readln (Title), Title <>''*'',
write (''Введите автора книги''), nl,
readln (Author),
write (''Введите название издательства''), nl,
readln (Publ),
write (''Введите год издания''), nl,
readln (Year),
assertz (dbook(Title, Author, Publ, Year),
create_database.
create_database:– !. (2)
Процедура состоит из рекурсивного правила (1) и правила (2).
Создание динамической БД происходит до тех пор, пока не будет введен
признак конца ввода (
''
*
''
)