1

Тема: Программа по устранению неисправностей в фотоаппаратах Фирмы Nicon

domains           
database           
                 xpositive(symbol,symbol)
                 xnegative(symbol,symbol)
                 
predicates
                 go
                 result
                 vopros(symbol,symbol)
                 pr(symbol)
                 to(symbol)
                 positive(symbol,symbol)
                 negative(symbol,symbol)
                 remember(symbol,symbol,symbol)
                 clear_db
  clauses
                 go :-
                 nl,write("---------------------Программа по устранению неисправностей в фотоаппаратах Фирмы Nicon CoolPix P1 и P2.-------------------------------"),
                 nl,write("Вам будут заданы вопросы возможных проблем, для установки причины неисправности!Возможны два варианта ответа y -да, n-нет:"),
                 nl,nl,
                 result,
                 write("Нажмите пробел."),nl,
                 exit.
            result :-
                 pr(X),!,nl,
                 write("Возможная причина: ",X,"."),nl,
                 clear_db.
            result :-
                 nl,write("К сожалению не удалось выявить причину появелния вашей проблемы обратитесь за помощью в ближайший сервис фирмы Nicon "),
                 clear_db.
                 
            vopros(X,Y) :-
                write(X, " ", Y," ?"),
                readln(Reply),
                remember(X,Y,Reply).
                 
           
               positive(X,Y) :-
                  xpositive(X,Y),!.
            positive(X,Y) :-
                  not(negative(X,Y)),!,
                  vopros(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
            pr("Фотокамера выключена; Экран выключен; Батарея неправильно установлена или не закрыта должным образом крышка батарейного отсека/ гднезда карты памяти") :-
                 to("Экран"),
                 positive("проблема","экран пуст"),!.
                 
            pr("Индекаторы могут быть скрыты.Выбирите значение отличное от Скрыть ифо для параметра Инфомация о фото в меню настроек экрана") :-
                 to("Экран"),
                 positive("проблема","на экране нет никаких индикаторов"),!.
                 
            pr("Слишком яркое освещение: переместитесь в менее освещённое место; Необходимо настроить яркость экрана; Загрязнения экрана отчистите экран") :-
                 to("Экран"),
                 positive("проблема","изображение на экрае трудно разглядеть"),!.
                 
             pr("выключена вспышка; Перекрыто окно вспышки; Объект слишком удалён для использования вспышки; Слишком большое  отрицательное значение поправки") :-
                 to("Снимки"),
                 positive("проблема","снимки слишком тёмные"),!.
                 
             pr("Слишком большое положительное значение поправки экспозиции") :-
                 to("Снимки"),
                 positive("прблема","снимки слишком светлые"),
                 positive("проблема","на снимке слишком много случайно расположенных ярких точек"),!.
                 
             pr("При нажатии спусковой кнопки на половину объект съёмки не находился в зоне фокусировки.") :-
                 to("Снимки"),
                 positive("проблема","снимке не в фокусе"),
                 positive("проблема","мигал красный индикатор АФ"),!.
                 
            pr("Не использовали вспышку; Не использовали ф-ю 'Выбор лучшего кадра'; Установите камеру на штатив и используйте авто спуск") :-
                 to("Снимки"),
                 positive("проблема","снимоке не в фокусе"),
                 positive("проблема","снимок 'Смазан'"),!.
           
            pr("Слишком длинная выдержка.Используйте вспышку") :-
                 to("Снимки"),
                 positive("проблема","на снимке слишком много случайно расположенных ярких точек"),
                 positive("проблема","имеются засвеченные места на снимке"),!.
                 
            to("Экран") :-
                 positive("Проблема ","с экраном"),!.
                 
            to("Снимки") :-
                 positive("Проблема","со снимками"),!.
                 
            goal
           
                go.

Поделиться