отчет3
.docxМинистерство образования Республики Беларусь
УО «Полоцкий государственный университет»
Факультет информационных технологий
Кафедра вычислительных систем и сетей
ОТЧЕТ
О выполнении лабораторной работы №3 по дисциплине
«Интеллектуальные информационные системы»
на тему «Создание новых функций в среде CLIPS при помощи конструктора deffunction. Работа с родовыми функциями»
Выполнил студент группы
Проверил
Полоцк
Цель работы: научиться общим приемам работы в среде CLIPS. Научиться использовать имеющиеся возможности CLIPS для работы с глобальными переменными. Научиться создавать новые функций в среде CLIPS при помощи конструктора deffunction. Научиться использовать конструкцию языка CLIPS такую, как родовые функции; изучить методы их создания, приемы и способы использования; изучить алгоритм родового связывания.
Задание: Используя конструкторы deffunction, defgeneric и defmethod создайте пользовательскую функцию, родовую пользовательскую функцию и пять различных методов к ней.
Определим пользовательскую функцию «quick-add» при помощи конструктора deffunction, которая будет добавлять сразу несколько фактов о заёмщике. Определение правила и его выполнение представлено на рисунке 1.
Данный конструктор имеет следующий вид:
((deffunction <имя-функции> [<комментарии>] <обязательные-параметры>
[<групповой-параметр>] <действия>)
<обязательные-параметры> ::= <выражение-простое-поле>
<групповой-параметр> ::= <выражение-составное-поле>
Рисунок 1 – Определение пользовательской функции «quick-add» и её выполнение.
Определим пользовательскую родовую функцию «add» при помощи конструктора defgeneric, которая будет содержать 5 методов.
Данный конструктор имеет следующий вид:
(defgeneric <имя-функции> [комментарии])
Определим пять методов при помощи конструктора defmethod.
Данный конструктор имеет следующий вид:
(defmethod <имя-функции>
[<индекс>]
[<комментарии>]
(<ограничения-параметра>*
[<групповой-параметр>])
<действие>*)
<ограничения-параметров> ::= <простая-переменная> |
(<простая-переменная>
<ограничение-по-типу>*
[<ограничение-по-запросу>])
<групповой-параметр> ::= <составная-переменная> |
(<составная-переменная>
<ограничение-по-типу>*
[<ограничение-по-запросу>])
<ограничение-по-типу> ::= <имя-класса>
<ограничение-по-запросу> ::= <глобальная-переменная> |
<вызов-функции>
Определение конструктора, его методов представлено на рисунке 2.
Рисунок 2 – Определение родовой пользовательской функции «add» и его методов.
Выполним пользовательскую функцию «add» с разными параметрами, используя различные методы, чтобы проверить их работу (рисунок 3).
Рисунок 3 – Выполнение пользовательской функции «add» с разными параметрами.
Создадим функцию, которая находит все натуральные трехзначные числа, в каждом из которых первая цифра в три раза меньше последней его цифры (рисунок 4) и выполним ее (рисунок 5).
Рисунок 4 – Определение пользовательской функции «difficult».
Рисунок 5 – Выполнение пользовательской функции «difficult».
Вывод: научились общим приемам работы в среде CLIPS. Научились использовать имеющиеся возможности CLIPS для работы с глобальными переменными. Научились создавать новые функций в среде CLIPS при помощи конструктора deffunction. Научились использовать конструкцию языка CLIPS такую, как родовые функции; изучили методы их создания, приемы и способы использования; изучили алгоритм родового связывания.