Nondeterm father (symbol, symbol)

Опишите внешний вид среды 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)