Все лабораторные работы выполняются и предоставляются на проверку на компьютере в среде Пролог. Для защиты лабораторных работ необходимо ответить на контрольные вопросы, указанные в конце лабораторной работы.
8.1 Основные конструкции логического программирования. Факты и правила (2 часа)
Цель
Требуется написать программу и реализовать ее на одной из версий языка Пролог
Задачи
1) Сформулировать постановку задачи.
2) Написать текст программы.
3) Сделать подробное описание назначения и использования всех правил, определенных в программе.
4) Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.
5) Составить и оформить протоколы работы программы по каждому контрольному примеру.
Ход работы
Как было показано в п. 1, генеалогическое дерево однозначно задается с помощью отношений мужчина, женщина, супруги, ребенок. Используя свою фамилию, имя и отчество в качестве ключа, выберите из таблицы 8.1 понятия и определите для них правила.
Таблица 8.1 – Варианты к лабораторной работе
а) сын;
б) дочь;
в) родной брат;
г) родная сестра;
д) сродная сестра;
е) сводная сестра;
ж) сродный брат;
з) сводный брат;
и) братья;
й) сестры;
к) дядя;
л) тетя;
м) племянник;
н) племянница;
о) родители;
п)жена;
р) теща;
с) внук;
т) кузина;
у) дедушка;
ф) бабушка;
х) прадед;
ц) прабабка;
ч) теща;
ш) свекор;
щ) свекровь;
ы) кузен;
э) кузина;
ю) невестка;
я) зять.
Например, если Вы– Бендер Остап Ибрагимович, то Вам необходимо разработать правила для отношений: Б) дочь; е) сводная сестра;н) племянница; д) сродная сестра; е);р) теща; О) родители; с) внук; т) кузина; а) сын; п)жена; И) братья; б);р);а);г) родная сестра;и);м) племянник; о);в) родной брат; и);ч) теща.
Контрольные вопросы
1 Что такое вопрос в логическом программировании?
2 Назовите виды вопросов.
3 Что называется переменной в логическом программировании?
4 Каковы требования к переменным в Прологе?
8.2 Вычислительная модель логических программ. Логические схемы (4 часа)
Цель
Требуется написать программу и реализовать ее на одной из версий языка Пролог
Задачи
1) Сформулировать постановку задачи.
2) Написать текст программы.
3) Сделать подробное описание назначения и использования всех правил, определенных в программе.
4) Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.
5) Составить и оформить протоколы работы программы по каждому контрольному примеру.
Ход работы
Сначала необходимо провести функциональный анализ логических схем. Исходными данными являются значения входных сигналов и таблицы истинности отдельных элементов схемы. Затем требуется составить таблицу истинности для заданной логической схемы. Вариант задания определяется по первым буквам фамилии, имени и отчества. В схемах используются следующие обозначения:
Повторитель
Out= In
Инвертор
Out= НЕ In
Дизъюнктор
Out= In1 ИЛИ In2
Конъюнктор
Out= In1 И In2
Таблица 8.2 – Варианты к лабораторной работе
а)
б)
в)
г)
д)
е)
ё)
ж)
з)
и)
й)
к)
л)
м)
н)
о)
п)
р)
с)
т)
у)
ф)
х)
ц)
ч)
ш)
щ)
э)
ю)
я)
Контрольные вопросы
1 В чем отличие языка Пролог от традиционных алгоритмических языков программирования?
2 Назовите основные конструкции логического программирования.
3 Что такое факт в логическом программировании?
4 Что такое правило в логическом программировании?
8.3 Управление выполнением программы на языке Пролог. Оконный интерфейс (4 часа)
Цель
Требуется написать программу и реализовать ее на одной из версий языка Пролог
Задачи
1) Сформулировать постановку задачи.
2) Написать текст программы.
3) Сделать подробное описание назначения и использования всех правил, определенных в программе.
4) Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.
5) Составить и оформить протоколы работы программы по каждому контрольному примеру.
Ход работы
Реализовать один из вариантов меню, показанных на рисунке. Для управления курсором использовать клавиши: «»– курсор на одну позицию вверх, «¯»– вниз, «»– влево, «®»– вправо, «Enter»– выход из меню с выбором текущей позиции курсора, «Esc»– выход из меню без выбора. Для выбора варианта меню в качестве ключа используйте первую букву своей фамилии:
а, б, в,
Царь
к, л, м
г, д, е,
Царевич
н, о, п,
Царь
Королевич
ж, з, и,
Король
р, с, т
Царевич
Сапожник
й)
Королевич
у)
Король
Портной
Сапожник
Портной
ф, х, ц, ч, ш, щ, э, ю, я)
Царь
Царевич
Король
Королевич
Сапожник
Портной
Контрольные вопросы
1 Назовите правила сопоставления переменных.
2 Что такое механизм отката?
3 В чем состоит алгоритм унификации?
4 Что такое отсечение?
8.4 Рекурсивные структуры данных. Списки (4 часа)
Цель
Требуется написать программу и реализовать ее на одной из версий языка Пролог
Задачи
1) Сформулировать постановку задачи.
2) Написать текст программы.
3) Сделать подробное описание назначения и использования всех правил, определенных в программе.
4) Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.
5) Составить и оформить протоколы работы программы по каждому контрольному примеру.
Ход работы
Из предлагаемого ниже списка, используя свою фамилию, имя и отчество в качестве ключа, выберете задания и определите соответствующие правила обработки списков:
сложение двух списков:
а) concat_lists_1([a, b, c, d], [a, b, l, m, k], [a, b, c, d, a, b, l, m, k]).
б) concat_lists_2([a, b, c, d], [a, b, l, m, k], [a, b, c, d, l, m, k]).
в) concat_lists_3([a, b, c, d], [a, b, l, m, k], [a, a, b, b, c, l, d, m, k]).
г) concat_lists_4([a, b, c, d], [a, b, l, m, k], [a, a, b, b, c, l, d, m]).
8.5 Программирование баз данных. Базы данных (4 часа)
Цель
Требуется написать программу и реализовать ее на одной из версий языка Пролог
Задачи
1) Сформулировать постановку задачи.
2) Написать текст программы.
3) Сделать подробное описание назначения и использования всех правил, определенных в программе.
4) Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.
5) Составить и оформить протоколы работы программы по каждому контрольному примеру.
Ход работы
Организовать на диске в файле input.dba базу данных, занесите в нее два десятка фактов, содержащих паспортные данные: , , , , , , , , , . В качестве имени цепочки использовать серию паспорта. Из предлагаемого ниже списка, используя свою фамилию, имя и отчество в качестве ключа, выберите задания и определите соответствующие правила обработки этой базы данных:
а) Используя дерево ссылок вывести данные в алфавитном порядке фамилий.
б) Используя дерево ссылок вывести данные в алфавитном порядке имен.
в) Диалог для занесения в базу данных нового факта. Предусмотреть контроль корректности вводимых данных.
г) Диалог для удаления факта из базы данных.
д) Вывод всех фактов, принадлежащих цепочке в окно.
е) Подбор потенциальных семейных пар (критерии подбора определить самостоятельно).
ж) Диалог для замены одного факта другим.
з) Диалог для копирования базы данных в файл output.dba.
и) Диалог для удаления базы данных с диска.
й) Поиск всех однофамильцев.
к) Поиск людей, имеющих одинаковые имена.
л) Поиск людей, чьи фамилии имеют одинаковые начальные буквы
м) Поиск самого старшего по возрасту
н) Поиск самого младшего по возрасту
о) Диалог для поиска всех фактов по произвольным полям
п) Используя дерево ссылок вывести данные в порядке старшинства по возрасту.
р) Замена паспорта в связи с потерей (меняется серия и номер).
с) Замена паспорта в связи со сменой фамилии (меняется серия, номер и фамилия).
т) Смена прописки (меняется адрес).
у) Смена семейного положения.
ф) Вывод всех занесенных в базу семейных пар.
х) Удаление всех фактов принадлежащих одной цепочке.
ц) Удаление всех фактов не принадлежащей одной цепочке.
ч) Поиск людей проживающих в одной квартире.
ш) Подсчет среднего числа людей проживающих в одной квартире
щ) Подсчет количества людей, нуждающихся в отдельной квартире (считать, что необходима одна дополнительная квартира, если вместе проживают две супружеские пары) , причем новая квартира необходима молодым.
ь) Подсчет семей, в которых муж и жена проживают отдельно.
э) Вывод списка людей, нуждающихся в отдельной квартире (считать, что необходима одна дополнительная квартира, если вместе проживают две супружеские пары), причем новая квартира необходима молодым.