Определение 7.2. Синтаксис функции bind
(bind <имя-переменной> <выражение>*)
Рис. 7.4.Установка режима просмотра изменения глобальных переменных
Рис. 7.5.Режим просмотра изменения глобальных переменных
Параметр выражения является необязательным. Если он не задан, то переменной будет установлено начальное значение, заданное в конструкторе defglobal. В случае если выражение было задано, то его значение будет вычислено и результат присвоен переменной. Если было задано несколько выражений, все они будут вычислены, из их результатов будет составлено составное поле, которое будет присвоено глобальной переменной.
Функция bind возвращает значение false в случае, если переменной по какой-то причине не было присвоено никакого значения. В противном случае функция возвращает значение, присвоенное переменной.
Поскольку переменные в CLIPS слабо типизированы, типы значений, присваиваемые одной и той же переменной, в разные моменты времени могут не совпадать.
В качестве примера попробуйте присвоить переменной х следующие значения: (+ 5 10),
(create$ abcd), три отдельных выражения (с), (b) и (а), а так же не присваивать переменной вообще никакого выражения. Результаты описанных действий приведены на рис. 7.6.
Рис. 7.6.Изменение типа глобальной переменной
Обратите внимание на то, что глобальная переменная х в нашем примере постоянно меняла тип своего значения.
ГЛАВА 8. Функции
Как уже отмечалось, CLIPS поддерживает не только эвристическую парадигму представления знаний (в виде правил), но и процедурную парадигму, используемую в большинстве языков программирования, таких, например, как Pascal или С. Функции в CLIPS являются последовательностью действий с заданным именем, возвращающей некоторое значение или выполняющей различные полезные действия (например, вывод информации на экран). Как уже упоминалось в гл. 4, в CLIPS существуют внутренние и внешние функции. Внутренние функции реализованы средой CLIPS, поэтому их можно использовать в любой момент. Описание внутренних функций приведено в гл. 15. Внешние функции — это функции, написанные пользователем. Внешние функции можно создавать как с помощью среды CLIPS, так и на любых других языках программирования, а затем подключать готовые, откомпилированные исполнимые модули к CLIPS. Однако эта тема выходит за рамки данной книги. Подробную информацию о создании внешних функций можно найти в книге "CLIPS Reference Manual, Volume II, Advanced Programming Guide". Для создания новых функций в CLIPS используется конструктор deffunction, описанный далее в этой главе.
8.1. Конструктор deffunction и способы работы с внешними функциями
Конструктор deffunction позволяет пользователю создавать новые функции непосредственно в среде CLIPS. Способ вызова функций, определенных пользователем, эквивалентен способу вызова внутренних функций CLIPS. Вызов функции осуществляется по имени, заданному пользователю. За именем функции следует список необходимых аргументов, отделенный одним или большим числом пробелов. Вызов функции вместе со списком аргументов должен заключаться в скобки. Последовательность действий определенной с помощью конструктора deffunction функции исполняется интерпретатором CLIPS (в отличие от функций, созданных на других языках программирования, которые должны иметь уже готовый исполнимый код).
Синтаксис конструктора deffunction включает в себя 5 элементов:
Ø имя функции;
Ø необязательные комментарии;
Ø список из нуля или более параметров;
Ø необязательный символ групповых параметров для указания того, что функция может иметь переменное число аргументов;
Ø последовательность действий или выражений, которые будут выполнены (вычислены) по порядку в момент вызова функции.
Дата добавления: 2021-12-14; просмотров: 256;