Файл: Лабораторная работа 3.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 12

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.




НАУЧНО-ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ
Кафедра Безопасности и информационных технологий


Отчет по заданию

по дисциплине «Интеллектуальные информационные системы»

тема: «Лабораторная работа №3»

Группа: ИЭ-66-18

Студент: Балашов М.С.

(подпись)
Руководитель:

Карпович Е.Е.

(подпись)

Москва 2021 г.




Задание 1

  1. Создать с помощью фактов базу данных «Сессия», включающую предикаты lector и student.




  1. Написать правила, обеспечивающие ответ на следующие вопросы:


А) Выдать на экран фамилии всех студентов, которые сдают экзамен определенного числа, дата задается следующим образом: ‘хх.хх.xxxx’.

Б) Выдать на экран фамилии всех студентов, которые сдают экзамен определенному лектору.

В) Выдать на экран названия дисциплин, по которым будет сдавать экзамен определенный студент.

Г) Выдать на экран фамилии преподавателей, которые принимают экзамены в данной группе.

Д) Выдать на экран фамилии всех студентов, которые учатся в данной группе.

Е) Выдать на экран названия дисциплин, по которым принимает экзамен данный преподаватель.

  1. Отладить программу с помощью интерпретатора SWI Prolog.




  1. Продемонстрировать работу программы с помощью вопросов.




  1. Составить отчет по лабораторной работе.


1.1. База данных

lector('Bobodzhanov','Matmod','IS','04.06.2019').

lector('Ivanenko','Analiz dannih','IS','15.05.2019' ).

lector('Zniakin','BD','PI','27.05.2019').

lector('Petrov','Arhitektura Predpriatia','PI','16.05.2019').


lector('Eremeev','WEB tehnologii','IS','25.05.2019').

lector('Karpovich','Intellectualnie seti','PI','19.05.2019').

lector('Petrov','Upravlenie sistemami ','BI','22.05.2019').

lector('Demchuk','Analiticheskie seti','BI','29.04.2019').

student('Antonov','BI','1100504').

student('Petrov','BI','1400405').

student('Dushnila','BI','1700705').

student('Vorobei','BI','1801208').

student('Denisov','PI','7900217').

student('Shishilova','PI','7900217').

student('Hren','PI','7770608').

student('Larchin','PI','2510608').

student('Nagorni','IS','2120254').

student('Karabah','IS','2300244').

student('Pivovarenko','IS','2400274').

student('Petuhov','IS','1400224').

student('Kozlov','IS','5400224').

student('Pivovarov','PI','2700254').

student('Bruh','PI','2550114').

student('Yakovlev','BI','2900555').

student('Abramovich','BI','300077').

1.2. Написать правила, определяющие следующие отношения:

А) Выдать на экран фамилии всех студентов, которые сдают экзамен определенного числа, дата задается следующим образом: ‘хх.хх.xxxx’.

Б) Выдать на экран фамилии всех студентов, которые сдают экзамен определенному лектору.

В) Выдать на экран названия дисциплин, по которым будет сдавать экзамен определенный студент.

Г) Выдать на экран фамилии преподавателей, которые принимают экзамены в данной группе.

Д) Выдать на экран фамилии всех студентов, которые учатся в данной группе.

Е) Выдать на экран названия дисциплин, по которым принимает экзамен данный преподаватель.

2.1. Правила, определяющие отношения

a:-write('vvedite datu exzamena: '),read(N),nl,

write('familii studentov: '),nl,lector(_,_,X,N),student(Y,X,_),

write(Y),nl,fail.

a.

b:-write('vvedite familiu prepodavatelia: '),read(X),nl,

write('familii studentov: '),nl,lector(X,_,Z,_),student(Y,Z,_),

write(Y),nl,fail.

b.

c:-write('vvedite familiu studenta: '),read(Y),nl,

write('disciplini: '),nl,student(Y,Z,_),lector(_,X,Z,_),

write(X),nl,fail.

c.

d:-write('vvedite gruppu: '),read(Z),nl,

