Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаб4 clips

.doc
Скачиваний:
44
Добавлен:
09.04.2015
Размер:
38.4 Кб
Скачать

Лабораторная работа 4

ПРОЦЕСС ИНТЕРПРЕТАЦИИ

Цель работы: Изучить процесс интерпретации программы в среде CLIPS

4.1 Теоретические сведения

Теперь на простом примере познакомимся с возможностями, которые предоставляет среда разработки CLIPS в части отладки программы, состоящей из правил и фактов. Введите в текстовый файл правило, а затем загрузите этот файл в среду CLIPS.

(defrule start

(initial-fact) =>

(printout t "hello, world" crlf) )

Выполните команду reset. При выполнении команды reset все глобальные переменные получают начальные значения, определенные в конструкторе.

Введите эту команду в командной строке интерпретатора:

CLIPS> (reset)

либо выберите в меню команду Execution -> Reset, либо нажмите <CTRL+U> (последних два варианта возможны в версии, которая работает под Windows). Затем запустите интерпретатор. Для этого либо введите эту команду run в командную строку интерпретатора

CLIPS> (run)

либо выберите в меню команду Execution -> Run, либо нажмите <CTRL+R> (последних два варианта возможны в версии, которая работает под Windows).

В ответ программа должна вывести сообщение “hello, world, знакомое всем программистам мира. Для повторного запуска программы повторите команды reset и run.

Если в меню Execution -> Watch ранее был установлен флажок Rules или перед запуском программы на выполнение вы ввели в командную строку команду watch rules, то на экране появится результат трассировки процесса выполнения:

CLIPS> (run) FIRE 1 start: f-0 hello, world

В этом сообщении в строке, начинающейся с FIRE, выведена информация об активизированном правиле: start – это имя правила, а f-0 – имя факта, который «удовлетворил» условие в этом правиле. Команда watch позволяет организовать несколько разных режимов трассировки, с деталями которых вы можете познакомиться в Руководстве пользователя. Если перед запуском программы вы ввели:

CLIPS> (dribble-on "dribble.dp")

TRUE

то выведенный протокол трассировки будет сохранен в файле dribble.dp. Сохранение протокола прекратится после ввода команды:

CLIPS> (dribble-off)

TRUE

Это очень удобная опция, особенно на этапе освоения языка.

Команда ppdefglobal выводит в диалоговое окно системы определение заданной глобальной переменной. Имя глобальной переменной должно быть задано без вопросительного знака и символов *, т.е. name для переменной

?*name*.

Команда list-defglobals предназначена для отображения в диалоговом окне списка имен всех определенных в системе глобальных переменных.

(list-defglobals [<имя-модуля>])

Если необязательный параметр <имя-модуля> не указан, то данная команда выводит имена глобальных переменных, определенных в текущем модуле. Если параметр содержит имя конкретного модуля, команда list-defglobal выводит список переменных, определенных в заданном модуле. Допускается использование символа *. В этом случае команда выведет в диалоговое окно имена всех глобальных переменные, определенных во всех модулях системы.

Команда show-defglobals, в отличие от команды list-defglobals, выводит в диалоговое окно CLIPS не только имена глобальных переменных, но и их значения. В остальном эти две команды практически идентичны.

(show-defglobals [ <имя-модуля> ])

Команда ppdeffunction выводит определение заданной функции на экран:

(ppdeffunction <имя-функции>)

Команда list-deffunctions предназначена для отображения в диалоговом окне списка имен всех определенных в системе функций:

(list-deffunctions)

4.2 Задание к работе

/*вставить в отладочный файл

(defrule start

(initial-fact) =>

(printout t "hello, world" crlf) )

*/

  1. Загрузить в среду CLIPS программу и выполнить ее трассировку. Выполнить трассировку в файл.

(watch rules)

//Load buffer

(reset)

(run)

//трассировка в файл(сбрасываем clips)

(dribble-on “dribble.txt”)

(watch rules)

//Load buffer

(reset)

(run)

(dribble-off)

  1. Загрузить в среду CLIPS программу и вывести информацию об объявленных глобальных переменных.

(defglobal

?*x* = 1

?*y* = 2

?*z* = 4.5)

(list-defglobals *)//вывод списка всех глобальных переменных(можно и без *)

(ppdefglobal z)//вывод значения переменной

  1. Загрузить в среду CLIPS программу и вывести информацию о фактах и правилах.// не совсем понятно как вывести + в теории нет инфы, наверно подразумевалось вывести список функций

//вводим программу с фактами и правилами

(deffacts spisok (odin) (dva) (tri))

(reset)

(defrule spisok (odin) => (assert(exemple)))

(reset)

(run)

//вывел в файл, по другому не смог

(save-facts "factsfile.txt")

(save "rulesfile.txt")

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]