Неизвестно - Prolog

Здесь есть возможность читать онлайн «Неизвестно - Prolog» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Prolog: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Prolog»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Prolog — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Prolog», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

рассмотреть( Цель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. Процедура ответпольз

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

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

В процессе диалога часто возникает ситуация, когда от пользователя ожидается ответ "да", "нет" или "почему". Процедура принятьпредназначена для того, чтобы извлечь один из этих ответов, понимая его правильно и в тех случаях, когда пользователь применяет сокращения ('д' или 'н') или делает ошибки. Если ответ пользователя непонятен, то принятьпросит дать другой вариант ответа.

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

read( Ответ1),

означает( Ответ1, Значение), !,

% Ответ1 означает что-нибудь?

Ответ = Значение; % Да

nl, write( 'Непонятно, попробуйте еще раз, % Нет

пожалуйста'), nl,

принять( Ответ). % Новая попытка

означает( да, да).

означает( д, да).

означает( нет, нет).

означает( н, нет).

означает( почему, почему).

означает( п, почему).

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

принять( да), интерп_да( ...);

принять( нет), интерп_нет( ...);

. . .

Здесь, если пользователь ответит "нет", то программа попросит его повторить свой ответ. Поэтому более правильный способ такой:

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

( Ответ = да, интерп_да( ...);

Ответ = нет, интерп_нет( ...);

... )

Процедура

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

спрашивает пользователя об истинности утверждения Цель. Ответ- это результат запроса. Трассаиспользуется для объяснения в случае, если пользователь спросит "почему".

Сначала процедура ответпольздолжна проверить, является ли Цельинформацией, которую можно запрашивать у пользователя. Это свойство объекта Цельзадается отношением

можно_спросить( Цель)

которое в дальнейшем будет усовершенствовано. Если спросить можно, то утверждение Цельвыдается пользователю, который, в свою очередь, указывает истинно оно или ложно. Если пользователь спросит "почему", то ему выдается Трасса. Если утверждение Цельистинно, то пользователь укажет также значения содержащихся в нем переменных (если таковые имеются).

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Prolog»

Представляем Вашему вниманию похожие книги на «Prolog» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Prolog»

Обсуждение, отзывы о книге «Prolog» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x