Составители:
Рубрика:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »