Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ контр раб ПЗ и ИС.doc
Скачиваний:
3
Добавлен:
24.11.2019
Размер:
5.41 Mб
Скачать
    1. Декларативная и процедурная семантика языка Пролог

Как уже упоминалось, язык Пролог поддерживает декларатив­ный, описательный стиль программы. Декларативный смысл программы состоит в том, что она определяет, является ли данная цель истинной, достижимой [5]. Если является, то программа выясняет, при каких значениях переменных эта цель достигается. Процедурный же смысл программы состоит в определении порядка действий, с помощью которых данная цель достигается.

Таким образом, декларативный смысл касается только отношений объ­ектов, определенных в программе, он определяет, что должно быть резуль­татом. Процедурный смысл диктует, как именно следует получить результат.

Эта особенность языка Пролог значительно облегчает программи­рование сложных логических задач.

    1. Типы данных Пролог

Предложим классификацию данных PROLOG, изображенную на рис. 1.

Переменные — это данные PROLOG, имеющие имя, представляющее собой набор букв и цифр, начинающийся с заглавной (прописной) бук­вы. Переменная может быть конкретизирована каким-либо значением или не конкретизирована.

Следует отметить, что конкретиза­ция не является полным аналогом опе­ратора присваивания.

Переменная получает свое значе­ние только в результате сопоставления с константами в фактах и правилах программы. Получив значение, пере­менная обладает им лишь до получе­ния ответа на запрос. После этого пе­ременная вновь становится свободной и участвует в поиске альтернативных решений. Поэтому следует помнить:

— перемененная не является хранили­щем информации на все время работы программы, а служит частью процесса сопоставления (унификации), о котором речь пойдет далее;

— областью действия переменной является не вся программа, а лишь одно предложение, т. е. одно правило или один вопрос.

Во многих случаях переменная встречается в правиле только один раз, и ее значение не влияет на результат логического вывода. Такую переменную называют анонимной и замещают знаком подчеркивания.

Рис. 1. Классификация данных Пролог

Атомом называют любой набор символов алфавита, заключенный в кавычки, или набор строчных букв и цифр, начинающийся с буквы, например:

"alpha", "Alpha", "4beta", anna, x5.

He являются атомами наборы: 1b, #d, a-b.

Атомом также является любой символ алфавита. Например: (, ;, <, >.

Числовые константы определяются в PROLOG так же, как и в других языках.

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

  • пустой список [ ] — это список;

  • [А | В] — список, если В — список.

И, наконец, структурой называют единый объект Пролога, состоя­щий из совокупности других объектов, например, Отец(X,Иван).

1.3. Раздел предложений

Фактом называют предложение Пролога следующего вида:

<имя факта>(<список констант или переменных через запятую>).

Факт считается всегда истинным. Например:

Хобби(Анна,марки).

Хобби(Петя,фантики).

Данное([1,2,3,4]).

Предикатом называют предложение Пролога вида

<имя предиката>(<список имен переменных и констант

через запятую>).

Предикат может принимать значение «истина» или «ложь» в зависимости от значений переменных.

Правилом называют следующее предложение Пролога:

<предикат> if <предикат1>, <предикат2>, ..., <предикатN>.

Раздел предложений имеет вид

Clauses <факты>. <правила>.

Например:

Clauses

отец(иван,петр). /*Иван — отец Петра*/

отец(иван,игорь). /*Иван - отец Игоря*/

отец(игорь,семен).

отец(игорь,анна). дед(Х,У) if отец(Z,Y), отец(Х,Z).

/*Х — дед Y,если отцом Y является Z, а отцом Z является X*/