Программирование на языке Пролог для искусственного интеллекта




Процедура ответпольз - часть 2


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

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

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

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

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

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

Следует заметить, что процедурой принять

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

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

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

        . . .

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

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

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

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

          ... )

        Процедура

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

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

Сначала процедура ответпольз должна проверить, является ли Цель

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

задается отношением

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

которое в дальнейшем будет усовершенствовано. Если спросить можно, то утверждение Цель

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


Содержание  Назад  Вперед