Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TRPP_uberdohuya.doc
Скачиваний:
14
Добавлен:
22.08.2019
Размер:
422.4 Кб
Скачать

Тема 21 Язык программирования Турбо-Пролог

Особенности языка. Архитектура программы. Процедурная семантика. Синтаксис языка.

Пролог (фр. Programmation en Logique) — язык и система логического программирования, основанные на языке предикатов математической логики Основными понятиями в языке Пролог являются факты, правила логического вывода и запросы, позволяющие описывать базы знаний, процедуры логического вывода и принятия решений.

Факты в языке Пролог описываются логическими предикатами с конкретными значениями. Правила в Прологе записываются в форме правил логического вывода с логическими заключениями и списком логических условий.

Особую роль в интерпретаторе Пролога играют конкретные запросы к базам знаний, на которые система логического программирования генерирует ответы «истина» и «ложь». Для обобщённых запросов с переменными в качестве аргументов созданная система Пролог выводит конкретные данные в подтверждение истинности обобщённых сведений и правил вывода.

Факты в базах знаний на языке Пролог представляют конкретные сведения (знания). Обобщённые сведения и знания в языке Пролог задаются правилами логического вывода (определениями) и наборами таких правил вывода (определений) над конкретными фактами и обобщёнными сведениями.

Начало истории языка относится к 1970-м годам.[1] Будучи декларативным языком программирования, Пролог воспринимает в качестве программы некоторое описание задачи или баз знаний и сам производит логический вывод, а также поиск решения задач, пользуясь механизмом поиска с возвратом и унификацией.

Turbo Prolog берет свои истоки из классического языка Prolog, автором которого являются Алэн Колмероэ и другие члены "группы искусственного интеллекта" Марсельского университета (Франция), реализованного впервые в 1973 г.

Turbo Prolog имеет существенные отличия от классического языка Prolog:

• Строгая типизация данных.

• Отсутствие возможности рассматривать правила как данные, т.е. добавлять и удалять их во время работы.

• Невозможность определять операции.

Turbo Prolog является компилированным языком, в отличии от многих других аналогов и отличается высокой скоростью трансляции и выполнения (что достигнуто как раз отходом от классического языка Prolog).

Программа, написанная на Turbo Prolog’е, состоит из следующих секций:

• CONSTANTS - определение констант;

• DOMAINS - определение доменов;

• DATABASE - описание предикатов внутренней базы данных (фактов);

• PREDICATES - описание предикатов;

• CLAUSES - определение предикатов и фактов;

• GOAL - внутренняя цель.

Turbo Prolog может иметь внутреннюю цель. В этом случае программа начинает выполняться с точкой входа в секции goal.

Основные понятия Turbo Prolog’а

Домен - пользовательский или стандартный тип данных. Пользовательский домен может включать в себя несколько поддоменов и может иметь несколько альтернативных значений. Также он может содержать символическое(ие) имя(ена). Например:

Domains

Mydomain = integer %определяем домен, идентичный стандартному домену integer

Mydomain2 = pair(integer, integer) %определяем домен, включающий в себя два поддомена с типом integer

Mydomain2 = blue ; red % определяем домен, который может принимать значения blue или red.

Константа - данные, которые нельзя изменить

Терм - единообразная структура для описания данных и предикатов.

Факт - структура данных во внутренней БД, которая может быть извлечена или добавлена.

Предикат - основной функциональный объект данного языка. Условно, предикат возвращает значение failure или true. Если предикат во время выполнения возвратит значение true, то предикат, который его вызвал, будет выполняться дальше. Если предикат возвратит значение failure, то произойдет откат (бектрекинг) на предыдущий недетерменированный предикат.

Детерменированный предикат - это такой предикат, который хранит в себе точки возврата.

Недетерменированный предикат выполняется только один раз и не хранит в себе никакие состояния.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]