1

Тема: PROLOG - 2 часть программ

Поделиться

2

Re: PROLOG - 2 часть программ

Поделиться

3

Re: PROLOG - 2 часть программ

Поделиться

4

Re: PROLOG - 2 часть программ

domains
treetype=tree(integer,treetype,treetype); empty()

predicates
maximum(treetype,integer)
pm(treetype)
max(integer,integer,integer)

clauses
max(X,Y,X):-X>=Y,!.
max(X,Y,Y).

maximum(empty,_).
maximum(tree(X,Y,Z),MAX):-
max(MAX,X,MAX1),
write("MAX= ",MAX1),nl,
maximum(Y,MAX1),
maximum(Z,MAX1).

pm(tree(X,Y,Z)):-
MAX=X,
maximum(tree(X,Y,Z),MAX).

goal
pm(tree(8,
tree(5,
tree(1,empty,empty),
tree(6,empty,empty)),
tree(10,
tree(8, empty, empty),
tree(11, empty,empty)))).

Поделиться

5

Re: PROLOG - 2 часть программ

domains           
database           
                 xpositive(symbol,symbol)
                 xnegative(symbol,symbol)
                 
predicates
           
                 begin_analis
                 result
                 ask(symbol,symbol)
                 virus_is(symbol)
                 it_is(symbol)
                 positive(symbol,symbol)
                 negative(symbol,symbol)
                 remember(symbol,symbol,symbol)
                 clear_db
                 
clauses
            % Пользовтельский интерфейс   
            begin_analis :-
                 nl,write("***Диагностики неисправностей ПК.***"),
                 nl,write("Отвечайте на вопросы системы о причинах неисправностей y - да, n - нет:"),
                 nl,nl,
                 result,
                 exit.
            result :-
                 virus_is(X),!,nl,
                 write("Неисправность: ",X,"."),nl,
                 clear_db.
            result :-
                 nl,write("Неисправность вашего ПК невозможно определить! "),
                 clear_db.
                 
            ask(X,Y) :-
                write(X, " ", Y," ?"),
                readln(Reply),
                remember(X,Y,Reply).
                 
            % механизм вывода
            positive(X,Y) :-
                  xpositive(X,Y),!.
            positive(X,Y) :-
                  not(negative(X,Y)),!,
                  ask(X,Y).
                 
            negative(X,Y) :-
                 xnegative(X,Y),!.
                 
            remember(X,Y,y) :-
                 asserta(xpositive(X,Y)).    % Добавление положительного ответа
            remember(X,Y,n) :-
                 asserta(xnegative(X,Y)),    % Добавление отрицательного ответа
                 fail.
                 
            clear_db :-
                 retract(xpositive(_,_)),    % Удаление положительных ответов
                 fail.
            clear_db :-
                 retract(xnegative(_,_)),    % Удаление отрицательных ответов
                 fail.
         
            % Продукционные правила
            virus_is("Утерян загрузочный сектор Windows, необходимо восстановление либо переустановка ОС.") :-
                 it_is("Гудит при включении"),
                 positive("наблюдается","включение монитора"),
                 positive("наблюдается","процесс тестирования памяти"),
                 positive("наблюдается","прохождение всех тестов BIOS"),
                 positive("не загружается","операционная система"),!.
                 
            virus_is("Отсутствует либо вышел из строя жесткий диск") :-
                 it_is("Гудит при включении"),
                 positive("наблюдается","включение монитора"),
                 positive("наблюдается","процесс проверки соединений ATA-контроллера"),
                 positive("появляется","ошибка подключения IDE-устройства"),!.
                 
            virus_is("Отсутствует или вышла из строя видеокарта") :-
                 it_is("Гудит при включении"),
                 positive("наблюдается","включение монитора"),
                 positive("наблюдается","ошибка тестирования видеокарты"), !.
                 
             virus_is("Поврежден один или все модули памяти") :-
                 it_is("Гудит при включении"),
                 positive("наблюдается","включение монитора"),
                 positive("наблюдается","ошибки при тестировании памяти"),
                 positive("наблюдается","появление сообщения о невозможности дальнейшей загрузки"),!.
                 
             virus_is("Сгорел блок питания либо поплавилась обмотка сетевого шнура. Необходима замена.") :-
                 it_is("Не гудит при включении"),
                 positive("наблюдается","неприятный запах из корпуса"),
                 positive("наблюдается","появление дыма"),!.
           
            virus_is("Вышла из строя либо несовместима с данным оборудованием видеокарта. Требуется замена") :-
                 it_is("Не гудит при включении"),
                 positive("наблюдается","свечение индикатора памяти"),
                 positive("наблюдается","отсутствие свечения индикатора видеокарты"),!.
                 
            it_is("Гудит при включении") :-
                 positive("наблюдается","шум от работы вентиляторов"),!.
                 
            it_is("Не гудит при включении") :-
                 positive("наблюдается","отсутствие шума от работы вентиляторов"),!.
                 
            goal
           
                begin_analis.

Поделиться