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

UptoLike

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

22
husband(mary, john).
Заметим, что символ :- следует за головой утверждения, а оба условия
начинаются с абзацного отступа и разделены запятой. Отступы не обязатель-
ны, они используются для удобства чтения программы. Как и все утвер-
ждения, это утверждение заканчивается точкой.
Точка с запятой (;) используется для представления связки or (или).
Как и для связки
and (и), Турбо-Пролог допускает использование и слова
or (или) и символа ;. Связка or не очень часто используется в правилах и фак-
тах. Она имеет и другие применения, о которых вы узнаете в следующих гла-
вах.
В большинстве случаев Турбо-Пролог игнорирует избыточные пробе-
лы и переносы на следующую строку
(позже вы узнаете об исключениях из
этого правила). Хотя кажется, что предыдущее утверждение читается сверху
вниз, Турбо-Пролог читает его как упорядоченную слева направо конст-
рукцию, а переносы на следующую строку игнорируются. Голова правила
обычно называется левой частью, а условия, следующие за символом :-,
обычно называются правой частью правила. Просмотр слева
направо являет-
ся важным принципом, который необходимо твердо усвоить , так как далее
в этой главе будут рассматриваться внутренние процессы Турбо-Пролога.
2.3.5 Цели и подцели
Если вспомнить, что цели, подобно фактам и правилам, строятся из
предикатов, то не трудно понять, что цели также могут иметь связки. Цели,
имеющие связки, называются целями, имеющими подцели. Подцели утвер-
ждения цели разделяются запятыми точно так же, как условия в правилах.
Когда цель введена в программу на Турбо-Прологе, то
Турбо-Пролог обраба-
тывает ее подцели слева направо, пытаясь сопоставить подцели с фактами
и правилами программы. Если одна из подцелей несопоставима, то вся цель
является неуспешной. Если все подцели сопоставимы, то вся цель является
успешной.
Пусть, например, программа содержит следующие утверждения:
likes(mary, apples). /* Мэри любит яблоки */
color(apples, red). /* цвет
яблок красный */
Введем цель
likes(mary, apples),color(apples, red).
Утверждения заканчиваются точками и являются независимыми фак-
тами, а подцели разделены запятыми и точка завершает цель как целое.
Самая левая подцель likes(mary,apples) сопоставима с утверждением
likes(mary,apples), так что эта подцель успешна. Следующая подцель
справа сопоставима с утверждением
color(apples, red), и поэтому вся цель
является успешной. Информация, выведенная на экран, уведомит вас, что эта
цель истинна. По-русски, цель есть "Мэри любит яблоки и яблоки красные".
Либо можно сформулировать цель как вопрос "Любит ли Мэри яблоки, и
красные ли эти яблоки?". Факты подтверждают эту цель.
                          husband(mary, john).
      Заметим, что символ :- следует за головой утверждения, а оба условия
начинаются с абзацного отступа и разделены запятой. Отступы не обязатель-
ны, они используются для удобства чтения программы. Как и все утвер-
ждения, это утверждение заканчивается точкой.
      Точка с запятой (;) используется для представления связки or (или).
Как и для связки and (и), Турбо-Пролог допускает использование и слова
or (или) и символа ;. Связка or не очень часто используется в правилах и фак-
тах. Она имеет и другие применения, о которых вы узнаете в следующих гла-
вах.
      В большинстве случаев Турбо-Пролог игнорирует избыточные пробе-
лы и переносы на следующую строку (позже вы узнаете об исключениях из
этого правила). Хотя кажется, что предыдущее утверждение читается сверху
вниз, Турбо-Пролог читает его как упорядоченную слева направо конст-
рукцию, а переносы на следующую строку игнорируются. Голова правила
обычно называется левой частью, а условия, следующие за символом :-,
обычно называются правой частью правила. Просмотр слева направо являет-
ся важным принципом, который необходимо твердо усвоить , так как далее
в этой главе будут рассматриваться внутренние процессы Турбо-Пролога.
     2.3.5 Цели и подцели
       Если вспомнить, что цели, подобно фактам и правилам, строятся из
предикатов, то не трудно понять, что цели также могут иметь связки. Цели,
имеющие связки, называются целями, имеющими подцели. Подцели утвер-
ждения цели разделяются запятыми точно так же, как условия в правилах.
Когда цель введена в программу на Турбо-Прологе, то Турбо-Пролог обраба-
тывает ее подцели слева направо, пытаясь сопоставить подцели с фактами
и правилами программы. Если одна из подцелей несопоставима, то вся цель
является неуспешной. Если все подцели сопоставимы, то вся цель является
успешной.
       Пусть, например, программа содержит следующие утверждения:
     likes(mary, apples).          /* Мэри любит яблоки */
    color(apples, red).          /* цвет яблок красный */
       Введем цель
       likes(mary, apples),color(apples, red).
       Утверждения заканчиваются точками и являются независимыми фак-
тами, а подцели разделены запятыми и точка завершает цель как целое.
       Самая левая подцель likes(mary,apples) сопоставима с утверждением
likes(mary,apples), так что эта подцель успешна. Следующая подцель
справа сопоставима с утверждением color(apples, red), и поэтому вся цель
является успешной. Информация, выведенная на экран, уведомит вас, что эта
цель истинна. По-русски, цель есть "Мэри любит яблоки и яблоки красные".
Либо можно сформулировать цель как вопрос "Любит ли Мэри яблоки, и
красные ли эти яблоки?". Факты подтверждают эту цель.



                                                                           22