Главная

ПРОЕКТ "ЧЕЛОВЕК. ЗЕМЛЯ. ВСЕЛЕННАЯ"

Инструменты пользователя

Инструменты сайта


project:prolog:domeny_v_prologe



Домены в Прологе. Типы доменов Пролога

В целях упрощения организации фактов и правил Пролог поддерживает составные доменные структуры. Кирпичиками для их создания служат базисные типы доменов Пролога. Можно создать составные объекты и доменные структуры на основе этих базисных типов.

В предикате likes(mary,apples), likes является предикатом (термом предиката), а mary и apples - объектами предиката. Пролог требует указания типов объектов для каждого предиката программы в разделе predicates. Некоторые из этих объектов могут быть, к примеру, числовыми данными, другие же - символьными строками.

Если используются стандартные базисные типы доменов в Прологе (Prolog), то нет необходимости отдельно описывать домены объектов этих утверждений. Тогда объекты предикатов определяются при описании этих правил в разделе программы predicates.

  predicates
    book(symbol, symbol, integer)
  clauses
    book(“Tom Sawyer”,”Mark Twain”,1855).

Иногда необходимо несколько больше конкретизировать тип используемого предикатом объекта. Например, в примере ниже в предикате likes объекты имеют смысл «тот, кто любит» и «вещь, которую любят».

  predicates
   likes(symbol,symbol)
  clauses
   likes(mary, apples).
   likes(beth, X) if likes(mary, X).

Пролог (Prolog) позволяет конструировать свои собственные типы объектов из базисных типов доменов.

Предположим, что объектам предиката likes вы хотите присвоить соответственно имена person и thing. Тогда в разделе программы domains должны появиться такие описания:

  domains
    person, thing = symbol /* типы полей БД */
  predicates
    likes(person, thing) /* названия полей БД */

Имена person и thing при этом будут обозначать некие совокупности (домены) значений.

Любое значение доменов person и thing может в утверждениях занимать место объектов person и thing из соответствующего предиката. Рассмотрим, например, такие три утверждения:

/* Конкретные значения в БД */
likes(john, camera).
likes(tom, computer).
likes(kathy, computer).
Person (домен) Thing (домен)
john camera
tom computer
kathy computer

Термы john, tom и kathy принадлежат здесь к домену person, а термы camera и computer - к домену thing. Все три утверждения относятся к одному и тому же предикату - likes. Отличие состоит лишь в значениях, которые принимают объекты. Другими словами, все три утверждения являются вариациями одного и того же предиката.

Если в Прологе (Prolog) необходимо явно описать все домены объектов, используемые предикатами, то в разделах domains и predicates в этом случае должны появиться следующие предложения:

  domains
    title,author = symbol
    year = integer
  predicates
    book(title, author, year)
  clauses
    book(“Tom Sawyer”,”Mark Twain”,1855).

В этом случае, факты становятся элементами базы данных, поля которой имеют имена (title,author,year).

Типы доменов Пролога

Пролог имеет 6 встроенных типов доменов:

  • символы;
  • целые числа;
  • действительные числа;
  • строки;
  • символические имена;
  • файлы.

Тип каждого из доменов должен быть объявлен в разделе программы domains.

Таблица. Стандартные типы доменов Турбо-Пролога

Тип Ключевое слово Диапазон значений Примеры использования данных в Прологе
Символы сhar Все возможные символы 'a','b','#','B','\13', '%'
Целые числа integer от -32768 до 32763 32767
Действительные числа real от +1Е-307 до 1Е+308 1.25Е23, 5.15Е-9
Строки string Последовательность символов (не более 250) «today», «123», «just_a_reminder»
Символические имена symbol 1. Последовательность букв, цифр и подчерков; первый символ - строчная буква.
2. Последовательность любых символов, заключенная в кавычки.
pay_check, school_day, flower, «Stars and Stripes»
Файлы file Допустимое в DOS имя файла command.com, autoexec.bat

Следующий предикат иллюстрирует использование доменов различных типов:

payroll(employee_name, pay_rate, weekly_hours)

Этот предикат требует такого описания доменов:

employee_name = symbol
pay_rate = integer
weekly_hours = real

Описание домена employee_name показывает, что объекты этого домена являются символическими именами. Аналогично, объекты домена pay_rate - это целые числа, а домена weekly_hours - действительные.

Пример корректных утверждений, использующих предикат payroll:

payroll(«John Walker», 16, 45.25).
payroll(«Arthur Berman», 28, 32.50).
payroll(«Sandy Taylor», 23, 40.00).

!!Рекомендуем: Семейная Энциклопедия ЗдоровьяОбучениеКонсультация аналитикаОглавлениеГлавная сайта

Обсуждение

pasha, 2019/10/21 08:33
**Полужирный** все понятно
Ваш комментарий:
M J L T J
 
project/prolog/domeny_v_prologe.txt · Последние изменения: 2012/02/23 11:55 (внешнее изменение)

Вы можете оставить свои комментарии в разделе "Обсуждение".
Рекомендуем оформить подписку на новости данного раздела. Для этого нажмите на кнопку "Подписаться", расположенную справа снизу каждой страницы (знак конверта).


www.work-zilla.com

Индекс цитирования