- •Оглавление
- •Предисловие
- •1. Общие сведения о языке и среде разработки CLIPS
- •1.1. Системы продукций и CLIPS
- •1.2. Основы работы в консоли CLIPSJNI
- •1.3. Основы работы в среде CLIPSWin
- •1.4. Механизмы представления знаний в CLIPS
- •1.5. Пример разработки БЗ и работы с ней в среде CLIPS
- •1.6. Пример использования эвристического механизма представления знаний совместно с процедурным
- •2. Основные конструкции языка CLIPS
- •2.1. Примитивные типы данных языка CLIPS
- •2.2. Особенности вызова функций в языке CLIPS
- •2.3. Факты в языке CLIPS
- •2.3.1. Позиционные факты
- •2.3.2. Непозиционные факты
- •2.4. Операции над фактами
- •2.5. Правила в языке CLIPS
- •2.5.1. Объявление и добавление новых правил
- •2.5.2. Один из подходов к разрешению конфликтов
- •2.6. Групповые символы для простых и составных полей
- •2.7. Переменные в CLIPS
- •2.8. Глобальные переменные
- •2.9. Пользовательские функции
- •3. Примеры построения простых интеллектуальных систем
- •3.1. Разработка простейшей экспертной системы
- •3.2. Пример решения задач на планирование
- •3.2.1. Программа ”Робот и ящик”
- •3.2.2. Запуск и трассировка программы ”Робот и ящик”
- •3.3. Пример использования ООП в CLIPS.
- •Приложение 2. Использование образцов в правилах.
- •Приложение 3. Стратегии разрешения конфликтов
- •Приложение 4. Работа с модулями в CLIPS
- •Литература и Интернет-ресурсы
2. ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКА CLIPS
2.1. Примитивные типы данных языка CLIPS
Примитивными типами данных языка CLIPS являются: float, integer, symbol, string, external-address, fact-address, instance-name, instance-address.
Для хранения числовой информации предназначаются типы float и integer, для символьной – symbol и string.
Числа в CLIPS могут быть целого и вещественного типов. Последние можно представить в нормальной или экспоненциальной формах. Любое число, состоящее только из цифр, перед которыми стоит знак, сохраняется как integer, все остальные как float. Например, 123; -45; +67; 809е3; 145.09; -3.2; -32.3е-7.
Данными типа symbol может быть любая последовательность символов, начинающаяся с не управляющего ASCII-символа и заканчивающаяся ограничителем. Символы-разделители: пробел, табуляция, двойные кавычки, (, ), &, |, <, >, ~, ; . Например, good Hello B76-HI then_new_str (then_tab) bad_value.
Данные типа symbol не могут содержать в своем составе, имеющиеся в языке CLIPS зарезервированные слова. Их список достаточно велик, и его можно найти в документации по языку.
Данные типа string представляет собой строку символов, заключенную в двойные кавычки. Например, "Life is good" "a and b" "1 number". Причем, если внутри строки встречаются двойные кавычки, то перед ними надо поместить символ (\) ("a and \"В"). Использование остальных типов данных выходит за рамки настоящего раздела. Для знакомства с ними обратитесь к документации и соответствующей литературе.
2.2. Особенности вызова функций в языке CLIPS
Функция в CLIPS – это часть кода, имеющая имя и возвращающая полезный результат или выполняющая полезные действия (например, отображение информации на экране) Функции, не возвращающие результат и выполняющие полезную работу, обычно называются командами. CLIPS оперирует несколькими типами функций – внешние функции, системные функции, пользовательские функции, родовые функции.
Внешние могут создаваться на других языках программирования (например, С), и затем подключаются к CLIPS на этапе компилирования
27
