Задание: описать предметную область "Расписание занятий" с помощью программы на языке Пролог.
Отношения- факты:
<группа>(<номер>,<факультет>,<число студентов>,<староста>).
<дисциплина>(<шифр>,<название>,<количество часов>).
<аудитория>(<номер>,<тип>,<число мест>).
<преподаватель>(<ФИО>,<кафедра>,<телефон>).
<расписание_занятий>(<номер_группы>,<шифр_дисциплины>,<ФИО>,<номер_аудитории>,<день_недели>,<время>,<числитель/знаменатель>).
Отношения - правила: какие аудитории заняты в данное время, какие аудитории свободны в данное время, расписание занятий в заданное время, где находится преподаватель по расписанию, расписание занятий для заданной группы и т.д.
/* Пример выполнения задания 1 */
/* Определение отношений с помощью фактов */
/*определение отношения <группа>(<номер>,<факультет>,<число студентов>,<староста>)*/
'группа'(243,'ФВТ',23,'Карасев'). 'группа'(244,'ФВТ',25,'Карасев').
/* определение отношения <студент>(<ФИО>,<группа>) */
'студент'('Иванов',243). 'студент'('Петров',243).
'студент'('Ивагин',243). 'студент'('Лунева',243).
... ... ... .......................................
'студент'('Волков',244). 'студент'('Мосин',244).
/* определение отношения <дисциплина>(<шифр>,<название>,<количество часов>) */
'дисциплина'(1,'Математика',34). 'дисциплина'(2,'Физика',48).
'дисциплина'(3,'Информатика',56). 'дисциплина'(4,'Базы данных',48).
... ... ... .......................................
/* определение отношения <аудитория>(<номер>,<тип>,<число мест>) */
'аудитория'(132,'ауд',30). 'аудитория'(206,'лаб',300).
... ... ... .......................................
'аудитория'(403,'ауд',30). 'аудитория'(411,'ауд',10).
/* определение отношения <преподаватель>(<ФИО>,<кафедра>,<телефон>) */
'преподаватель'('Шевяков','ВПМ','723723'). 'преподаватель'('Новичков','ВПМ','323723').
... ... ... .......................................
'преподаватель'('Швечкова','ВПМ','764589').
/* определение отношения <расписание занятий>(<номер группы>,<шифр дисциплины>,<ФИО преподавателя>,<номер аудитории>,<день недели>,<время>,<числитель/знаменатель>) */
'расписание занятий'(243,1,'Новиков',324,'понедельник',8,'ч').
'расписание занятий'(243,2,'Шерстов',306,'понедельник',10,'ч').
'расписание занятий'(243,3,'Новичков',306,'понедельник',12,'ч').
'расписание занятий'(243,4,'Шевяков',206,'вторник',8,'ч').
'расписание занятий'(243,5,'Парфилова',134,'вторник',10,'ч').
... ... ... .......................................
'расписание занятий'(243,4,'Шевяков',403,'среда',12,'з').
'расписание занятий'(243,5,'Парфилова',206,'среда',14,'з').
/* Определение отношений с помощью правил */
/* определение отношения
<занята_аудитория>(<день_недели>,<время>,<числитель/знаменатель>,<аудитория>)*/
'занята'(D,V,T,NA):-
'расписание занятий'(_,_,_,NA,D,V,T).
/* определение отношения
<свободна_аудитория>(<день_недели>,<время>,<числитель/знаменатель>,<аудитория>)*/
'свободна'(D,V,T,NA):-
'аудитория'(NA,_,_),not 'занята'(D,V,T,NA).
/* определение отношения
<расписание занятий группы>(<номер группы>,<Дисциплина>,<ФИО преподавателя>,
<аудитория>,<день недели>,<время>,<числитель/знаменатель>)*/
'расписание занятий группы'(NG,D,Pr,Aud,De,Vr,Z):-
'расписание занятий'(NG,Kd,Pr,Aud,De,Vr,Z),
'дисциплина'(Kd,D,_).
/* определение отношения
<где найти преподавателя> */
'где преподаватель'(Pr,D,V,T,Na):-
'расписание занятий'(_,_,Pr,Na,D,V,T).
|