Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Пример 15.19. Использование функции bind в обработчиках сообщений





 

(defclass A (is-a USER)

(role concrete)

(slot x)

(slot y))

(defmessage- handler A init after ()

(bind?self: x 3)

(bind?self: y 4))

(make-instance a of A)

(send [a] print)

 

Рис. 15.18. Использование функции bind в обработчиках сообщений

Замечание

Для наглядности при демонстрации работы данных примеров были включены режимы просмотра изменений глобальных переменных и слотов объектов.

Функция if реализует стандартный оператор ветвления "если...то...иначе", применяемый практически во всех языках программирования. Эта функция позволяет задавать некоторое условие, в зависимости от выполнения (или невыполнения) которого будут выбраны те или иные действия.

Определение 15.54. Функция if

(if <выражение>

then

<действие>*

[else

<действие>*])

Если условие, заданное с помощью выражения, выполняется (т. е. не явля­ется ложным), выполняются действия, определенные в блоке then. В про­тивном случае производятся действия из блока else. В каждом из таких блоков может быть задано любое количество действий. Любой блок может содержать вложенную конструкцию if...then...else. Блок else является необязательным. Значение, возвращаемое функцией if, равно значению последнего вычисленного выражения или выполненного действия. Ниже приведен пример использования функции if.

Пример 15.20. Использование функции if

(defrule closed-valves (temp high) (valve?v closed)

(if (=?v 6) then

(printout t "The special valve "?v " is closed!" crlf) (assert (perform special operation))

else

(printout t "Valve "?v " is normally closed" crlf)))

Замечание

Обычно в подобных случаях предпочтительней использование двух правил, как показано в примере 15.21.

Пример 15.21. Альтернатива использованию функции if в правилах

 

(defrule closed-valves-number-6

(temp high)

(valve 6 closed)

=>

(printout t "The special valve 6 is closed!" crlf)

(assert (perform special operation)))

(defrule closed-valves-other-than-6

(temp high)

(valve?v&~6 closed)

=>

(printout t "Valve "?v " is normally closed" crlf))

Функция while позволяет выполнять простой цикл с предусловием.

Определение 15.55. Функция while

(while <выражение> [do]

<действие>*)

Для задания условия в выражении цикла while могут быть использованы любые предикатные функции. В теле цикла может содержаться произвольное количество действий, включая вложенные циклы или функцию if. Проверка условия выполняется перед выполнением тела цикла. Цикл вы­полняется до тех пор, пока условие остается истинным. Определение цикла while может содержать необязательный символ do между условием и пер­вым действием тела цикла. Для прерывания работы цикла могут быть ис­пользованы функции break и return, описанные ниже. Если для прерыва­ния работы цикла не использовалась функция return, функция while возвращает значение false.

Помимо функции while CLIPS предоставляет также функцию loop-for-count, которая реализует концепцию простого итеративного цикла, выпол­няющего определенные действия заданное число раз.







Дата добавления: 2015-08-30; просмотров: 591. Нарушение авторских прав; Мы поможем в написании вашей работы!




Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Метод Фольгарда (роданометрия или тиоцианатометрия) Метод Фольгарда основан на применении в качестве осадителя титрованного раствора, содержащего роданид-ионы SCN...

Потенциометрия. Потенциометрическое определение рН растворов Потенциометрия - это электрохимический метод иссле­дования и анализа веществ, основанный на зависимости равновесного электродного потенциала Е от активности (концентрации) определяемого вещества в исследуемом рас­творе...

Гальванического элемента При контакте двух любых фаз на границе их раздела возникает двойной электрический слой (ДЭС), состоящий из равных по величине, но противоположных по знаку электрических зарядов...

Устройство рабочих органов мясорубки Независимо от марки мясорубки и её технических характеристик, все они имеют принципиально одинаковые устройства...

Ведение учета результатов боевой подготовки в роте и во взводе Содержание журнала учета боевой подготовки во взводе. Учет результатов боевой подготовки - есть отражение количественных и качественных показателей выполнения планов подготовки соединений...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

Studopedia.info - Студопедия - 2014-2025 год . (0.007 сек.) русская версия | украинская версия