Опишите внешний вид среды Visual Prolog.
Окна Visual Prolog:
Ø окном редактора, предназначенным для набора кода программы;
Ø окном сообщений, в котором можно проследить операции, выполняемые средой в целом;
Ø окном выдачи ошибок (двойной щелчок на ошибке позволяет перевести курсор в коде программы в ту позицию, где была допущена ошибка);
Ø окном выдачи результатов, где можно увидеть непосредственно, как работает программа.
2. Какова структура Пролог-программ?
Обычно программа Visual Prolog включает три или четыре основных раздела. Это раздел выражений clauses, раздел описания предикатов predicates, раздел доменов domains и раздел цели goal.
3. Что содержится в разделе DOMAINS?
Раздел domains служит двум очень важным целям. Во-первых, можно определить для доменов осмысленные имена, причем даже в том случае, если внутренне они совпадают с именами уже существующих доменов. Во-вторых, объявления специальных доменов используются для объявления структур данных, которые стандартными доменами не определяются.
4. Что содержится в разделе PREDICATES? Что такое «арность»?
Предикаты определяются фактами и правилами. В разделе predicates просто перечисляется каждый предикат с указанием доменов аргументов.
Имя предиката должно начинаться с буквы; после этой буквы могут следовать буквы, цифры и символы подчеркивания. Величина букв значения не имеет, но все-таки не рекомендуется использовать в качестве первой буквы заглавную.
Общий вид определения предиката:
Pred(dom1,dom2,...,domN)
pred – имя предиката (имя отношения) (формально оно относится к типу symbol), dom – тип данных конкретного аргумента (всего аргументов в предикате N – это число аргументов предиката, его называют арностью предиката (от термина arity, и иногда пишут pred/N).
5. Для чего предназначен раздел CLAUSES?
В разделе выражений clauses программист размещает все включаемые в программу факты и правила.
Выражения, относящиеся к определенному предикату, должны размещаться в разделе clauses вместе. Последовательность определяющих предикат выражений называется ПРОЦЕДУРОЙ.
Фактом называют отношение или свойство, о котором известно, что оно имеет значение истина.
Правилом же является конструкция, содержащая некоторые условия.
Опишите раздел GOAL.
Содержание раздела goal аналогично правилу. Это попросту список подцелей. Но между разделом goal и правилом есть два отличия:
1. После ключевого слова goal не следует знак:- (если).
2. При запуске программы на выполнение Visual Prolog отрабатывает цель автоматически.
Visual Prolog как бы вызывает цель (обращается к разделу goal), а программа выполняется, пытаясь удовлетворить тело целевого правила. Если достигаются все подцели раздела goal, то программа успешно завершается. Если же в процессе выполнения программы какая-либо подцель не достигается, то и программа заканчивает работу неудачно.
7. Перечислите дополнительные разделы программ. Дайте их краткую характеристику.
Раздел facts
В Visual Prolog для объявления в программе фактов, которые должны стать частью динамической (или изменяющейся) базы данных, предусмотрен специальный раздел - facts.
Такой раздел базы данных объявляется с помощью ключевого слова facts, куда включаются объявления фактов, предназначенных для организации динамической базы данных (БД).
Раздел constants
Раздел объявления констант начинается ключевым словом constants, после которого следуют сами объявления с соблюдением следующего синтаксиса:
<Идентификатор> = <Макроопределение>
<Идентификатор> – это имя константы, а <Макроопределение> – это то, что этому имени соответствует. Каждое <Макроопределение> заканчивается символом новой строки, так что в одной строке может размещаться только одно описание константы.
На использование констант накладываются следующие ограничения:
- определение константы не может ссылаться само на себя;
- в программе может быть несколько разделов constants, но константы должны объявляться до их использования;
- идентификаторы констант являются глобальными и могут объявляться только один раз.
Разделы global
Visual Prolog позволяет объявить в программе некоторые домены, предикаты и выражения ГЛОБАЛЬНЫМИ (в отличие от ЛОКАЛЬНЫХ). Это можно сделать, сформировав в самом начале программы отдельные разделы globaldomains, globalpredicates и globalfacts.
8. Какие типы данных, используемые в Visual Prolog, вы знаете?
Типы данных: char, real, string, symbol.
ПРАКТИЧЕСКОЕ ЗАДАНИЕ
1. Наберите в окне редактора следующую программу:
Данная программа предлагает найти сумму двух чисел. Входящими параметрами здесь являются Num1, Num2, а выходящим – Rez.
Текст программы:
Domains
num1, num2, rez = real
Predicates
Sum(num1,num2,rez)
Clauses
sum(Num1,Num2,Rez):-Rez=Num1+Num2.
Goal
Sum(9.2,8.9,Rez).
Результат:
Rez=18.1
Solution
Добавьте в программу правило нахождения суммы трёх чисел – sum(Num1,Num2,Num3,Rez). Не забудьте при этом объявить новый предикат.
Текст программы:
Domains
num1, num2, num3, rez=real
Predicates
Sum(num1,num2,num3,rez)
Clauses
sum(Num1,Num2,Num3, Rez):-Rez=Num1+Num2+Num3.
Goal
Sum(9.2,8.9,2.3,Rez).
Результат:
Rez=20.4
Solution
3. Напишите правило Пролога, которое отображает следующую ситуацию.
У нас есть факты
отец(николай,иван).
мать(нина,иван).
Необходимо написать правило, которое определяет родителей Ивана.
Текст программы:
Predicates
nondeterm father (symbol, symbol)