Составители:
Рубрика:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 17
- 18
- 19
- 20
- 21
- …
- следующая ›
- последняя »