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

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

Пример 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 оперирует с двумя категориями...

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

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

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

Примеры задач для самостоятельного решения. 1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P   1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P...

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