Неупорядоченные факты. Сохранение и загрузка фактов. — КиберПедия 

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Неупорядоченные факты. Сохранение и загрузка фактов.

2017-12-21 649
Неупорядоченные факты. Сохранение и загрузка фактов. 0.00 из 5.00 0 оценок
Заказать работу

 

Основные сведения

Неупорядоченные (шаблонные) факты дают возможность пользователю абстрагироваться от структуры факта, задавая имена каждому из полей факта. Для задания шаблона, который затем может использоваться при доступе к полям по именам, используется конструкция deftemplate.

Структура: (deftemplate <имя шаблона>[«строка комментариев»])

(slot<имя слота 1>)

(slot<имя слота 2>)

…………………..

(slot<имя слота n>)

В шаблонном факторе значение любого слота можно задать по умолчанию с помощью служебного слова Default.

Для работы с шаблонными фактами используются функции

1) (modify <индекс факта><новое значение слота>) - используется для модификации неупорядоченного факта

Механизм работы функции modify аналогичен выполнению функции удаления и добавления факта.

2) (duplicate <индекс факта><нов. значение слота>) - позволяет копировать существующие факты по заданному шаблону, заменяя указанные значения слотов.

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

3) (save-facts <имя файла>) - сохранение текущего списка фактов

4)(load-facts <имя файла>) - загрузка фактов из текстового файла

 

Пример.

Создать файл, содержащий три неупорядоченных факта вида (student (name <фамилия>) (gruppa <группа>) (date <дата рождения>)). Загрузить данные факты.

В факте с индексом 2 изменить значение слота date, факт f-1 продублировать, изменив фамилию. Сохранить полученный список фактов.

 

Решение.

Сначала необходимо создать файл, содержащий описание шаблона для неупорядоченных фактов вида (student (name <фамилия>) (gruppa <группа>) (date <дата рождения>)) с помощью конструктора deftemplate. Значения слота gruppa зададим по умолчанию – ПИЭ4-1.

Для этого создайте новый текстовый файл (File->New) и наберите текст:

 

5

Рис. 15 Описание шаблона для неупорядоченных фактов

 

Сохраните файл под именем lab2-1.clp.

 

Для создания списка фактов создайте еще один текстовый файл и запишите 3 факта:

Рис. 16 Список неупорядоченных фактов

 

Сохраните файл под именем lab2-1-facts.clp. Исходные файлы подготовлены.

Прежде чем загрузить список фактов, необходимо загрузить в систему шаблон, описанный в файле lab2-1.clp. Для этого загрузите данный файл с помощью команд главного меню File->Load… Если после выполнения команды выведено сообщение TRUE, можно приступить к загрузке фактов с помощью команды load-facts:

 

Рис. 17 Просмотр списка фактов после загрузки из текстового файла lab2-1-facts.clp

 

Для изменения в факте с индексом 2 значение слота date, наберите команду (modify 2 (date 12-02-1985)) и просмотрите полученный список с помощью команды (facts) (рис.18):

Рис. 18 Результат модификации факта f-2

 

Для дублирования факта с индексом 1, наберите команду

(duplicate 1 (name Sidorov)) и просмотрите полученный список с помощью команды (facts):

Рис. 19 Результат дублирования факта f-1

 

Сохраните новый список фактов:

Рис. 20 Сохранение списка фактов в текстовый файл lab2-1-facts.clp

 

Для проверки очистите текущий список фактов, загрузите файл lab2-1.clp и сохраненные в файле lab2-1-facts.clp факты. Просмотрите список фактов:

Рис. 21 Просмотр списка фактов после загрузки из текстового файла lab2-1-facts.clp

 

Контрольные вопросы

1. Какая конструкция используется для создания неупорядоченных (шаблонных) фактов? Поясните ее структуру.

2. Какая функция применяется для модификации неупорядоченного факта?

3. Какая функция используется для копирования неупорядоченного факта?

4. Какая функция используется для сохранения текущего списка фактов в текстовый файл?

5. С помощью какой функции можно загрузить факты из текстового файла?

Задания для самостоятельной работы

1. А) Создать файл, содержащий три неупорядоченных факта вида (client (name <фамилия>) (in <инд.номер>) (citi <город проживания>)). Значений слота citi задать по умолчанию. Загрузить данные факты. В факте с индексом 1 изменить значение слота citi, а в факте с индексом 2 изменить фамилию. Факт f-3 продублировать, изменив in. Сохранить полученный список фактов.

Б). Загрузить полученный список фактов. Добавить 2 новых неупорядоченных факта вида, используя функцию assert. Удалить факты с индексами 1, 3, Просмотреть полученный результат. Сохранить полученный список фактов в другой файл.

2. А) Создать файл, содержащий три неупорядоченных факта вида (sotrudnik (name <фамилия>) (otdel <отдел>) (st <стаж работы>)) Значений слота otdel задать по умолчанию. Загрузить данные факты. В факте с индексом 1 изменить значение слота otdel, а в факте с индексом 3 изменить стаж работы. Факт f-2 продублировать, изменив фамилию. Сохранить полученный список фактов.

Б) Загрузить полученный список фактов. Добавить 2 новых неупорядоченных факта вида, используя функцию assert. Удалить факты с индексами 2, 4. Просмотреть полученный результат. Сохранить полученный список фактов в другой файл.

 


Поделиться с друзьями:

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.