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

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

Пример 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; просмотров: 544. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

ОПРЕДЕЛЕНИЕ ЦЕНТРА ТЯЖЕСТИ ПЛОСКОЙ ФИГУРЫ Сила, с которой тело притягивается к Земле, называется силой тяжести...

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

Понятие массовых мероприятий, их виды Под массовыми мероприятиями следует понимать совокупность действий или явлений социальной жизни с участием большого количества граждан...

Роль органов чувств в ориентировке слепых Процесс ориентации протекает на основе совместной, интегративной деятельности сохранных анализаторов, каждый из которых при определенных объективных условиях может выступать как ведущий...

Лечебно-охранительный режим, его элементы и значение.   Терапевтическое воздействие на пациента подразумевает не только использование всех видов лечения, но и применение лечебно-охранительного режима – соблюдение условий поведения, способствующих выздоровлению...

Тема: Кинематика поступательного и вращательного движения. 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью, проекция которой изменяется со временем 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью...

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