Лабораторная работа
Prolog. Динамические базы данных
Категория: | Лабораторная работа |
Дисциплина: | Функциональное и логическое программирование |
Город: | Беларусь, Минск |
Учебное заведение: | БНТУ, ФИТР |
Тег: | #PROLOG |
Стоимость работы: | 6 руб. |
Оценка: | 10 |
Объем страниц: | 8 |
Год сдачи: | 2021 |
Дата публикации: | 24.12.2021 |
Фрагменты для ознакомления
Отчет по лабораторной работе № 11
дисциплина: «Функциональное и логическое программирование»
ДИНАМИЧЕСКИЕ БАЗЫ ДАННЫХ
Цель работы: приобретение практических навыков составления и отладки программ, работающих с динамической базой данных
Задание общее по лабораторной работе:
Разработать самообучающийся англо-русский словарь, сущность которого в следующем. В программе имеется некоторый набор пар английских и соответствующих им русских слов. По введенному слову мы должны получить его перевод (с английского на русский или наоборот). Если нужного слова в словаре нет, должна быть предусмотрена возможность пополнения словаря этим словом с его переводом. В конце работы программы дополненная БД должна сохраняться в файле, а при новом запуске программы информация из файла заносится в динамическую БД, которая может опять пополняться. В программе предусмотреть возможность редактирования и удаления отдельных предложений БД. Выбор отдельных опций должен производиться из меню.
Дополнительные задачи к работе:
5. | Выбрать из словаря английские слова (вывод на экран по одному в строке), длина которых меньше заданной. |
Код программы:
DOMAINS
russian, english = string %русские и английские слова
file = f % file - стандартный тип домена (файловый), datafile - логическое имя файла.
list = english*
CONSTANTS
PATCH="D:\\"
FACTS %Ключевое слово facts (это синоним устаревшего слова database)
/*Раздел facts состоит из последовательностиобъявлений предикатов, описывающих соответствующую внутреннюю базу фактов.*/
dictionary(russian,english).
PREDICATES
nondeterm russian_words_english(russian, english)
nondeterm english_words_russian(russian, english)
nondeterm search(list, integer)
result
nondeterm repeat
show_menu
nondeterm process(char)
CLAUSES
dictionary("Мама", "mom").
dictionary("Папа", "dad").
dictionary("Бабушка", "grandmother").
dictionary("Дедушка","grandfather").
result :-
disk(patch),
existfile("database.dba"),!,
show_menu.
result :- %если файл не существует
disk(patch),
openwrite(f,"database.dba"), /*Если файл уже существует, то он уничтожается*/
closefile(f),
consult("database.dba"), /*загружаем факты во внутреннюю базу данных */
show_menu.
/*Правило повтора, обеспечивает циклическое выполнение расположенных после repeat под-целей*/
repeat.
repeat :- repeat. /*Цель repeat порождает новую ветвь вычислений. Для этого она должна быть */
Скриншоты результатов:


Контрольные вопросы:
1. Где располагается динамическая база данных?
2. Отличие статической базы данных от динамической базы данных.
3. Как можно статическую базу данных переслать в динамическую базу данных?
4. Где в программе объявляются предикаты статической и динамической баз данных?
5. Чем отличаются факты статической и динамической баз данных для одного и того же объекта?
6. Можно ли в разделе database объявить несколько предикатов динамической базы данных?
7. Может ли быть в программе несколько разделов database?
8. Могут ли факты динамической базы данных содержать переменные?
9. Можно ли в динамической базе данных разместить правила?
10. Как сохранить факты, размещенные в динамической базе данных, на диске?
11. Как можно удалить из динамической базы данных сразу несколько фактов?
12. Назначение стандартного предиката findall.
13. Способы занесения фактов в динамическую базу данных.
14. Можно ли изменить сохраненную в файл динамическую базу данных средствами обычного текстового редактора?
15. Требования к формату файла, в котором сохранена динамическая база данных.
Вывод: приобрели практические навыки в составлении и отладки программ, работающих с динамической базой данных.
308
1