write('familii prepodavatelei: '),nl,lector(X,_,Z,_),

write(X),nl,fail.

d.

e:-write('vvedite gruppu: '),read(Z),nl,

write('familii studentov: '),nl,student(Y,Z,_),

write(Y),nl,fail.

e.

f:-write('vvedite familiu prepodavatelia: '),read(X),nl,

write('disciplini:'),nl,lector(X,B,Z,_),

write(B),nl,fail.

f.

2.2. Результаты отладки программы с помощью интерпретатора SWI Prolog
Правило a(N):



Правило b(N):



Правило c(N):



Правило d(N):



Правило e(N):



Правило f(N):



Использование стандартного предиката отсечения в правилах на языке Пролог.

Выбрать соответствующий вариант задания на вычисление y=f(x) в зависимости от условия, и переписать правила с использованием стандартного предиката отсечения «!» в приложени1.

run:- write('Input X, A:'),nl,

read(X), number(X),

read(A), number(A), func(X,A,Y),

write('Y = '), write(Y),nl.

func(X,A,Y):-X
func(X,A,Y):-X=A, Y is 0.

func(X,A,Y):-Y is X-sin(abs(X-1)).


Результаты отладки программы с помощью интерпретатора SWI Prolog

Срабатывает условие X>A:



Срабатывает условие X

2.3. Листинг программы

lector('Bobodzhanov','Matmod','IS','04.06.2019').

lector('Ivanenko','Analiz dannih','IS','15.05.2019' ).

lector('Zniakin','BD','PI','27.05.2019').

lector('Petrov','Arhitektura Predpriatia','PI','16.05.2019').

lector('Eremeev','WEB tehnologii','IS','25.05.2019').

lector('Karpovich','Intellectualnie seti','PI','19.05.2019').

lector('Petrov','Upravlenie sistemami ','BI','22.05.2019').

lector('Demchuk','Analiticheskie seti','BI','29.04.2019').

student('Antonov','BI','1100504').

student('Petrov','BI','1400405').

student('Dushnila','BI','1700705').

student('Vorobei','BI','1801208').

student('Denisov','PI','7900217').

student('Shishilova','PI','7900217').

student('Hren','PI','7770608').

student('Larchin','PI','2510608').

student('Nagorni','IS','2120254').

student('Karabah','IS','2300244').

student('Pivovarenko','IS','2400274').

student('Petuhov','IS','1400224').

student('Kozlov','IS','5400224').

student('Pivovarov','PI','2700254').

student('Bruh','PI','2550114').

student('Yakovlev','BI','2900555').

student('Abramovich','BI','300077').

a:-write('vvedite datu exzamena: '),read(N),nl,

write('familii studentov: '),nl,lector(_,_,X,N),student(Y,X,_),

write(Y),nl,fail.

a.

b:-write('vvedite familiu prepodavatelia: '),read(X),nl,

write('familii studentov: '),nl,lector(X,_,Z,_),student(Y,Z,_),

write(Y),nl,fail.

b.

c:-write('vvedite familiu studenta: '),read(Y),nl,

write('disciplini: '),nl,student(Y,Z,_),lector(_,X,Z,_),

write(X),nl,fail.

c.

d:-write('vvedite gruppu: '),read(Z),nl,

write('familii prepodavatelei: '),nl,lector(X,_,Z,_),

write(X),nl,fail.

d.

e:-write('vvedite gruppu: '),read(Z),nl,

write('familii studentov: '),nl,student(Y,Z,_),

write(Y),nl,fail.

e.

f:-write('vvedite familiu prepodavatelia: '),read(X),nl,


write('disciplini:'),nl,lector(X,B,Z,_),

write(B),nl,fail.

f.

run:- write('Input X, A:'),nl,

read(X), number(X),

read(A), number(A), func(X,A,Y),

write('Y = '), write(Y),nl.

func(X,A,Y):-X
func(X,A,Y):-X=A, Y is 0.

func(X,A,Y):-Y is X-sin(abs(X-1)).