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

UptoLike

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

19
2.3.1 Цели программы
Цель - это формулировка задачи, которую программа должна решить.
Цель также служит "триггером" для запуска программы. Турбо-Пролог ис-
пользует как внутренние цели, которые содержатся в программе, так и
внешние цели, которые вводятся с клавиатуры после запуска программы.
Внутренние и внешние цели имеют больше сходства, чем различий. В этом
разделе рассматриваются
только внешние цели, но большая часть из того,
что вы узнаете о внешних целях применимо также и к внутренним целям.
После того, как Турбо-Пролог запущен, он не выполняет ничего по-
лезного до тех пор, пока ему не встретится оператор цели. Цель состоит из
взаимосвязанных предикатов. Ее структура точно такая
же как у правила
или факта. В примере с Мэри, Бет и яблоками отношением (символом пре-
диката) является "любит". Тот же самый символ "любит" может быть исполь-
зован как цель. Предикат цели сопоставляется с предикатами в программе,
так что цель в этом примере будет иметь объект, как и предикат "любит",
рассмотренный
ранее. Цель будет иметь вид:
любит(бет,яблоки).
Эта цель фактически означает, что вы хотите знать, действительно ли
Бет любит яблоки в соответствии с информацией, имеющейся в программе.
2.3.2 Решение задачи
Пусть программа на Турбо-Прологе содержит факт
likes(mary, apples). /* Мэри любит яблоки */
и правило
likes(beth, X) if likes(mary,X). /* Бет любит это, если Мэри любит это */
Предположим также, что программа уже запущена и запросила вас ввести
цель. Вы ввели
likes(beth,apples). /* бет любит яблоки */
Теперь Турбо
-Пролог предпринимает действия, необходимые для решения
задачи, содержащейся в цели. Факты и правила программы используются
для вывода логических заключений. Турбо-Пролог воспринимает утвер-
ждение цели и начинает поиск правил и фактов программы для сопоставле-
ния с предикатом likes.
Первое сопоставление выполняется с фактом
likes(mary,apples).
Очевидно, что терм предиката цели,
likes, сопоставим с таким же тер-
мом в факте. Так как предикаты likes сопоставимы, Турбо-Пролог попыта-
ется сопоставить первый объект цели beth с первым объектом факта mary.
Турбо-Пролог пытается сопоставлять термы слева направо до тех пор, пока
очередное сопоставление окажется неуспешным. Сравним цель и факт:
likes(beth, apples).
likes(mary, apples).
Первые объекты
beth и mary несопоставимы. Следовательно, вся по-
пытка сопоставить цель и факт будет неуспешной. Турбо-Пролог не бу-
     2.3.1 Цели программы
      Цель - это формулировка задачи, которую программа должна решить.
Цель также служит "триггером" для запуска программы. Турбо-Пролог ис-
пользует как внутренние цели, которые содержатся в программе, так и
внешние цели, которые вводятся с клавиатуры после запуска программы.
Внутренние и внешние цели имеют больше сходства, чем различий. В этом
разделе рассматриваются только внешние цели, но большая часть из того,
что вы узнаете о внешних целях применимо также и к внутренним целям.
      После того, как Турбо-Пролог запущен, он не выполняет ничего по-
лезного до тех пор, пока ему не встретится оператор цели. Цель состоит из
взаимосвязанных предикатов. Ее структура точно такая же как у правила
или факта. В примере с Мэри, Бет и яблоками отношением (символом пре-
диката) является "любит". Тот же самый символ "любит" может быть исполь-
зован как цель. Предикат цели сопоставляется с предикатами в программе,
так что цель в этом примере будет иметь объект, как и предикат "любит",
рассмотренный ранее. Цель будет иметь вид:
      любит(бет,яблоки).
      Эта цель фактически означает, что вы хотите знать, действительно ли
Бет любит яблоки в соответствии с информацией, имеющейся в программе.


     2.3.2 Решение задачи
       Пусть программа на Турбо-Прологе содержит факт
   likes(mary, apples).            /* Мэри любит яблоки */
и правило
  likes(beth, X) if likes(mary,X). /* Бет любит это, если Мэри любит это */
Предположим также, что программа уже запущена и запросила вас ввести
цель. Вы ввели
       likes(beth,apples).           /* бет любит яблоки */
Теперь Турбо-Пролог предпринимает действия, необходимые для решения
задачи, содержащейся в цели. Факты и правила программы используются
для вывода логических заключений. Турбо-Пролог воспринимает утвер-
ждение цели и начинает поиск правил и фактов программы для сопоставле-
ния с предикатом likes.
       Первое сопоставление выполняется с фактом
       likes(mary,apples).
       Очевидно, что терм предиката цели, likes, сопоставим с таким же тер-
мом в факте. Так как предикаты likes сопоставимы, Турбо-Пролог попыта-
ется сопоставить первый объект цели beth с первым объектом факта mary.
Турбо-Пролог пытается сопоставлять термы слева направо до тех пор, пока
очередное сопоставление окажется неуспешным. Сравним цель и факт:
       likes(beth, apples).
       likes(mary, apples).
       Первые объекты beth и mary несопоставимы. Следовательно, вся по-
пытка сопоставить цель и факт будет неуспешной. Турбо-Пролог не бу-


                                                                          19