информационно-новостной портал
Главная / Статьи / Информатика / Программирование /

Семантика программирования на Прологе.

Программу можно рассматривать с деклоративн. и процедурной точки зрения.

P:-Q,R. В декларат. интерпретации: P истинно, если Q и R истинны.

             В процедурн. интерпрет: чтобы решить P решаем последов-но Q и R.

Различие в интерпретациях состоит в том, что для в процедурном прог-ии зада-

ется ещё и порядок выполнения программы, кроме логич. связей м/у P и Q,R.

Конкретизация предложения C – результат подстановки в него на место каждой

переменной некоторого терма. Унификатор – подстановка, позволяющая сделать

2 терма равными.

Процед-я семантика определяет как Пролог-система отвечает на запросы:

G1,G2,..Gm – список целей. Если список целей пуст, то работа процедуры завер-

шается успехом, выводятся значения подстановок для переменных, содер в

в исходном запросе.  Если список не пуст, то просматриваются предлож-ения прог. с верху-вниз, и обнаруживается предложение С, у которого

голова сопоставима с целью G1(иначе завершается неудачей). Если С

имеет вид H:- B1,…,Bn, то выполняется переименовывание переменных в С т.о., что не было одинаковых  переменных в списке целей. После этого выполняется сопоставление цели G1 и головы H. Подстановка, унифицир. эти термы, исп. для замены перем-х в теле правила B1,B2,..Bn и в G2,..Gm. Новый список целей – список B1,..Bn,G’2…Gm.

Для вычисления его истинности вызывается рекурсивно та же самая процедура.  Вычисляем истинность списка целей G1,G2,..Gm. Если выпол-нение завершается неудачей, то происходит возврат к старому списку

целей G1,..Gm и продолжаем просмотр программы начиная с предл-я   следующего за C, в поисках истинности.   

Просмотров: 863 | Дата добавления: 08.02.2016