Студопедия — Пример 15.11. Работа с составными величинами
Студопедия Главная Случайная страница Обратная связь

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

Пример 15.11. Работа с составными величинами






(create$ hammer drill saw screw pliers wrench)

(create$ (+ 34) (* 2 3) (/84))

(nth$ 3 (create$ a b с d e f g))

(nth$ 10 (create$ a b с d e f g))

(member$ blue (create$ red 3 "text" 8.7 blue))

(member$ 4 (create$ red 3 "text" 8.7 blue))

(member$ (create$ b c) (create$ abed))

(subsetp

(create$ hammer saw drill)

(create$ hammer drill wrench pliers saw))

(subsetp

(create$ wrench crowbar)

(create$ hammer drill wrench pliers saw))

 

Рис. 15.11. Работа с составными величинами

Функции explode$ и implode$ предназначены для преобразования строки в составную величину и составной величины в строку соответственно. Пустая строка создает составную величину нулевой длины. Элементы строки типов, отличных от symbol, string, integer, float или instance-name (например, переменные), преобразуются в тип string. Синтаксис и примеры использования этих функций приведены ниже (см. также рис. 15.12).

Определение 15.36. Функции explode$ и implode$

 

(explode$ <строковое выражение>)

(implode$ <составная-величина>)

Пример 15.12. Использование функций еxplode$ и implode$

(explode$ "hammer drill saw screw")

(explode$ "1 2 abc 3 4 \"abc\" \"def\"")

(explode$ "?x ~)")

(implode$ (create$ hammer drill screwdriver))

(implode$ (create$ 1 "abc" def "ghi" 2))

(implode$ (create$ "abc def ghi"))

 

Рис. 15.12. Использование функций explode$ и implode$

 

Функция delete$ удаляет выбранные поля из составной величины и воз­вращает модифицированную составную величину, из которой удален отре­зок, заданный индексами своего первого и последнего элемента. Если тре­буется удалить одно поле, то индекс начала отрезка должен совпадать с ин­дексом конца.

Определение 15.37. Функция delete$

(delete$ <составная-величина> <индекс-начала> <индеке-конца>)

Для извлечения подпоследовательности из составной величины служит функция subseq$. Определение границ извлекаемой подпоследовательности происходит так же, как и у функции delete$.

 

Определение 15.38. Функция subseq$

(subseq$ <составная-величина> <индекс-начала> <индекс-конца>)

Функция replace$ предназначена для замены выбранного диапазона эле­ментов составной величины на заданную простую или составную величину. Функция возвращает новую составную величину, содержащую измененный фрагмент.

Определение 15.39. Функция replace$

(replace$ <изменяемая-составная-величина> <индекс-начала> <индекс-конца> <простая-или-составная-величина>+)

Для добавления нескольких простых или составных величин в заданное место некоторой составной величины предназначена функция insert$.

Определение 15.40. Функция insert$

(insert$ <изменяемая-составная-величина> <индекс-начала> <простая-или-составная-величина>+)

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

Пример 15.13. Использование функций, изменяющих содержание составной величины

(delete$ (create$ hammer drill saw pliers wrench) 3 4)

(delete$ (create$ computer printer hard-disk) 1 1)

(subseq$ (create$ hammer drill wrench pliers) 3 4)

(subseq$ (create$ 1 "abc" def "ghi" 2) 1 1)

(replace$ (create$ drill wrench pliers) 3 3 machete)

(replace$ (create$ abed) 2 3 x у (create$ q r s))

(insert$ (create$ abed) 1 x)

(insert$ (create$ abed) 4 у z)

(insert$ (create$ abed) 5 (create$ q r))

 

Рис. 15.13. Использование функций, изменяющих содержание составной величины

Для работы с составными переменными в рамках парадигмы списков, кото­рая часто используется в различных логических языках программирования, например Пролог, CLIPS предоставляет функции first$ и rest$. Синтаксис этих функций и примеры приведены ниже (см. также рис. 15.14).

Определение 15.41. Функции first$ и rest$

 

(first$ <составная-величина>)

(rest$ <составная-величина>)

Первая функция возвращает в качестве составного значения первое поле заданной составной величины, а вторая — заданную составную величину без первого поля.

Пример 15.14. Использование функций first$ и rest$

 

(first$ (create$ abc))

(first$ (create$))

(rest$ (create$ a b с))

(rest$ (create$))

Рис. 15.14. Использование функций first$и rest$

Функция length$ возвращает число полей (целый тип), содержащихся в со­ставной величине. Если параметр length$ не соответствует необходимому типу, функция возвращает — 1.

Определение 15.42. Функция length$

(length$ <составная-величина>)

Функция delete-member$ удаляет все вхождения заданных пользователем элементов или составных величин из начальной составной величины.

