Чтение онлайн

на главную - закладки

Жанры

Неизвестно

Шрифт:

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

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

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

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

продолжить( Ответ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,

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

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

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

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

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

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

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

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

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

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

. . .

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

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

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

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

... )

Процедура

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

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

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

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

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

Все вышеизложенное можно запрограммировать (в качестве первой попытки) следующим образом:

Поделиться:
Популярные книги

Студиозус 2

Шмаков Алексей Семенович
4. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
6.25
рейтинг книги
Студиозус 2

Кодекс Крови. Книга ХVIII

Борзых М.
18. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.25
рейтинг книги
Кодекс Крови. Книга ХVIII

Ожерелье Странника

Хаггард Генри Райдер
Приключения:
исторические приключения
7.50
рейтинг книги
Ожерелье Странника

Кол

Лаймон Ричард Карл
Фантастика:
ужасы и мистика
6.25
рейтинг книги
Кол

Инженер Петра Великого 4

Гросов Виктор
4. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Инженер Петра Великого 4

Гримуар темного лорда IX

Грехов Тимофей
9. Гримуар темного лорда
Фантастика:
попаданцы
альтернативная история
аниме
фэнтези
5.25
рейтинг книги
Гримуар темного лорда IX

Пустоши

Сай Ярослав
1. Медорфенов
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Пустоши

Наследие Маозари 7

Панежин Евгений
7. Наследие Маозари
Фантастика:
боевая фантастика
юмористическое фэнтези
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 7

Антон Чехов

Труайя Анри
Проза:
историческая проза
5.00
рейтинг книги
Антон Чехов

Контрольный поцелуй

Донцова Дарья
8. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
9.15
рейтинг книги
Контрольный поцелуй

Магнатъ

Кулаков Алексей Иванович
4. Александр Агренев
Приключения:
исторические приключения
8.83
рейтинг книги
Магнатъ

Егерь. Системный зверолов

Скиба Николай
1. Зверолов
Фантастика:
рпг
уся
фэнтези
фантастика: прочее
попаданцы
6.50
рейтинг книги
Егерь. Системный зверолов

Наши предки

Кальвино Итало
Проза:
классическая проза
5.00
рейтинг книги
Наши предки

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник