- •Якимов с.П. Логическое программирование.
- •Красноярск
- •03.04.06 Г., протокол № 9
- •Содержание
- •Введение
- •1 Введение в логическое программирование
- •2 Основные конструкции логического программирования
- •3 Структура программы на языке Пролог
- •4 Вычислительная модель логических программ
- •5 Управление выполнением программы на языке Пролог
- •5.2Caf– метод (CutAndFail– отсечение и отказ)
- •6 Рекурсивные структуры данных
- •7 Программирование баз данных
- •7.1 Управление встроенной базой данных
- •7.2 Управление внешней базой данных
- •8.1 Основные конструкции логического программирования. Факты и правила(2 часа)
- •Контрольные вопросы
- •8.2 Вычислительная модель логических программ. Логические схемы(4 часа)
- •Контрольные вопросы
- •8.3 Управление выполнением программы на языке Пролог. Оконный интерфейс (4 часа)
- •Контрольные вопросы
- •8.4 Рекурсивные структуры данных. Списки (4 часа)
- •Контрольные вопросы
- •8.5 Программирование баз данных. Базы данных (4 часа)
- •Контрольные вопросы
- •Библиографический список
- •Приложение а Ключевые слова
Контрольные вопросы
Дайте определение списка.
Какие способы задания списков вы знаете?
Из чего состоит рекурсивное правило?
В чем состоит оптимизация хвостовой рекурсии?
8.5 Программирование баз данных. Базы данных (4 часа)
Цель
Требуется написать программу и реализовать ее на одной из версий языка Пролог
Задачи
Сформулировать постановку задачи.
Написать текст программы.
Сделать подробное описание назначения и использования всех правил, определенных в программе.
Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.
Составить и оформить протоколы работы программы по каждому контрольному примеру.
Ход работы
Организовать на диске в файле input.dbaбазу данных, занесите в нее два десятка
фактов, содержащих паспортные данные:
,
,
,
,
,
,
,
,
,
.
В качестве имени цепочки использовать
серию паспорта. Из предлагаемого ниже
списка, используя свою фамилию, имя и
отчество в качестве ключа, выберите
задания и определите соответствующие
правила обработки этой базы данных:
а) Используя дерево ссылок вывести данные в алфавитном порядке фамилий.
б) Используя дерево ссылок вывести данные в алфавитном порядке имен.
в) Диалог для занесения в базу данных нового факта. Предусмотреть контроль корректности вводимых данных.
г) Диалог для удаления факта из базы данных.
д) Вывод всех фактов, принадлежащих цепочке в окно.
е) Подбор потенциальных семейных пар (критерии подбора определить самостоятельно).
ж) Диалог для замены одного факта другим.
з) Диалог для копирования базы данных в файл output.dba.
и) Диалог для удаления базы данных с диска.
й) Поиск всех однофамильцев.
к) Поиск людей, имеющих одинаковые имена.
л) Поиск людей, чьи фамилии имеют одинаковые начальные буквы
м) Поиск самого старшего по возрасту
н) Поиск самого младшего по возрасту
о) Диалог для поиска всех фактов по произвольным полям
п) Используя дерево ссылок вывести данные в порядке старшинства по возрасту.
р) Замена паспорта в связи с потерей (меняется серия и номер).
с) Замена паспорта в связи со сменой фамилии (меняется серия, номер и фамилия).
т) Смена прописки (меняется адрес).
у) Смена семейного положения.
ф) Вывод всех занесенных в базу семейных пар.
х) Удаление всех фактов принадлежащих одной цепочке.
ц) Удаление всех фактов не принадлежащей одной цепочке.
ч) Поиск людей проживающих в одной квартире.
ш) Подсчет среднего числа людей проживающих в одной квартире
щ) Подсчет количества людей, нуждающихся в отдельной квартире (считать, что необходима одна дополнительная квартира, если вместе проживают две супружеские пары) , причем новая квартира необходима молодым.
ь) Подсчет семей, в которых муж и жена проживают отдельно.
э) Вывод списка людей, нуждающихся в отдельной квартире (считать, что необходима одна дополнительная квартира, если вместе проживают две супружеские пары), причем новая квартира необходима молодым.
ю) Вывод списка семейных пар, проживающих отдельно.
я) Удаление из базы всех данных о проживающих по указанному адресу (например, в связи со сносом дома).
Контрольные вопросы
Какие встроенные предикаты работы с базами данных вы знаете?
Какие встроенные предикаты ввода-вывода вы знаете?
Какая база данных называется внутренней, а какая внешней?
Каким образом описываются предикаты динамической базы данных?
