1

Тема: Программа по выявлению неполадок в телевизорах Фирмы LG

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
            % User interface   
            begin_analis :-
                 nl,write("---------------------Программа по выявлению неполадок в телевизорах Фирмы LG.-------------------------------"),
                 nl,write("Отвечайте на вопросы системы о  неполадках y-да, n-нет:"),
                 nl,nl,
                 result,
                 write("Нажмите пробел."),nl,
                 exit.
            result :-
                 virus_is(X),!,nl,
                 write("Неполадка: ",X,"."),nl,
                 clear_db.
            result :-
                 nl,write("К сожалению не удалось выявить причину появления ваших неполадок обратитесь за помощью в ближайший сервис-центр фирмы LG "), "),
                 clear_db.
                 
            ask(X,Y) :-
                write(X, " ", Y," ?"),
                readln(Reply),
                remember(X,Y,Reply).
                 
            % Output mechanism
            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.
         
            % Rules
            virus_is("Вилка шнура пит. не включена в сеть;не вкл.питан. самого телевизора";
                     "перекл. на другой канал(слабый сигнал)") :-
                 it_is("Нет изображения"),
                 positive("наблюдается","отсутсвует картинка полностью"),
                 positive("наблюдается","изображение плохое"),
                 positive("наблюдается","изображение нечеткое "),!.
                 
            virus_is("Перекл. на другой канал(слабый сигнал);проверьте антенну"
                     "(подключение к гнезду телевизора);проверьте антенну(не обрван ли провод)"
                     " проверьте нет ли поблизости источника помех") :-
                 it_is("Нет изображения"),
                 positive("наблюдается","линии или полоски на изображении"),
                 positive("наблюдается","плохой прием некоторых каналов"),
                 positive("наблюдается","черно-белая передача"),!.
                 
            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("наблюдается","появление дыма"),!.
                 
            virus_is("Сгорела память или контроллер памяти. Требуется замена") :-
                 it_is("Нет звука"),
                 positive("наблюдается","отсутствие свечения лампочки работоспособности памяти"),!.
           
            virus_is("Вышла из строя либо несовместима с данным оборудованием видеокарта. Требуется замена") :-
                 it_is("Нет звука"),
                 positive("наблюдается","свечение лампочки работоспособности памяти"),
                 positive("наблюдается","отсутствие свечения лампочки работоспособности видеокарты"),!.
                 
            it_is("Нет изображения") :-
                 positive("наблюдается","черный экран"),!.
                 
            it_is("Нет звука") :-
                 positive("наблюдается","отсутствие шума из динамиков вообще"),!.
                 
            goal
           
                begin_analis.

Поделиться