Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
17.12.2023
Размер:
58.18 Кб
Скачать

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное

учреждение высшего образования

«Сочинский государственный университет»

Кафедра Информационных технологий

ОТЧЁТ

по лабораторной работе № 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("Конец.").