
Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное
учреждение высшего образования
«Сочинский государственный университет»
Кафедра Информационных технологий
ОТЧЁТ
по лабораторной работе № 2
«РАЗРАБОТКА ЭКСПЕРТНОЙ СИСТЕМЫ»
Выполнила: студентка группы 20-ПИ
Кольцова Адриана Андреевна
Дата: 29.09.2023
Проверил: д.т.н. проф. Попов Д.И.
Дата: _______________
Сочи 2023
Задание 1
Написать программу — «Hello, world!».
redicates
start.
clauses
start :-
write("Hello, world!"),
nl.
2. Написать в Turbo Prolog программу с произвольными предикатами, которая будет включать составные объекты и альтернативные домены.
predicates
person(string, integer, string).
domains
name = string.
age = integer(0, 150).
city = string.
clauses
person("Иван", 30, "Москва").
person("Елена", 25, "Санкт-Петербург").
person("Андрей", 35, "Киев").
person("Ольга", 28, "Минск").
goal
person(Name, Age, City),
write("Имя: "), write(Name), nl,
write("Возраст: "), write(Age), nl,
write("Город: "), write(City), nl,
nl,
fail.
goal
write("Конец.").
3. Описать отношения для следующих комбинаций «субъекты ― предметы»: субъекты ― марки автомобилей.
predicates
owns_car(string, string).
domains
person = string.
car_brand = string.
clauses
owns_car("Иван", "Toyota").
owns_car("Елена", "Honda").
owns_car("Андрей", "Ford").
owns_car("Ольга", "Nissan").
goal
owns_car(Person, CarBrand),
write("Владелец: "), write(Person), nl,
write("Марка автомобиля: "), write(CarBrand), nl,
nl,
fail.
goal
write("Конец.").
4. Реализовать пример родственных отношений (не менее 7предикатов, не менее 15 правил, и 2–3 цели (например, «у когомама — Ольга?»).
predicates
male(string).
female(string).
parent(string, string).
sibling(string, string).
grandparent(string, string).
uncle(string, string).
aunt(string, string).
cousin(string, string).
married(string, string).
domains
person = string.
clauses
male("Джон").
female("Ольга").
female("Мария").
female("Елена").
parent("Джон", "Ольга").
parent("Мария", "Ольга").
parent("Джон", "Елена").
parent("Мария", "Елена").
parent("Елена", "Иван").
married("Джон", "Мария").
married("Мария", "Джон").
clauses
parent(X, Y) :- parent(X, Z), parent(Z, Y).
sibling(X, Y) :- parent(Z, X), parent(Z, Y), X != Y.
grandparent(X, Y) :- parent(X, Z), parent(Z, Y).
uncle(X, Y) :- male(X), sibling(X, Z), parent(Z, Y).
aunt(X, Y) :- female(X), sibling(X, Z), parent(Z, Y).
cousin(X, Y) :- parent(Z, X), parent(W, Y), sibling(Z, W).
goal
parent(X, "Ольга"), female(X),
write("Мать Ольги: "), write(X), nl,
nl.
goal
sibling(X, "Ольга"),
write("Брат или сестра Ольги: "), write(X), nl,
fail.
goal
grandparent(X, "Ольга"), male(X),
write("Дедушка Ольги: "), write(X), nl,
nl.
goal
uncle(X, "Ольга"),
write("Дядя Ольги: "), write(X), nl,
fail.
goal
cousin(X, "Ольга"),
write("Двоюродный брат или сестра Ольги: "), write(X), nl,
fail.
goal
write("Конец.").
5. Определить родственное отношение «grandmother» («бабушка»).
predicates
female(string).
parent(string, string).
domains
person = string.
clauses
female("Мария").
female("Елена").
parent("Мария", "Ольга").
parent("Елена", "Ольга").
grandmother(X, Y) :- female(X), parent(X, Z), parent(Z, Y).
goal
grandmother(X, "Ольга"),
write("Бабушка Ольги: "), write(X), nl,
nl,
write("Конец.").