Задание.
Для базы знаний “Расписание занятий” вывести:
- расписание на конкретный день;
- расписание по дням;
- список свободных аудиторий и их количество;
- общее количество часов, которое ведёт преподаватель по расписанию.
Текст программы:
/* Вывод расписания в конкретный день недели */
'расписание'(D):-write('Группа Дисциплина Преподователь '),
write('Аудитория Время Чл/Зн'),nl,fail.
'расписание'(D):-'расписание занятий'(Gr,K,N,A,D,T,W),
'дисциплина'(K,Ds,_),
write(Gr),tab(4),write(Ds),tab(2),write(N),tab(2),write(A),
tab(6),write(T),tab(2),write(W),nl,fail.
'расписание'(D).
/* Вывод расписания занятий по дням */
'расписание':-write('Группа Дисциплина Преподователь '),
write('Аудитория Время Чл/Зн'),nl,fail.
'расписание':-'расписание занятий'(_,_,_,_,D,_,_),not 'день'(D),
assertz('день'(D)),fail.
'расписание':-'день'(D),
write('День '),write(D),nl,
'расписание занятий'(Gr,K,N,A,D,T,W),
'дисциплина'(K,Ds,_),
write(Gr),tab(4),write(Ds),tab(2),write(N),tab(2),write(A),
tab(6),write(T),tab(2),write(W),nl,fail.
'расписание':-'день'(D),retract('день'(D)),fail.
'расписание'.
/* Вывод списка свободных аудиторий и их общего кол-ва */
'список_свободных_аудиторий':-write('список свободных аудиторий'),nl,
asserta('сумма'(0)),
'аудитория'(A,_,_),
not 'расписание занятий'(_,_,_,A,_,_,_),
write(A),tab(1),
retract('сумма'(S)),S1 is S+1,
asserta('сумма'(S1)),fail.
'список_свободных_аудиторий':-retract('сумма'(S)),nl,
write('всего = '),write(S).
'список_свободных_аудиторий'.
/* Вывод кол-ва часов, кот. ведет преподователь по расписанию */
'кол-во_часов_преподователя':-write('Преподователь кол-во часов'),nl,
'преподаватель'(T,_,_),
assertz('сумма'(T,0)),
'расписание занятий'(_,_,T,_,_,_,_),
retract('сумма'(T,S)),S1 is S+1,
assertz('сумма'(T,S1)),fail.
'кол-во_часов_преподователя':-retract('сумма'(T,S)),
write(T),tab(3),write(S),nl,fail.
'кол-во_часов_преподователя'.
Результаты запросов к базе занний:
?- 'расписание'('ср').
Группа Дисциплина Преподователь Аудитория Время Чл/Зн
047 Компьютерная графика Телков И Ю 128 11 40 чл
048 Компьютерная графика Телков И Ю 128 13 35 зн
043 Компьютерная графика Телков И Ю 128 11 40 чл
040 Сети Калинина Т И 209 13 35 чл
?- 'расписание'.
Группа Дисциплина Преподователь Аудитория Время Чл/Зн
День пн
043 Технология разработки ПО Чистякова В И 206 13 35 чл
0412 Технология разработки ПО Чистякова В И 206 15 20 зн
058 Иностранный язык Попова Л И 311 15 20 чл
День вт
041 Базы данных Макаров Н П 302 15 20 зн
040 Базы данных Макаров Н П 302 17 05 чл
0410 Базы данных Макаров Н П 302 13 35 зн
043 Базы данных Макаров Н П 302 15 20 чл
048 ООП Лаврентьев С И 206 17 05 чл
День ср
047 Компьютерная графика Телков И Ю 128 11 40 чл
048 Компьютерная графика Телков И Ю 128 13 35 зн
043 Компьютерная графика Телков И Ю 128 11 40 чл
040 Сети Калинина Т И 209 13 35 чл
День чт
011 ТОЭ Перепёлкин А А 324 9 55 зн
0410 Предпринимательство Петров П П 445 11 40 зн
День пт
022 Физика Шеретов В В 358 8 10 чл
День сб
034 Менеджмент Староверов С В 443 13 35 зн
yes
?- 'список_свободных_аудиторий'.
список свободных аудиторий
354 353
всего = 2
yes
?- 'кол-во_часов_преподователя'.
Преподователь кол-во часов
Чистякова В И 2
Макаров Н П 4
Телков И Ю 3
Перепёлкин А А 1
Шеретов В В 1
Староверов С В 1
Попова Л И 1
Лаврентьев С И 1
Калинина Т И 1
Петров П П 1
yes |