Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание простейших проектов

Поиск

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

Пример.

Заданы отношения-факты:

родитель(“Иван”,”Катя”).

родитель(“Анна”,” Олег ”).

родитель(“Олег”,”Дима”).


родитель(“Игорь”,”Ольга”).

родитель(“Олег”,”Виктор”).

родитель(“Игорь”,”Иван”).

мужчина(“Дима”).

мужчина(“Иван”).

мужчина(“Игорь”).

мужчина(“Олег”).

мужчина(“Виктор”).

женщина(“Катя”).

женщина(“Ольга”).

женщина(“Анна”).

Составить новое отношение-правило дед(X,Y) и определить, кто является дедушкой Кати. Создать проект и протестировать пример как автономную исполняемую программу.

Решение

1. Запустите среду Visual Prolog и создайте новый проект (Project | New Project), активизируется окно Application Expert (эксперт приложения).

2. Определите имя проекта (Primer) и базовый каталог, куда будет сохранен проект (например, D:\VP\Primer)

 

рис.4. Окно Application Expert

 

На вкладке Target установите параметры и нажмите кнопку Create для создания проекта (рис. 5):


рис.5. Установки на вкладке Target окна Application Expert

 

3. Откройте окно Compiler Options (Options | Project | Compiler Options), откройте вкладку Warnings и установите опции компилятора для созданного проекта (рис.6):

рис.6. Установки опций компилятора

Нажмите OK.

4. В окне проекта выделите файл Primer.pro и откройте его для редактирования (двойной щелчок или кнопка Edit)

 

рис.7. Окно проекта


Файл с расширением.pro содержит секции PREDICATES, GOAL, CLAUSES. Допишите необходимые определения так, чтобы получилась программа:

DOMAINS

имя=string

PREDICATES

родитель(имя,имя)

женщина(имя)

мужчина(имя)

дед(имя, имя)

CLAUSES

родитель("Иван","Катя").

родитель("Анна","Олег").

родитель("Олег","Дима").

родитель("Игорь","Ольга").

родитель("Олег","Виктор").

родитель("Игорь","Иван").

мужчина("Дима").

мужчина("Иван").

мужчина("Игорь").

мужчина("Олег").

мужчина("Виктор").

женщина("Катя").

женщина("Ольга").

женщина("Анна").

дед(X,Z):-родитель(X,Y), родитель(Y,Z),

мужчина(X).

GOAL

дед(X,"Катя"),write(X).

5. Откомпилируйте исходный код примера и запустите его как автономную исполняемую программу. (Project | Run, или клавиша <F9>, или кнопка <R>). Результат выполнения программы должен отобразиться в окне:

 

рис.8. Окно вывода результата

ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

Доработайте исходный код примера следующим образом:

1) добавьте новое правило бабушка и определите, кто является бабушкой;

2) добавьте новое правило внук и определите, кто внук Анны;

3) добавьте новое правило брат и определите, кто брат Димы;

4) добавьте новое правило сестра и определите, кто сестра Ивана.


Отчет о выполненной самостоятельной работе должен содержать:

1) тему лабораторной работы;

2) условие задачи;

3) полный окончательный код примера;

4) результаты ее тестирования.

Поиск с возвратом

Поиск с возвратом (backtracking) – это один из основных приемов поиска решений поставленной задачи в ПРОЛОГ’е. Выполняя поиск, ПРОЛОГ может столкнуться с необходимостью выбора между альтернативными путями. Тогда он ставит маркер у места развилки (точка отката) и выбирает первую подцель. Если она не выполняется, то ПРОЛОГ возвращается в точку отката и переходит к следующей подцели.

Среда Visual Prolog позволяет использовать отладчик для пошагового выполнения программы. Отладчик работает с откомпилированным кодом. В исходном коде можно ставить точки останова и выполнять программу по шагам. В режиме пошагового выполнения программы можно просматривать значения переменных и содержимое утвержденных фактов.

Пример

Имеется база данных, содержащая факты вида отдыхает(имя, город ), украина(город), россия(город),прибалтика(город). Составить правило, позволяющее определить, кто отдыхал в России.

Проследить поиск решения задачи с помощью отладчика Visual Prolog и построить целевое дерево поиска с возвратом.

Решение:

1. Создайте новый проект (Project | New Project) и наберите текст программы:

DOMAINS

имя, город=string

PREDICATES

отдыхает(имя, город)

украина(город).

россия(город).

прибалтика(город).

отдых_Россия(имя)

CLAUSES

отдыхает(sasha, antalia).

отдыхает(anna, sochi).

отдыхает(dima, urmala).

отдыхает(oleg, kiev).

украина(kiev).

россия(sochi).

прибалтика(urmala).


отдых_Россия(X):-

отдыхает(X,Y),

россия(Y).

GOAL

отдых_Россия(X),

write(X),nl.

 

3. Сохраните проект (Project | Save Project)

 

4. Запустите его на исполнение (Project | Run, или клавиша <F9>, или кнопка <R>). Результат выполнения программы:

anna

 

5. Проследите поиск этого решения с помощью отладчика(Debugger). Для этого:

а) запустите отладчик (Project | Debug);

б) в окне отладчика выберите команду View | Local Variables (для просмотра текущих значений переменных);

в) нажимайте клавишу <F7> (или Run | Trace Into) для пошагового выполнения программы, текущие значения переменных отображаются в окне Variables For Current Clause

 

 

рис.9. Окно отладчика


Поиск решения можно представить следующим образом:

решение: X= anna

рис.10. Целевое дерево поиска решения

ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

1. База данных содержит следующие факты:

увлекается(“Коля”, гитара).

увлекается(“Оля”, скрипка).

увлекается(“Дима”, плаванье).

увлекается(“Таня”, теннис).

спорт(плаванье).

спорт(теннис).

муз_инстр(скрипка).

муз_инстр(гитара).

а) составить правило спортсмен и определить, кто увлекается спортом;

б) проследить за поиском решения с помощью отладчика;

в) построить целевое дерево поиска с возвратом.

 

2. База данных содержит следующие факты:

увлекается(“Дима”, плаванье).

увлекается(“Таня”, теннис).

увлекается(“Коля”, гитара).

увлекается(“Оля”, скрипка).

спорт(плаванье).

спорт(теннис).

муз_инстр(скрипка).

муз_инстр(гитара).

а) составить правило музыкант и определить, кто увлекается музыкой;

б) проследить за поиском решения с помощью отладчика;

в) построить целевое дерево поиска с возвратом.


Отчет о выполненной самостоятельной работе должен содержать:

1) тему лабораторной работы;

2) условие задачи;

3) листинг программы;

4) результаты ее тестирования;

5) целевое дерево поиска решения.



Поделиться:


Последнее изменение этой страницы: 2016-04-08; просмотров: 612; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.75.46 (0.006 с.)