Читаем Prolog полностью

(3)        (питер это хищник) это правда было

                    ( 'выведено по' прав3 из

            (питер это млекопитающее) это правда было

                    ( 'выведено по' прав1 из

            (питер имеет шерсть) это правда было сказано)

            и

            (питер ест мясо) это правда было сказано )

На рис. 14.10 показана прологовская программа для процедуры рассмотреть. В этой программе реализованы принципы разд. 14.4.1 с использованием только что описанных структур данных.

% Процедура

%

% рассмотреть( Цель, Трасса, Ответ)

%

% находит Ответ на вопрос Цель. Трасса - это цепочка

% целей-предков и правил. "рассмотреть" стремится найти

% положительный ответ на вопрос. Ответ "ложь" выдается

% только в том случае, когда рассмотрены все возможности,

% и все они дали результат "ложь".

        :-ор( 900, xfx, :).

        :-ор( 800, xfx, было).

        :-ор( 870, fx, если).

        :-ор( 880, xfx, то).

        :-ор( 550, xfy, или).

        :-ор( 540, xfy, и).

        :- ор( 300, fx, 'выведено по').

        :- ор( 600, xfx, из).

        :- ор( 600, xfx, по).

% В программе предполагается,что ор( 700, хfх, это), ор( 500, fx, не)

        рассмотреть( Цель, Трасса, Цель это правда

                                                было 'найдено как факт') :-

                факт : Цель.

% Предполагается, что для каждого типа цели

% существует только одно правило

        рассмотреть( Цель, Трасса,

                Цель это ПравдаЛожь

                было 'выведено по' Прав из Ответ) :-

            Прав : если Условие то Цель,

                                    % Правило, относящееся к цели

            рассмотреть( Условие, [Цель по Прав | Трасса], Ответ),

            истинность( Ответ, ПравдаЛожь).

        рассмотреть( Цель1 и Цель2, Трасса, Ответ) :-  !,

                рассмотреть( Цель1, Трасса, Ответ1),

                продолжить( Ответ1, Цель1 и Цель2, Трасса, Ответ).

        рассмотреть( Цель1 или Цель2, Трасса, Ответ) :-

                рассм_да( Цель1, Трасса, Ответ);

                                    % Положительный ответ на Цель1

                рассм_да( Цель2, Трасса, Ответ).

                                    % Положительный ответ на Цель2

        рассмотреть( Цель1 или Цель2, Трасса,

                                                                Ответ1 и Ответ2) :-  !,

                not рассм_да( Цель1, Трасса, _ ),

                not рассм_да( Цель2, Трасса, _ ),

                                    % Нет положительного ответа

                рассмотреть( Цель1, Трасса, Ответ1),

                                    % Ответ1 отрицательный

                рассмотреть( Цель2, Трасса, Ответ2).

                                    % Ответ2 отрицательный

        рассмотреть( Цель, Трасса,

                                            Цель это Ответ было сказано) :-

                ответпольз( Цель, Трасса, Ответ).        % Ответ дан пользователем

        рассм_да( Цель, Трасса, Ответ) :-

                рассмотреть( Цель, Трасса, Ответ),

                положительный( Ответ).

        продолжить( Ответ1, Цель1 и Цель2, Трасса, Ответ) :-

                положительный( Ответ1),

                рассмотреть( Цель2, Трасса, Ответ2),

                ( положительный( Ответ2), Ответ = Ответ1 и Ответ2;

                отрицательный( Ответ2), Ответ = Ответ2).

        продолжить( Ответ1, Цель1 и Цель2, _, Ответ1) :-

                отрицательный( Ответ1).

        истинность( Вопрос это ПравдаЛожь было Найдено,

                                                                            ПравдаЛожь) :-  !.

        истинность( Ответ1 и Ответ2, ПравдаЛожь) :-

                истинность( Ответ1, правда),

                истинность( Ответ2, правда),  !,

                ПравдаЛожь = правда;

                ПравдаЛожь = ложь.

        положительный( Ответ) :-

                истинность( Ответ, правда).

        отрицательный( Ответ) :-

                истинность( Ответ, ложь).

Рис. 14. 10.  Основная процедура оболочки экспертной системы.

14. 5. 2.    Процедура    ответпольз

Прежде чем перейти к написанию процедуры ответпольз, давайте рассмотрим одну полезную вспомогательную процедуру

        принять( Ответ)

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных