Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Conspekt.doc
Скачиваний:
11
Добавлен:
31.08.2019
Размер:
1.39 Mб
Скачать

5.2 Особенности программирования на пролоГе

Пролог - язык программирования, используемый для решения задач, сводимых к объектам и отношениям между объектами. Программирование на Прологе состоит из следующих этапов:

  1. Объявления некоторых фактов об объектах и отношениях между ними.

  2. Определения некоторых правил об объектах и отношениях между ними.

  3. Формулирование вопросов об объектах и отношениях.

Т.е. любая программа на языке ПРОЛОГ содержит 3 раздела:

  1. Раздел задания фактов.

  2. Раздел определения правил.

  3. Задание ЦУ.

Как уже отмечалось, пролог использует принцип резолюции и базируется на использовании специальных дизъюнктов, имеющих не более одного положительного литерала, т.е. дизъюнктов Хорна трех типов (факты, правила, целевые утверждения).

Факт -то, что является безусловно истинным. Факт - предикат с конкретными значениями аргументов(т.е. высказывание). Факт "Джону нравится Мэри" на Прологе запишется:

like(john,mary).

При записи фактов существуют следующие правила:

- имена отношений и объектов начинаются со строчной буквы.

- формат записи отношения:

<имя отношения>(<список имен объектов>).

- каждый факт заканчивается точкой.

Совокупность фактов образует в ПРОЛОГе БД:

like(john,football).

like(john,coffee).

like(mary,work).

like(mary,books).

like(mary,kitchen).

like(john,books).

Имея совокупность некоторых фактов, можно обращаться к Прологу с вопросами. Вопрос записывается аналогично факту, но перед ним ставится специальный знак:

"Нравится ли Джону кофе ?"

?- like(john,coffee).

yes

В Прологе, как и в других языках, могут применяться переменные. Их имена начинаются с заглавной буквы или символа подчеркивания.

" Что нравится Джону ?"

?- like(john,X).

X=football

X=coffee

X=books

yes

В таком случае, Пролог просматривает БД в поисках факта, сопоставимого с запросом, и выдает такие факты в том порядке, в котором они вводились.

" Что нравится и Джону и Мэри ?"

?- like(john,X),like(mary,X).

X=books

yes

Правила -это объекты, которые являются условно-истинными.

" Джону нравится что-то, если это нечто нравится Мэри"

like(john,X) :- like(mary,X).

sister(X,Y) :- women(X),parents(X,Y).

5.3 Задача преобразования предложений\

Пусть дано некоторое предложение, которое м. являться вопросом.

Are you a computer?

I am not a computer!!!

Do you know frеnch?

No, I know germany!

Напишем такую программу( _прг .).

convert(X,Y) -где X-входное предложение

Y-выходное

Запишем правило, которое определяет предикат "convert":

convert([],[]).

convert([H|T],[Y|Z]) :-

change(H,Y),

convert(T,Z).

change(you,I).

change(do,no).

change(are,[am not]).

change(franch,germany).

change(X,X). - все, что не описано в БД покрывается этим

фактом.

?- convert([you,are,a,computer],W).

1).H<--you T<--[are,a,computer] W<--[Y|Z]<--[I|Z]

2).H'<--ar T'<--[a,computer]

Z'<--[Y|Z]<--[I|[am,not,[Z]]]

3).H''<--a T''<--[computer]

Z''<--[Y|Z]<--[I|[am,not,[a,[Z]]]]

4).H'''<--computer T'''<--[]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]