Лекция 1:

Определение отношений в программе

Лекция 1: 123456 || Лекция 2 >

1.5. Основные разделы программы

В языке Visual Prolog используются следующие разделы программы [15]:

  • (class) facts — объявление предикатов, описывающих факты (а также внутренних баз данных и фактов-переменных — см. гл. 4);
  • (class) predicates — объявление предикатов;
  • domains — объявление доменов (типов данных);
  • constants — объявление констант;
  • clauses — раздел предложений, которые определяют предикаты;
  • goal — раздел, в котором определяется цель программы.

Раздел goal может быть только один в проекте, он располагается в файле main.pro.

Другие разделы программы связаны со структурой классов:

  • class <имя класса> … end class <имя класса> — декларация класса;
  • class <имя класса > : <имя интерфейса> … end class <имя класса> — декларация класса, порождающего объекты;
  • interface <имя интерфейса> … end interface < имя интерфейса > — интерфейс;
  • implement <имя класса > … end implement <имя класса > — имплементация класса;
  • open — имена "открытых" классов и интерфейсов;
  • properties — объявление свойств;
  • constructors — объявление конструкторов (в декларациях классов).

Кроме этого, имеются разделы supports, resolve, inherits, delegates, predicates from и другие.

1.6. Создание модулей

В дальнейшем рекомендуется для каждой главы создавать отдельный консольный проект, а для каждого примера — отдельный модуль (рис. 1.5).

Дерево проекта chapter1

Рис. 1.5. Дерево проекта chapter1

Для того чтобы создать модуль, следует выделить корень дерева проекта и выбрать команду (всплывающего) меню New In New Package. В открывшемся диалоговом окне Create Project Item необходимо выбрать в левом поле раздел Class (см. рис. 1.4), убрать флажок из поля Create Interface, ввести в поле Name имя модуля (ex1) и нажать на кнопку Create. В декларации класса (файл ex1.cl) нужно объявить предикат run, с помощью которого будет указываться цель:

predicates
    run: ().

Раздел open имплементации класса (файл ex1.pro) должен иметь вид:

open core, console

Раздел goal проекта (файл main.pro) нужно изменить следующим образом:

goal
    mainExe::run(main::run),
    ex1::run().

Для построения и компиляции пакета используются команды Build и Compile.

Перед именем предиката (домена, функтора, свойства или константы) объявленного в декларации класса, вне имплементации этого класса указывается имя этого класса: пишется имя класса, ставится двойное двоеточие, а затем вводится имя предиката. Для запуска программы используются команды меню Build > Run in Window или Build > Execute (или кнопка E панели инструментов).

Замечание. Если используется незарегистирированная версия Personal Edition, то при выполнении любой команды меню Build появляется окно, предлагающее активировать код лицензии. Для продолжения — выполнения команды — достаточно нажать кнопку Cancel. Код лицензии выдается при регистрации системы. Регистрация бесплатна. После активации кода указанное окно больше не появляется. Остается окно с предупреждением о возможности использования ознакомительной версии только некоммерческим образом.

Упражнения

  1. Определите в программе о родственных отношениях следующие бинарные отношения:

    • внук, внучка, дедушка и бабушка;
    • ребенок как обратное к отношению родитель;
    • сын, дочь, сестра и брат;
    • супруги как симметричное замыкание отношения супруг.
  2. Напишите программу, которая с помощью бинарных отношений владелец, животное и цвет, хранящих пары хозяин – кличка, кличка – животное и кличка – окрас, соответственно, описывает следующие сведения. Майкл владеет рыжим котом, Сьюзен шоколадным, Дэн и Пит владеют серыми котами. Билл имеет собаку серого окраса, а Бетти шоколадного. Все животные имеют уникальные клички (придумайте их самостоятельно). Составьте запросы к программе:

    • найти владельцев серых котов;
    • найти животного Билла и цвет этого животного;
    • найти животных, которыми владеют Бетти и Майкл;
    • найти владельцев животных шоколадного окраса.
  3. Найдите декларативное значение программы "Птицы" (листинг 1.1).

  4. Постройте для логической программы

    add(o, X, X).
    add(s(X), Y, s(Z)):- add(X, Y, Z).
    • эрбранов универсум;
    • эрбранов базис;
    • минимальную модель.
Лекция 1: 123456 || Лекция 2 >
Жаныл Айкын
Жаныл Айкын
Rustam Inatov
Rustam Inatov

Доброго времени суток, подскажите пожалуйста, visual prolog examples, pie, vip7.5 - это все, где я могу скачать? (в смысле) может быть на сайте есть какой-то архив? Увы я не нашел его.

Подскажите, пожалуйста.

С уважением, Рустам.

Айдана Ахметова
Айдана Ахметова
Россия
Дмитрий Куянов
Дмитрий Куянов
Россия, Омск, ОмГТУ