Задание. Создание программы поиска с предикатами !, not

Создание программы поиска с предикатами!, not

1. Запустить среду визуальной разработки Visual Prolog.

2. Создать программу, определяющую студентов сдавших все экзамены на положительную оценку:

domains% раздел доменов

name, predmet = symbol % домены имя и предмет – символьные

oz = integer% домен оценка – числовое, целое

predicates% раздел предикатов

perevod(name) % задание предиката студент-переводник

us (oz) % задание предиката оценка

pred (predmet) % задание предиката предмет

ucp (name, predmet, oz) % задание предиката успеваемость с указанием имени студента, предмета и оценки полученной по этому предмету

clauses % раздел предложений

предикаты перечень студентов-переводников
perevod(pasha).

perevod(lysha).

us (2).

предикаты перечень оценок
us (3).

us (4).

us (5).

pred (matem).

предикаты перечень предметов
pred (ryc).

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 (olga,ictoria,5).

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,matem,Matem),Matem<>2,

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.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: