Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пролог_шпоры.docx
Скачиваний:
35
Добавлен:
27.09.2019
Размер:
103.66 Кб
Скачать

35.Способы занесения информации в динамическую базу данных на Visual Prolog.

«Пишите что-нибудь из 34 вопроса и плюс это=)»

В ДБД содержаться только факты, но не правила.

Правило для занесения в ДБД информации из утверждений предиката player служит:

assert_database:-

player (Name, Team, Number),

assertz (dplayer (Name, Team, Number)),

% Добавление указанного факта в ДБД

fail.

assert_database:-!.

36.Предикаты Турбо-Пролога для работы с базой данных.

Для работы с динамической БД могут использоваться встроенные предикаты:

asserta(<факт>) (dbasedom) : (i) - занесение нового факта в начало динамической БД;

assertz(<факт>) (dbasedom) : (i) - занесение нового факта в конец динамической БД;

retract(<факт>) (dbasedom) : (i) - - удаление утверждения (одного) из динамической БД;

retractall(<факт>) (dbasedom) : (i) - - удаление всех утверждений для указанного предиката (параметр <факт>) из динамической БД.

Домен динамической базы данных dbasedom объявляется автоматически для каждого предиката из раздела facts, поэтому описывать его в разделе domains не нужно.

save(ИмяФайла) (string) : (i) - запись на диск динамической БД;

consult(ИмяФайла) (string) : (i) - добавление текстового файла, сохраненного ранее предикатом save, к динамической базе данных.

findall(Переменная,Терм,Список) : (i,i,o) – сбор из БД объектов Переменная в список Список. Параметр Переменная должна являться одним из аргументов предиката Терм. Список должен быть описан в разделе domains. Например, подцель findall(Name,dplayer(Name,_,_),L) сформирует список L фамилий всех футболистов, описанных в динамической базе данных предикатом dplayer.

Иногда бывает предпочтительно иметь часть информации БД в виде утверждений статической БД. Сразу после активизации программы эти данные заносятся в динамическую БД (с помощью предикатов asserta и assertz). В общем предикаты статической БД имеют другое имя, но ту же форму представления данных, что и предикаты динамической БД.

Предикат статической БД, соответствующий предикату dplayer динамической БД, есть

predicates

player(name,team,number)

clauses

player(“Адамов”,”Динамо”,4).

player(“Сидоров”,”Торпедо”,8).

Правилом для занесения в динамическую БД информации из статической БД является:

assert_database:-player(Name,Team,Number),

assertz (dplayer(Name,Team,Number)),fail.

assert_database:-!.

Используемый в этом правиле предикат fail позволяет перебрать все утверждения предиката player.

Подобным образом можно записать правило для очистки динамической БД:

clear_database:-

retract(dplayer(_,_,_)),fail.

clear_database:-!.

Вместо обращения к этому правилу можно записать подцель retractall(_).

быть описан в domains.

Вопросы:

1.Общие сведения о Прологе, области применения, отличия Пролога от других языков.

2.Основные элементы Visual Prolog: имена объектов, имена отношений, атомы, термы, константы, переменные, структуры.

3.Структура программы Visual Prolog, разделы программы.

4.Способы объявления доменов (типов) в VP

5.Объявление предикатов в программах Visual Prolog.

6.Утверждения программы Visual Prolog: факты и правила.

7.Раздел goal программы Visual Prolog.

8.Этапы программирования на Visual Prolog.

9.Декларативный и процедурный смысл программ на Прологе.

10.Сопоставление. Правила сопоставимости термов, структур.

11.Согласование целевых утверждений. Поиск с возвратом.

12.Арифметика Visual Prolog. Арифметические функции.

13.Рекурсия в Visual Prolog. Пример рекурсивного правила (вычисление факториала, возведение числа в целую степень).

14.Рекурсия и эффективность рекурсивных правил на Visual Prolog .

15.Стандартные предикаты Visual Prolog. Поточный шаблон стандартных предикатов.

16.Стандартные предикаты ввода-вывода Visual Prolog.

17.Отсечение в программах на Visual Prolog .

18.Отрицание в правилах Visual Prolog.

19.Использование составных объектов в Visual Prolog. Простые и составные структуры.

20.Списки как основная структура данных в Visual Prolog. Описание списков. Голова и хвост списка.

21.Правило ввода списка (три варианта), вывод списка в Visual Prolog.

22.Стандартные предикаты для работы со строками в Visual Prolog.

23.Преобразование строк в список символов или атомов в Visual Prolog.

24.Преобразование данных из одного типа в другой в Visual Prolog.

25.Преобразования данных, определяемые пользователем, в Visual Prolog.

26.Предикаты Visual Prolog для работы с файлами.

27.Описание файловых доменов, переадресация внешних устройств.

28.Запись данных в файл на Visual Prolog.

29.Чтение данных из файла на Visual Prolog.

30.Дозапись данных в конец существующего файла на Visual Prolog.

31.Создание меню средствами Visual Prolog.

32.Способы организации цикла в программах на Прологе.

33.Создание динамических баз данных средствами Visual Prolog.

34.Статические и динамические базы данных в программах на Visual Prolog.

35.Способы занесения информации в динамическую базу данных на Visual Prolog.

36.Предикаты для работы с динамическими базами данных в Visual Prolog.