Определение 15.43. Функция delete-member$

(delete-member$ <составная-величина> <выражение>+)

Для замены всех вхождений элементов или составных величин из начальной составной величины на некоторое выражение служит функция replace-member$. Первым аргументом этой функции является исходная составная величина. Второй аргумент задает простое или составное значение, на которое будут заменены все найденные вхождения. Третий аргумент определяет произвольное количество простых или составных элементов, которые необходимо найти и заменить в исходной составной величине.

Определение 15.44. Функция replace-member$

(replace-member$ <составная-величина> <выражение> <>)

Ниже представлены примеры использования функций delete-member$ и replace-member$ (см. также рис. 15.15).

Пример 15.15. Использование функций delete-member$ и replace-member$

(delete-member$ (create$ a b a c) b a)

(delete-member$ (create$ a b с с b a) (create$ b a))

(replace-member$ (create$ a b a b) (create$ a b a) a b)

(replace-member$ (create$ a b a b) (create$ a b a) (create$ a b))

 

Рис. 15.15. Использование функций delete-member$ и replace-member$

15.5. Функции ввода/вывода

 

Система ввода/вывода, используемая CLIPS, называется маршрутизацией ввода/вывода (I/O routers). Одна из ключевых особенностей системы мар­шрутизации ввода/вывода — использование логических имен. Логическиеимена позволяют обращаться к устройствам ввода/вывода унифицирован­ным способом, без необходимости учета особенностей конкретного устрой­ства. Многие функции CLIPS используют логические имена в качестве па­раметров. Логическое имя, созданное пользователем, должно быть строкой, числом или принадлежать типу symbol. CLIPS предоставляет несколько пре­допределенных логических имен, список которых приведен в табл. 15.8.

Таблица 15.8. Предопределенные логические имена CLIPS

Имя Описание
stdin Логическое имя, определяющее устройство по умолчанию, предназначенное для ввода информации от пользователя. Если такое имя определено, его используют функции read и readln
stdout Логическое имя, определяющее устройство по умолчанию, предназначенное для вывода информации для пользователя. Если такое имя определено, его используют функции printout и format
wclips Логическое имя, определяющее устройство, которое использует справочная система CLIPS
wdialog Устройство, ассоциированное с данным логическим именем, служит для отправки пользователю информационных сообщений
wdisplay Отображение такой информации, как правила, факты и т. д., производится на устройство, ассоциированное с этим логическим именем
werror Данное логическое имя определяет устройство, на которое будут выводиться все сообщения об ошибках
wwarning Устройство, ассоциированное с данным логическим именем, используется для отображения предупреждений
wtrase Вся отладочная информация посылается на устройство, ассоциированное с данным логическим именем

Подробную информацию о логических именах и системе маршрутизации ввода/вывода можно найти в книге "CLIPS Reference Manual, Volume II, Advanced Programming Guide ".

Описание функций ввода/вывода, предоставляемых системой CLIPS, приведены в табл. 15.9.


Таблица 15.9. Функции ввода/вывода

Функция Описание
open Открытие файла
close Закрытие файла
printout Вывод информации на заданное устройство
read Ввод данных с заданного устройства
readline Ввод строки с заданного устройства
format Форматированный вывод информации на заданное устройство
rename Переименование файла
remove Удаление файла

Функция open предоставляет пользователю возможность открыть файл в функции или из правой части правила и присвоить файлу определенное ло­гическое имя. Эта функция принимает три аргумента: имя открываемого файла, логическое имя, которое будет использоваться системой вво­да/вывода CLIPS для связи с этим файлом и, наконец, параметр, опреде­ляющий способ открытия файла. Возможные варианты значений аргумента, определяющего способ открытия файла, приведены в табл. 15.10.

Таблица 15.10. Способы открытия файла

Значение аргумента Описание
"r" Доступ только для чтения
"w" Доступ только для записи
"r+" Доступ для чтения и записи
"а" Добавление только в конец файла
"wb" Возможность записи двоичных файлов






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



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

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

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

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

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Краткая психологическая характеристика возрастных периодов.Первый критический период развития ребенка — период новорожденности Психоаналитики говорят, что это первая травма, которую переживает ребенок, и она настолько сильна, что вся последую­щая жизнь проходит под знаком этой травмы...

Типовые ситуационные задачи. Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт. ст. Влияние психоэмоциональных факторов отсутствует. Колебаний АД практически нет. Головной боли нет. Нормализовать...

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

Признаки классификации безопасности Можно выделить следующие признаки классификации безопасности. 1. По признаку масштабности принято различать следующие относительно самостоятельные геополитические уровни и виды безопасности. 1.1. Международная безопасность (глобальная и...

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