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

отчет3

.docx
Скачиваний:
3
Добавлен:
18.02.2023
Размер:
173.22 Кб
Скачать

Министерство образования Республики Беларусь

УО «Полоцкий государственный университет»

Факультет информационных технологий

Кафедра вычислительных систем и сетей

ОТЧЕТ

О выполнении лабораторной работы №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 такую, как родовые функции; изучили методы их создания, приемы и способы использования; изучили алгоритм родового связывания.

Соседние файлы в предмете Интеллектуальные информационные системы