tify"> Visual Prolog створює проекти автоматично. Для запуску прикладові слід создать новий проект, вибрать Console як UIStrategy, перейти до редагування файлу main.pro и замініті его вміст наведення кодом.maincoreName= main .Version= .sInfo Cclass Name, class Version). (): - :: init () ,::write ( Hello World! ), Control :: sleep (1000), (). end implement main :: run (main :: run)
Приклад 4. известно, что Петро та Ольга навчають у десятому класі, Хома та Леся - у 9 класі. Один учень знає Іншого, если смороду вчаться в одному класі. Вважається, что Певний вчені не может знаті сам собі.
учень=symbol
клас=integer
вчитува (учень, клас)
знає (учень, клас)
вчитува (хома, 9).
вчитува (петро, ??10).
вчитува (ольга, 10).
вчитува (леся, 9).
знає (X, Y): -
вчитува (Х, Клас),
вчитува (Y, Клас), lt; gt; Y.
Коментар: у Програмі оголошуються предикати вчитува/2 і знає/2, аргументи учень типом «рядок сімволів» и клас типом «ціле число». Умова того, что учень Х навчається в одному и тому ж класі з учнем Y забезпечується Однаково іменем змінної у відповідніх условиях правила.
2.2 розв язування математичних задач
Наведемо приклад математичних задач, алгоритми розв язання якіх ві добре там:
Додавання двох багатоціфровіх чисел;
ділення відрізка навпіл помощью циркуля и лінійкі;
розв'язування квадратного Рівняння ТОЩО.
Розглянемо декілька примеров розв язування математичних задач мовою Prolog.
1. Числа Фібоначчі:
x Fibonacci.pl
: - dynamic (stored/1). (Goal) ;-( Goal)? true ;, asserts (stored (Goal)). (1,1): - 1, write (1,). (2,1): - 1, write (1,). (N, F): -is N- 1, memo (fib (N1, F1)), is N - 2, memo (fib (N2, F2)), is F1 + F2, (F), write (,) .interactive
[- fibonacci]. (16, x), write (...), nl.
2. Факторіал:
Приклад для версій Poplog 15.5 (Prolog)
Цей приклад складається з двох частин - Перша частина коду слід Зберегти у файлі fact.pl, розташованому в робочому каталозі Poplog, а одному - ввести вручну в інтерактівному режімі.
[- fact]. завантажує базу Фактів и правил з цього файлу в поточних сесію Poplog (і виводу ПОВІДОМЛЕННЯ fact reconsulted, щоб позначіті успішність завантаження). Запит fact (16, X). Намагається найти значення X, при якому цею предикат буде оціненій як Істинний. Висновок, что потребується у прікладі, буде побічнім ефектом оцінювання запиту, а основним результатом буде X=20922789888000 ?. Це означає, что если вині задоволені такою прив язкою змінніх, ві можете відмовітіся від неї (ввівші;), І буде продовженого поиск кращої прив язки.
% fact.pt lt; # justify gt; fact (16, X).
3. квадратних Рівняння:
Приклад для версій Prolog 1.3.0_integer - не стандартний предикат, а Розширення GNU Prolog, того цею приклад НЕ буде працювати в других реалізаціях.: - write ( A=), _integer (A ),
(A=0, write ( Not a quadratic equation ); ( B=), _integer (8), ( C=), _integer (C ), is B * B - 4 * A * C,
(D=0, write ( x=), X is -B/2/A, write (X); gt; 0, write ( xl=) , XI is (-B + sqrt (D))/2/A, write (Xl), nl, write ( x2 =) x2 is (-B-sqrt (D))/2/A, write (X1 ), nl, write (X2 =), X2 is B + sqrt (D))/2/A, write (X2); is -B/2/A, I is abs (sqrt (-D)/2/A ), ( xl=(), write (R), write ( raquo ;, ), write (I), write () ), nl, ( xl=( ), write (R), write ( raquo ;, - ), write (I), write () ')
)
).
Варто Зазначити, что за замовчуванням Пролог працює з припущені про замкнутість світу (Теорії, предметної області). Це означає наявність заперечення деякої фрази, если вона не представлена ??у Програмі. Тобто, на довільній запит по Перевірці істінності фрази дається ПОВІДОМЛЕННЯ Yes або No. Альтернативою замкнутості є припущені про відкрітість світу, за Яким у разі відсутності деякої фрази у Програмі вважається, что дана фразу не Істинна и не Хибне, тобто недоказова.
Назвемо деякі області, де вікорістовується мова логічного програмування Пролог:
создания дінамічніх реляційніх баз даних;
переклади з однієї...