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



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

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

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

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

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

Понятие метода в психологии. Классификация методов психологии и их характеристика Метод – это путь, способ познания, посредством которого познается предмет науки (С...

ЛЕКАРСТВЕННЫЕ ФОРМЫ ДЛЯ ИНЪЕКЦИЙ К лекарственным формам для инъекций относятся водные, спиртовые и масляные растворы, суспензии, эмульсии, ново­галеновые препараты, жидкие органопрепараты и жидкие экс­тракты, а также порошки и таблетки для имплантации...

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

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

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

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