Курсовой проект ПРОЛОГ / 9091_Боброва_Курсовая_вар6_ПРОЛОГ
.docxМИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра АПУ
отчет
по курсовой работе
по дисциплине «Линейные системы управления»
Тема: «Язык логического программирования ПРОЛОГ»
Вариант 6
Студентка гр. 9091 |
|
Боброва Н.Ю. |
Преподаватель |
|
Власенко С.В. |
Санкт-Петербург
2023
Оглавление
Задание на курсовую работу 3
Код работы 4
Пояснения к коду 6
Ответы программы на вопросы 7
Задание на курсовую работу
Дан фрагмент генеалогического дерева
Необходимо написать программу на языке ПРОЛОГ, которая будет отвечать на данные вопросы и должна иметь данные отношения(связи)
6 |
троюродная сестра, родитель, брат, сестра |
Джулианна троюродная сестра Марка? Чей брат Марк? Кто сестра Сэнди? |
Код работы
DOMAINS
person = symbol
PREDICATES
man(person)
woman(person)
parent(person,person)
brother (person,person)
sister(person,person)
grandma(person,person)
grandfa(person,person)
trsister(person,person)
CLAUSES
parent(adam, sandy).
parent(eve, sandy).
parent(adam, delphi).
parent(eve, delphi).
parent(gloria, mark).
parent(gloria, george).
parent(william, mark).
parent(william, george).
parent(malik, yulianna).
parent(lydia, yulianna).
parent(megan, lydia).
parent(jack, lydia).
parent(adam, jack).
parent(eve, jack).
parent(sandy, william).
parent(john, william).
man(adam).
man(mark).
man(george).
man(malik).
man(william).
man(william).
man(william).
man(jack).
man(john).
woman(eve).
woman(sandy).
woman(delphi).
woman(gloria).
woman(yulianna).
woman(megan).
woman(lydia).
sister(Woman, Who):-
woman(Woman), parent(Z,Woman), parent(Z,Who), Woman\=Who.
brother(Man, Who):-
man(Man), parent(Z,Man), parent(Z,Who), Man\=Who.
grandma(Woman,Who):-
woman(Woman), parent(Woman,Z), parent(Z,Who).
grandfa(Man,Who):-
man(Man), parent(Man,Z), parent(Z,Who).
trsister(Woman, Who):-
woman(Woman), grandfa(X,Woman), brother(X,Z), grandma(Z,Who).
goal: sister(sandy,Who).
goal: brother(mark,Who).
goal: trsister(yulianna,mark).
Пояснения к коду
Описали кто чей родитель.
parent(adam, sandy). – Адам родитель Санди
Ввели пол и расписали всех необходимых нам лиц по полу:
man(adam). – Адам мужчина;
woman(eve). – Ева женщина.
Ввели законы (рассмотрим на примере sister)
sister(Woman, Who):-
woman(Woman), parent(Z,Woman), parent(Z,Who), Woman\=Who.
Здесь
Woman – переменная;
Who – переменная;
Z – переменная;
woman(Woman) – означает, что человек должен быть женщиной, чтобы быть чьей-то сестрой;
Чтобы показать, что это кровные сестры/братья, должны быть общие родители;
Woman\=Who – показываем, что человек не может быть собственной сестрой.
Написали вопросы, на которые должна ответить наша программа:
goal: sister(sandy,Who). – Кто сестра Санди?
goal: brother(mark,Who). – Кто брат Марка?
goal: trsister(yulianna,mark). – Джулианна троюродная сестра Марка?
Ответы программы на вопросы
Кто сестра Санди?
Кто брат Марка?
Джулианна троюродная сестра Марка?