TURBO PROLOG. Терёхин В.В. - 24 стр.

UptoLike

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

24
с фактами и головами правил для того, что чтобы доказать (или вычис-
лить) эти цели или подцели. Эти же подпрограммы также определяют, сге-
нерированы ли новые подцели правой часть правила. Программист в соот-
ветствии с логическим синтаксисом Турбо-Пролога объявляет, какие факты
и правила дают тот или иной результат при различных
подцелях, а внутрен-
ние подпрограммы унификации выполняют оставшуюся часть работы.
2.4.1 Представление данных при помощи фактов и правил
В программах на Турбо-Прологе данные представляются при помощи
фактов и правил. Хотя факт может быть предикатом, не содержащим объек-
тов, большинство фактов записывается как предикат с одним или более объ-
ектами.
Некоторые примеры:
likes(mary,apples). /* Мэри любит яблоки */ em-
ployee(smith,john,1984). /* служащий Джон Смит */
gender(female). /* пол - женский */
Если имя объекта начинается
со строчной буквы, то этот объект имеет
известное значение. Другими словами, объект есть в этом случае константа.
Когда Турбо-Пролог пытается сопоставить две константы, то это сопостав-
ление успешно только в том случае, если константы равны. Следовательно,
mary никогда не сопоставима с beth.
Пусть программа содержит следующие факты:
likes(beth
, apples).
likes(mary, pears).
likes(mary, oranges).
likes(mary, apples).
Теперь предположим, что введена внешняя цель
likes(mary,apples).
Как вы понимаете, цель по структуре подобна факту и правилу. Оба
объекта в этой цели mary и apples являются константами. Пытаясь выпол-
нить эту цель, Турбо-Пролог просматривает
программу слева направо, вы-
полняя поиск предиката с тем же предикатным термом, что и целевой преди-
кат. (Вспомним, что то, что выглядит как "сверху вниз", на самом деле есть
"слева направо"). Это первый шаг, выполненный внутренними унификаци-
онными подпрограммами.
В этом примере предикатный терм цели есть likes. Первый факт для
likes, встречающийся в программе, это likes(beth, apples). Сопоставив
предикатный терм в цели и факте, внутренние унификационные подпро-
граммы теперь пытаются сопоставить первый объект для likes в цели и факте.
Так как константа mary не сопоставима с константой beth, то попытка неус-
пешна. Теперь внутренние унификационные подпрограммы пытаются со-
поставить
цель со следующим предикатом likes. На этот раз сопоставление
успешно, так как константа mary сопоставима с точно такой же константой
в правиле. Но для завершения сопоставления внутренние унификационные
подпрограммы должны сопоставить следующий объект справа. Константы
с фактами и головами правил для того, что чтобы доказать (или вычис-
лить) эти цели или подцели. Эти же подпрограммы также определяют, сге-
нерированы ли новые подцели правой часть правила. Программист в соот-
ветствии с логическим синтаксисом Турбо-Пролога объявляет, какие факты
и правила дают тот или иной результат при различных подцелях, а внутрен-
ние подпрограммы унификации выполняют оставшуюся часть работы.
     2.4.1 Представление данных при помощи фактов и правил
      В программах на Турбо-Прологе данные представляются при помощи
фактов и правил. Хотя факт может быть предикатом, не содержащим объек-
тов, большинство фактов записывается как предикат с одним или более объ-
ектами.
      Некоторые примеры:
      likes(mary,apples).        /* Мэри любит яблоки */ em-
      ployee(smith,john,1984).    /* служащий Джон Смит */
      gender(female).            /* пол - женский    */
      Если имя объекта начинается со строчной буквы, то этот объект имеет
известное значение. Другими словами, объект есть в этом случае константа.
Когда Турбо-Пролог пытается сопоставить две константы, то это сопостав-
ление успешно только в том случае, если константы равны. Следовательно,
mary никогда не сопоставима с beth.
      Пусть программа содержит следующие факты:
      likes(beth, apples).
      likes(mary, pears).
      likes(mary, oranges).
      likes(mary, apples).
      Теперь предположим, что введена внешняя цель
      likes(mary,apples).
      Как вы понимаете, цель по структуре подобна факту и правилу. Оба
объекта в этой цели mary и apples являются константами. Пытаясь выпол-
нить эту цель, Турбо-Пролог просматривает программу слева направо, вы-
полняя поиск предиката с тем же предикатным термом, что и целевой преди-
кат. (Вспомним, что то, что выглядит как "сверху вниз", на самом деле есть
"слева направо"). Это первый шаг, выполненный внутренними унификаци-
онными подпрограммами.
      В этом примере предикатный терм цели есть likes. Первый факт для
likes, встречающийся в программе, это likes(beth, apples). Сопоставив
предикатный терм в цели и факте, внутренние унификационные подпро-
граммы теперь пытаются сопоставить первый объект для likes в цели и факте.
Так как константа mary не сопоставима с константой beth, то попытка неус-
пешна. Теперь внутренние унификационные подпрограммы пытаются со-
поставить цель со следующим предикатом likes. На этот раз сопоставление
успешно, так как константа mary сопоставима с точно такой же константой
в правиле. Но для завершения сопоставления внутренние унификационные
подпрограммы должны сопоставить следующий объект справа. Константы


                                                                        24