Лабораторная работа по «Логическому и функциональному программированию»
Автор: Казимагомед Гюльмагомедов • Ноябрь 6, 2023 • Лабораторная работа • 1,030 Слов (5 Страниц) • 132 Просмотры
Федеральное агентство связи
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет ИНО
Кафедра программной инженерии и вычислительной техники
ЛАБОРАТОРНАЯ РАБОТА №1
по дисциплине «Логическое и функциональное программирование»
Выполнил: студент группы ПИБ-11з
Гюльмагомедов Казимагомед Исмаилович
Проверил:
доцент кафедры ПИиВТ
Ерофеев Сергей Анатольевич
Санкт-Петербург
2023
Постановка задачи
Создать базу знаний на языке Turbo Prolog 2.0, содержащую родственные связи, включая следующие: дочь, сын, сестра, брат, мама, папа, жена, муж, бабушка, дедушка. Схема знаний:
[pic 1]
Пояснение необходимых родственных
связей родственных связей
Дочь — лицо женского пола по отношению к своим родителям. (В программе – daughter (X, Y))
Сын — лицо мужского пола по отношению к своим родителям. (В программе – son(X, Y))
Сестра — дочь тех же родителей по отношению к другим их детям. (В программе – sister(X, Y))
Брат — сын тех же родителей по отношению к другим их детям. (В программе – brother(X, Y))
Мама (мать) — женщина по отношению к своим детям. (В программе – mom(X,
Y))
Папа (отец) — мужчина по отношению к своим детям. (В программе – dad(X,
Y))
Жена — женщина по отношению к мужчине, с которым она состоит в браке.
Муж — мужчина по отношению к женщине, с которой он состоит в браке.
(В программе связь муж – жена выполняет единый предикат marriage(X, Y))
Бабушка — мать отца или матери. (В программе – grandma (X, Y))
Дедушка — отец отца или матери. (В программе – grandpa (X,
Y))
Для упрощения определения некоторых предикатов программы, а также для возможности вывода всех возможных искомых родственников независимо от их пола, в список родственных связей были добавлены универсальные связи, не зависящие от пола их участников. В их числе: родитель (в программе – parent(X,
Y)), ребёнок (в программе – child(X, Y)), бабушки и дедушки (в программе – grandparent (X, Y)), внуки (в программе – grandkid(X, Y)).
ЛИСТИНГ КОДА:
DOMAINS
person = symbol
PREDICATES man(person) woman(person) dad(person, person) mom(person, person) grandma(person, person) grandpa(person, person) son(person, person) daughter(person, person) parent(person, person) child(person, person) sister(person, person) brother(person, person) marriage(person, person) grandkid(person, person) grandparent(person, person)
CLAUSES
% Мужчины: man(poliport). man(telemah). man(odissey).
man(ikariy). man(laert). % Женщины: woman(ardeya). woman(anciya). woman(penelopa). woman(peribeya). woman(antikleya). % Браки: marriage(penelopa, odissey). marriage(peribeya, ikariy). marriage(antikleya, laert). % Сыновья: son(poliport, penelopa). son(poliport, odissey). son(telemah, penelopa). son(telemah, odissey). son(odissey, antikleya). son(odissey, laert). % Дочери: daughter(ardeya, odissey). daughter(anciya, odissey). daughter(penelopa, peribeya). daughter(penelopa, ikariy). % Родители: parent(PARENT_, SON_):-son(SON_, PARENT_). parent(PARENT_, DAUGHTER_):-daughter(DAUGHTER_, PARENT_). % Дети, мама, папа: child(CHILD_, PARENT_):-parent(PARENT_, CHILD_). mom(MOM_, CHILD_):-woman(MOM_), parent(MOM_, CHILD_). dad(DAD_, CHILD_):-man(DAD_), parent(DAD_, CHILD_). |
% Сестра, брат: sister(SISTER_, BROTHER_):-dad(DAD_, SISTER_), dad(DAD_, BROTHER_), woman(SISTER_), SISTER_<>BROTHER_. brother(BROTHER_, SISTER_):-dad(DAD_, BROTHER_), dad(DAD_, SISTER_), man(BROTHER_), BROTHER_<>SISTER_. % Бабушка, дедушка: grandma(GRANDMA_, GRANDKID_):-woman(GRANDMA_), mom(GRANDMA_, PARENT_), parent(PARENT_, GRANDKID_). grandpa(GRANDPA_, GRANDKID_):-man(GRANDPA_), dad(GRANDPA_, PARENT_), parent(PARENT_, GRANDKID_). grandparent(GRANDPARENT_, GRANDKID_):-grandma(GRANDPARENT_, GRANDKID_);grandpa(GRANDPARENT_, GRANDKID_). % Внук grandkid(GRANDKID_, GRANDPARENT_):-grandparent(GRANDPARENT_, GRANDKID_).
|
...