- Философия, эзотерика:
- Религии:
- Познавательное
(обо всём)
/* GoogleAds */
Объекты утверждений представляют собой данные. Тип простых объектов ограничен 6 типами доменов. Рассмотрим такой пример утверждения:
owner(«Mary», «Garfield»). /* У Мери есть Гарфильд */
Первый объект Mary имеет простую структуру. Он представляет сам себя. То же можно сказать и про объект Garfield.
Любой объект, представляющий сам себя, называется простым объектом. Аналогично, структура, состоящая из простых объектов, называется простой структурой.
Утверждение owner отражает тот факт, что Mary обладает Garfield, который может быть либо именем домашнего животного Mary, либо названием книги. Для разделения этих случаев утверждение можно записать в форме, более определенно описывающей объект:
/* У Мери есть любимец - Гарфильд */ owner(“Mary”,pet(“Garfield”)).
/* У Мери есть книга - «Гарфильд» */ owner(«Mary»,book(«Garfield»)).
Объект, представляющий другой объект или совокупность объектов, называется составным объектом. Записанные же таким образом предикаты owner называются составными структурами, поскольку они скомпонованы из составных объектов.
В данном примере pet представляет Garfield в первом утверждении, в то время как book - во втором, здесь pet и book являются составными объектами. Объекты, которые они представляют, заключены в скобки.
Утверждение:
likes(«Tom»,apples,orange,banana).
констатирует, что Том любит фрукты: яблоки, апельсины и бананы. Все эти три вида фруктов можно объединить в отдельной структуре:
fruits(apples,orange,banana).
В результате появляется составной объект, который поясняет отношение:
likes(“Tom”,fruits(apples,orange,banana)).
(Обратите внимание на двойные скобки в конце утверждения.)
Терм fruits в этом утверждении называется функтором. Функтор является первым термом составного объекта. Функтор составного объекта есть на самом деле предикат, хотя он и вставлен внутрь другого предиката. Главным функтором здесь является предикат likes.
Для облегчения написания утверждений и предикатов в данной форме Пролог позволяет объявлять составные объекты в разделе domains:
domains personal_liking = fruits(type1,type2,type3) type1,type2,type3 = symbol
Имя домена personal_liking является именем составного объекта, образованного при помощи функтора fruits. Имя fruits представляет одновременно составной объект и функтор.
Если объекты структуры принадлежат к одному и тому же типу доменов, то этот объект называется однодоменной структурой. Структура с объектами apples, peaches и oranges (все типа symbol), является однодоменной структурой.
Если структура содержит объекты разных типов, она называется многодоменной структурой. Примером тому совокупность объектов apples, r и 16. Здесь apples имеет тип symbol, r - тип char, 16 - тип integer.
Таким образом, составной объект является определенной структурой доменов. Каждая структура предполагает особое представление фактов в базе данных.
Структура обеспечивает средство сортировки объектов по категориям. Ссылки на доменную структуру осуществляются по имени функтора.
Диаграммы - средство анализа и наглядного представления составных структур. Доменная структурная диаграмма (ДСД) программы Программа "Библиотека":
Структура содержит четыре объекта: title, author, publisher и year.
Компонентой предикатной структурной диаграммы (ПСД) является ДСД. book здесь является функтором. ПСД программы содержит 3 уровня.
Эти диаграммы хорошо демонстрируют организацию доменов и предикатов. Подобные диаграммы полезны для представления компонент структур. Верхние уровни показывают общие черты структуры, а нижние детализируют представление о ней.
ДСД и ПСД являются удобным средством при разработке и документировании программ Пролога. Они также могут оказать помощь при написании эффективных правил.
Усилия и время, затраченные при разработке доменных и предикатных структур с лихвой вознаградят вас удобством пользования созданной вами базы данных. Чем больше функторов, тем более определенные запросы можно адресовать базе данных.
Программа «Библиотека-2» демонстрирует использование трехуровневой доменной структуры и четырехуровневой предикатной.
Программа "Библиотека-3" демонстрирует составной объект, состоящий из двух двухуровневых структур.
Представление данных часто требует наличия большого числа структур. В Прологе эти структуры должны быть описаны. Иногда возникают трудности с предикатами, работающими с объектами этих доменов. Для устранения данного недостатка Пролог предлагает пользователю альтернативные описания доменов.
Пролог не делает различия между функтором и доменной структурой. Это средство введено в Пролог преднамеренно, так как оно очень удобно именно в декларативных языках.
Применение альтернативных доменов делает программу более «управляемой», а программирование - более эффективным.
!!Рекомендуем: Семейная Энциклопедия Здоровья ⇒ Что должен знать современный человек? ⇒ Самоанализ. Работа над собой ⇒ Оглавление ⇒ Главная сайта