Структура программы
Типовая программа содержит 5 разделов:
A) domains <описание доменов>(заголовок области, описание различных классов объектов программы);
B) database < описание предикатов динамической базы данных>(содержит утверждения базы данных, которые являются предикатами динамической базы; если программа такой базы данных не требует, то этот раздел может быть опущен);
C) predicates <описание предикатов> – служит для описания предикатов);
D) goаl <целевое утверждение> – (описание внутренней цели и подцелей);
E) clauses <утверждения> – все правила и факты, известные априори.
С целью упрощения организации фактов и правил ПРОЛОГ поддерживает составные объекты-структуры, которые строятся из шести базовых предписанных классов (доменов).Стандартные типы доменов приведены в таблице:
Тип данных |
Ключевое слово |
Диапазон значений |
Примеры |
Символ |
Char |
Все символы |
‘a’,’#’,’\13’ |
Целые |
Integer |
-32768 +32767 |
-63,64 |
Действительные |
Real |
+1E-307 +1E308 |
1.25E23, 4.56 |
Строки |
String |
Последовательность символов длиной <250 |
“today”,”123” |
Символьные имена |
Symbol |
1. Последовательность символов, первая буква |
“Stars and Stripes” |
Файлы |
File |
Допустимое имя |
Mail.txt, BIRDS.DBA |
Пример программы:
domains (раздел описания),
lich (человек), uvl (увлечение) = symbol,
predicates (отношение, предикат),
lubit (lich, uvl) (любит человек увлечение),
clauses (факты, правила),
lubit (lena, ping_ pong),
lubit (ivan, futbol),
lubit (tolya, basketbol),
lubit (mark, plavat),
lubit (lena, plavat),
lubit (boria, X): – lubit (tolya, X). –Боря любит то же, что любит Толя,
Alt+C – компиляция, Alt+R – запуск на счет, Alt+F-?
Вопросы, беседа с программой:
lubit (lena, plavat) – вопрос (истинно),
lubit (boria, futbol) – (нетрешения),
два решения
lubit (lena, X),
Х = ping_pong
Х = plavat.
lubit (Х, futbol) Х = ivan,
lubit (Х, Y) – напишет все решения.
Примечание. Здесь и далее курсивом выделены комментарии к программе, которые набирать не следует.
Выход из программы в интерактивном режиме завершается по клавише ESC.
Цель может быть составной:
lubit (Х, plavat), lubit (Х, ping_pong)? Х = lena
Дополнительное задание: написать программу «Телефонный справочник».
tel (lich, nomer) – предикат
Факты: Аня – 240-385
Правила: телефон у Вики такой же, как у Ани. Какой телефон у Вики? и т.д.