Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ФиЛП_материалы / Материалы / Prolog / КонсольVisualProlog5

.doc
Скачиваний:
26
Добавлен:
01.06.2015
Размер:
159.23 Кб
Скачать

В Visual Prolog 5.1(VP) имеется возможность работать в 2-х режимах – с отдельным файлом и с проектом.

Рассмотрим первый. После запуска системы открываем File/New и набираем Пролог программу (рис.1). (Можно копировать файлы из Word. Если в импортируемом файле есть кириллица и она не выводится на экран, то попробуйте подобрать шрифт(иконка F), например, MS Sans Serif.

Коротко о структуре Пролог-программы, приведенной на рис.1 (см. также лаб.работу №4). Она состоит из 4-разделов: domains, predicates, clauses и goal. В сlauses записываются факты(утверждения), принимаемые в программе за аксиомы, и правила, которые используют эти аксиомы для вывода заключений. Здесь 5 фактов с названием «автомобиль», в каждом из которых 4 аргумента- константы, и два правила с одним и тем же именем start. В первое входят предикат «автомобиль», аргументы которого не константы, а переменные (первая буква – заглавная), и системные предикаты wrie, readint и т.п., соединенные символом «,». Последний является аналогом конъюнкции. Во втором правиле start содержится предикат write и предикаты перехода на новую строку – nl.Предикаты, входящие в тело правила, называются подцелями, а имя правила – целью. Цель заносится в раздел goal. Пролог-система доказывает истинность цели, для чего пытается доказать истинность каждой подцели при одних и тех же значениях переменных в теле правила. Для поиска доказательства система в общем случае делает полный перебор фактов. В нашем случае имеется 2 варианта решения в соответствии с двумя правилами start:

- система пытается доказать, что существует автомобиль, цена которого меньше задаваемой с клавиатуры, а год выпуска больше задаваемого; после достижения цели выводятся параметры найденного автомобиля;

- если первый вариант правила не доказывается, то система переходит к доказательству второго варианта, которое сводится к выводу сообщения “Автомобиля с такими параметрами нет”. В том или другом случае цель достигается, поэтому заключительное сообщение системы в обоих случаях yes. (Если убрать второй вариант start, то при недоказательстве цели выводится сообщение no)

В разделе predicates объявляются прототипы фактов и названия правил, а в разделе domains описываются типы аргументов предикатов.

Рис.1

После занесения текста файл по нажатию иконки G или пункта меню Project/Test Goal компилируется, связывается и выполняется, при этом выполнимый файл не заносится на диск. Как обычно, компилятор выдает предупреждения (Warnings) и ошибки (Errors). (рис.2 и 3.).

Рис.2

Рис.3

Ошибка заключается в том, что в 3-м факте сверху в качестве второго аргумента поставлено число, тогда как согласно объявлению предиката в разделе predicates должен стоять символ.

Предупреждения сообщают, что предикаты автомобиль и start являются недетерминистскими предикатами. Это значит, что они могут в процессе поиска решения пересогласовываться, т.е. выполняться несколько раз с различным набором значений переменных. Все пользовательские предикаты недетерминистские. Можно не обращать внимания на это предупреждение, а можно предварять эти предикаты словом nondeterm в разделе predicates.

nondeterm автомобиль (модель, цвет, цена, год_выпуска)

nondeterm start

(Обратите внимание, что система не может вывести имя предиката на русском языке(рис.3). Могут появиться некоторые другие проблемы, связанные с наличием в программе кириллицы. Поэтому, вообще говоря, в серьезных программах лучше использовать латиницу, во всяком случае для имен предикатов и переменных. В лабораторных пишите, как удобнее.)

После исправления ошибки и запуска программы получаем в зависимости от введенных критериев одно (рис.4) или другое (рис.5) решение.

Рис.4

Рис. 5.

Теперь называем файл, например, lab1.pro и сохраняем его (можно было сделать это и раньше).

Способ решения с организацией проекта более сложен и не особенно нужен для выполнения лабораторных работ. Желающие могут прочитать о нем в [Адаменко,Кучуков ] или в документации системы (на английском), которая записывается на диск при установке системы (раздел DOC).

5

Соседние файлы в папке Prolog