Главная

ПРОЕКТ "ЧЕЛОВЕК. ЗЕМЛЯ. ВСЕЛЕННАЯ"

Инструменты пользователя

Инструменты сайта


project:prolog:listing:goroda



Программа "Города"

Программа «Города» демонстрирует метод отката после неудачи с предикатом fail. Назначение программы о городах состоит в перечислении названий десяти городов США.

В программе имеется 10 предикатов, каждый из которых является альтернативным утверждением для предиката cities(name). Во время попытки вычислить цель, внутренние унификационные подпрограммы означивают переменную City объектом первого утверждения, который есть ANN ARBOR (название города в США). Так как существует следующее утверждение, которое может обеспечить вычисление подцели cities(City), то указатель отката помещается за первым утверждением. Значение ANN ARBOR выводится на экран.

Предикат fail вызывает неуспешное завершение правила, внутренние унификационные подпрограммы выполняют откат в точку 1, и процесс повторяется до тех пор, пока последнее утверждение не будет обработано.

Использование метода ОПН позволяет извлекать данные из каждого утверждения базы данных. Если в программе содержатся утверждения для 10 вариантов, то результат так же содержит 10 строк. Данные извлекаются из каждого утверждения, так как каждый вариант удовлетворяет подцели cities(City).

domains
name=symbol
 
predicates
/* Имена городов */
cities(name)
 
/* Правило для вывода результатов */
show_cities
 
clauses
/* База имен городов */
cities("ANN ARBOR ").
cities("ATLANTA").
cities("NEW HAVEN").
cities("INDIANAPOLIS").
cities("BOSTON").
cities("MESA").
cities("MINEAPOLIS").
cities("SAN ANTONIO").
cities("SAN DIEGO").
cities("TAMPA").
 
/* Правила для вывода всех результатов из БД */
/* Подправило cities(City) означивает переменную City (город) названием города */
/* Предикат fail вызывает откат к следующему утверждению, которое может обеспечить вычисление цели. */
 
show_cities :- cities(City), write(" ", City), nl, fail.
 
goal
/* 1-я подцель - вывести заголовок */
write("Here are the cities:"),nl,
/* 2-я подцель - вывести очередной город из БД */
show_cities.
 
/* Результат
 ANN ARBOR 
 ATLANTA
 NEW HAVEN
 INDIANAPOLIS
 BOSTON
 MESA
 MINEAPOLIS
 SAN ANTONIO
 SAN DIEGO
 TAMPA
*/

!!Рекомендуем: Семейная Энциклопедия ЗдоровьяЧто должен знать современный человек?Самоанализ. Работа над собойОглавлениеГлавная сайта

Обсуждение

Myasoed, 2021/02/27 22:52
Есть тут кто?
Myasoed, 2021/02/27 22:53
При компиляции на https://swish.swi-prolog.org/ возникают траблы
Ваш комментарий:
H᠎ H J G T
 
project/prolog/listing/goroda.txt · Последние изменения: 2023/09/03 22:22 (внешнее изменение)

Вы можете оставить свои комментарии в разделе "Обсуждение".
Рекомендуем оформить подписку на новости данного раздела. Для этого нажмите на кнопку "Подписаться", расположенную справа снизу каждой страницы (знак конверта).

Индекс цитирования