Программирование в Логике. Чанышев О.Г. - 26 стр.

UptoLike

Составители: 

51
5. Базовые понятия и термины Пролога
Следуя известному "алгоритму пастора", который начинал
каждую проповедь так: "Сейчас я расскажу вам о том, о чем я бу-
ду говорить, затем я расскажу это, а затем я расскажу о том, о чем
я говорил", изложение материала подошло к точке, где я должен
сказать о том, о чем я рассказывал.
5.1. Объекты
"Прологэто язык программирования, предназначенный
для обработки символьной нечисловой информации. Особенно
хорошо он приспособлен для решения задач, в которых фигури-
руют объекты и отношения между ними" [1].
Теперь вспомним, из каких "кирпичиков" строятся объекты.
Любой класс объектов определяется набором составляющих его
подъобъектов и структурой. Элементарные классы объектов не
имеют
структуры и описываются одним из встроенных типов дан-
ных, которые называются еще встроенными доменами.
Доменимя простого или составного терма (не функтор!),
которое, в свою очередь, может замещать этот терм в определении
другого сложного терма.
domains
...............................
dom1=functor1(integer,string)
dom2=functor2(symbol,real,dom1)
...............................
Конкретный экземпляр элементарного класса называется
атомом. Эточисловые, символьные и строчные константы.
Термы
Все
типы данных в Прологе называются термами. Имя тер-
ма называется доменом.
Терм может быть простым. Простой термэто любой класс
объектов, определяемый прямо (object = integer) или косвенно до-
меном стандартного типа:
object2=object;object2=object*.
52
Терм может быть сложным, т. е. состоять из функтора и
списка термов, разделенных запятыми, который заключен в круг-
лые скобки:
любить(миша,шоколад).
Структураэто другой термин для обозначения сложного
терма. Основной характеристикой структуры является ее размер-
ность (или арность) – число термов в списке.
Любая структура определяет некоторое отношение между
составляющими
ее термами (объектами). В таком случае функтор
это имя отношения. Например, терм (факт)
мяч(форма(сфера),материал(резина),размер(25),
цвет([синий,красный]))
определяет конкретный объект класса "мяч". Функтор "мяч"
есть имя одноместного отношения "быть объектом".
В рамках программы дается процедурная интерпретация
всех отношений. Программисту рекомендуется составлять осмыс-
ленные имена всех
объектов и функторов, помогающих читателю
разобраться в интерпретации и самому программисту не забывать
о ней.
Стандартные типы данных являются "аксиоматическими" и
не нуждаются в объявлении. Поскольку PDC Prolog является стро-
го типизированным языком, домены необходимы для определения
предикатов ("процедур" с процедурной точки зрения на Пролог).
Простые домены следует рассматривать как характеристики
объектов,
выраженные (в конечном итоге) в терминах встроенных
типов.
Сложные домены определяют иерархию по вхождению ме-
нее сложных объектов в более сложные.
Множество доменов, с помощью которых описываются все
объекты отношения, называется системой типов.
Задавая системы типов, мы подготовливаем поле для зада-
ния аксиом, которые в Прологе выражаются либо фактами внут-
ренней
БД или безусловно верными предикатами (которые также
называются фактами, пример: черный(X):-темный(X).
Таким образом, сами логические процедуры могут служить
в качестве описаний структур данных.
          5. Базовые понятия и термины Пролога                              Терм может быть сложным, т. е. состоять из функтора и
                                                                     списка термов, разделенных запятыми, который заключен в круг-
      Следуя известному "алгоритму пастора", который начинал         лые скобки:
каждую проповедь так: "Сейчас я расскажу вам о том, о чем я бу-             любить(миша,шоколад).
ду говорить, затем я расскажу это, а затем я расскажу о том, о чем          Структура – это другой термин для обозначения сложного
я говорил", изложение материала подошло к точке, где я должен        терма. Основной характеристикой структуры является ее размер-
сказать о том, о чем я рассказывал.                                  ность (или арность) – число термов в списке.
                                                                            Любая структура определяет некоторое отношение между
     5.1. Объекты                                                    составляющими ее термами (объектами). В таком случае функтор
                                                                     – это имя отношения. Например, терм (факт)
      "Пролог – это язык программирования, предназначенный
                                                                            мяч(форма(сфера),материал(резина),размер(25),
для обработки символьной нечисловой информации. Особенно
                                                                     цвет([синий,красный]))
хорошо он приспособлен для решения задач, в которых фигури-
                                                                            определяет конкретный объект класса "мяч". Функтор "мяч"
руют объекты и отношения между ними" [1].                            есть имя одноместного отношения "быть объектом".
      Теперь вспомним, из каких "кирпичиков" строятся объекты.              В рамках программы дается процедурная интерпретация
Любой класс объектов определяется набором составляющих его
                                                                     всех отношений. Программисту рекомендуется составлять осмыс-
подъобъектов и структурой. Элементарные классы объектов не
                                                                     ленные имена всех объектов и функторов, помогающих читателю
имеют структуры и описываются одним из встроенных типов дан-
                                                                     разобраться в интерпретации и самому программисту не забывать
ных, которые называются еще встроенными доменами.
                                                                     о ней.
      Домен – имя простого или составного терма (не функтор!),              Стандартные типы данных являются "аксиоматическими" и
которое, в свою очередь, может замещать этот терм в определении
                                                                     не нуждаются в объявлении. Поскольку PDC Prolog является стро-
другого сложного терма.
                                                                     го типизированным языком, домены необходимы для определения
      domains
                                                                     предикатов ("процедур" с процедурной точки зрения на Пролог).
      ...............................
                                                                            Простые домены следует рассматривать как характеристики
      dom1=functor1(integer,string)                                  объектов, выраженные (в конечном итоге) в терминах встроенных
      dom2=functor2(symbol,real,dom1)                                типов.
      ...............................
                                                                            Сложные домены определяют иерархию по вхождению ме-
      Конкретный экземпляр элементарного класса называется
                                                                     нее сложных объектов в более сложные.
атомом. Это – числовые, символьные и строчные константы.
                                                                            Множество доменов, с помощью которых описываются все
                                                                     объекты отношения, называется системой типов.
                              Термы                                         Задавая системы типов, мы подготовливаем поле для зада-
      Все типы данных в Прологе называются термами. Имя тер-         ния аксиом, которые в Прологе выражаются либо фактами внут-
ма называется доменом.                                               ренней БД или безусловно верными предикатами (которые также
      Терм может быть простым. Простой терм – это любой класс        называются фактами, пример: черный(X):-темный(X).
объектов, определяемый прямо (object = integer) или косвенно до-            Таким образом, сами логические процедуры могут служить
меном стандартного типа:                                             в качестве описаний структур данных.
      object2=object;object2=object*.

                               51                                                                  52