Создание программы поиска с предикатами!, not
1. Запустить среду визуальной разработки Visual Prolog.
2. Создать программу, определяющую студентов сдавших все экзамены на положительную оценку:
domains% раздел доменов
name, predmet = symbol % домены имя и предмет – символьные
oz = integer% домен оценка – числовое, целое
predicates% раздел предикатов
perevod(name) % задание предиката студент-переводник
us (oz) % задание предиката оценка
pred (predmet) % задание предиката предмет
ucp (name, predmet, oz) % задание предиката успеваемость с указанием имени студента, предмета и оценки полученной по этому предмету
clauses % раздел предложений
|
perevod(lysha).
us (2).
|
us (4).
us (5).
pred (matem).
|
pred (ictoria).
ucp (pasha,matem,5).
ucp (pasha, ryc,5).
ucp (pasha, ictoria,5).
ucp (lysha,matem,3).
ucp (lysha, ryc,2).
ucp (lysha,ictoria,2).
ucp (olga,matem,2).
ucp (olga, ryc,3).
|
ucp (misha, matem,4).
ucp (misha,ryc,2).
ucp (misha, ictoria,3).
ucp (dina, matem,4).
ucp (dina, ryc,4).
ucp (dina, ictoria,2).
ucp (masha, matem,4).
ucp (masha, ryc,4).
ucp (masha, ictoria,5).
goal % раздел целей (запросов)
|
ucp (Stud,ryc,Ryc),Ryc<>2,
ucp (Stud,ictoria,Ictoria),Ictoria<>2.
3. Сохранить файл с именем lab4.
4. Организовать несколько целей с подцелями с конъюнкцией, дизъюнкцией.
5. Преобразовать программу, добавив прерывание с зеленым отсечением:
stud(Stud):-ucp (Stud,Predmet,Oz),
Oz<>2,
Predmet= matem,
!;
ucp (Stud,Predmet,Oz),
Oz<>2,
Predmet=ryc,
!;
ucp (Stud,Predmet,Oz),
Oz<>2,
Predmet=ictoria.
Организовать цель:
stud(Stud). % показать всех успевающих студентов
6. Показать всех студентов не переводников успевающих по предмету история (использовать стандартный предикат not). Добавить в программу:
stud(Stud):-ucp (Stud,ictoria,Oz),
Oz=5,
not(perevod(Stud)).
Вопросы для самоконтроля
1. Опишите механизм прерывания поиска с возвратом.
2. Опишите красное и зеленое отсечение при организации поиска решения.
3. Опишите условия делающие поиск решения детерминированным и недетерминированным.
4. Опишите условия использования предикат fail.
5. Опишите условия использования предикат!.
6. Опишите условия использования предикат not.
7. Опишите условия использования предикат cut.