Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Railway(novosibirsk, omsk).
записан с использованием предиката railway, имеющего два аргумента. Число аргументов предиката называется арностью предиката и обозначается black/1 (предикат black имеет один аргумент, его арность равна единице). Предикаты могут не иметь аргументов, арность таких предикатов равна 0. Правило описания предикатов: Объявление предиката начинается с имени предиката, сопровождаемого открытой (левой) круглой скобкой. После имени предиката и открывающей скобки идут аргументы предиката, если они есть. имя предиката(тип аргумента 1, [тип аргумента 2], …) Тип аргумента 1, [тип аргумента 2], … являются или стандартными доменами или доменами, которые Вы заранее должны были объявить в разделе доменов. Имя предиката может содержать буквы латинского алфавита, цифры и нижнее подчеркивание. 3. Раздел предложений CLAUSES предназначен для фактов и правил, на которых Пролог будет основываться для решения поставленных целей. Программа на языке Prolog состоит из предложений, которые можно разделить на две группы: факты и правила вывода. В виде фактов в программе записываются данные, которые принимаются за истину и не требуют доказательства. Данные в фактах могут быть использованы для логического вывода. Факт может описывать свойства конкретных объектов или отношения между некоторыми объектами. Факт - это свойство объекта или отношение между объектами, для которого известно, что они истинны. Правила позволяют Вам выводить одни факты из других. Другими словами, правила как заключения являются верными, если правота фактов или заключений, на основе которых они были сделаны, точно определена. Правило описания предложений: имя предиката(имя объекта 1, [имя объекта 2], …). % факт. имя предиката(имя объекта 1, [имя объекта 2], …): - имя предиката(имя объекта 1, [имя объекта 2], …). % правило. 4. Раздел целей GOAL используется для стартовой цели программы на языке Пролог. Для того чтобы программа, написанная на языке Prolog, начала работу, к ней нужно обратиться с запросом. Запросы могут быть двух видов: внутренние и внешние. Внутренние запросы записываются непосредственно в тексте программы, для использования внешних запросов нужна программная оболочка. Вне зависимости от того, являются запросы внутренними или внешними, выглядят они одинаково. Запрос может быть простым (состоящим из одной цели) или составным (состоящим из нескольких целей). Выполнение программы заключается в доказательстве целей, входящих в запрос. Программа считается успешно выполненной (завершенной), если доказаны цели, из которых состоит запрос. Правило описания цели: имя предиката(имя объекта 1, [имя объекта 2], …). Основные стандартные домены Доменом в Прологе называют тип данных аргумента предиката. Существует несколько стандартных доменов: 1. integer - целые числа. 2. real - вещественные числа. 3. string - строки (любая последовательность символов, заключенная в кавычки). 4. char - одиночный символ, заключенный в апострофы. 5. symbol - последовательность латинских букв, цифр и символов подчеркивания, начинающаяся с маленькой буквы или любая последовательность символов, заключенная в кавычки. Основные стандартные предикаты: write(X) - вывод значения X на экран (по умолчанию) или на другое устройство, где X - переменная; nl - переход в следующую строку на экране; readln(X) - ввод строковой переменной; readint(X) - ввод целочисленной переменной; readreal(X) - ввод вещественной переменной. fail - это тождественно-ложный предикат, искусственно создающий ситуацию неуспеха. После выполнения этого предиката управление передается в точку отката и поиск продолжается. Использование предиката fail позволяет найти все решения задачи. Чтобы ограничить пространство поиска и прервать поиск решений при выполнении какого-либо условия, используется предикат отсечения (!). Однажды пройдя через отсечение, невозможно вернуться назад, т.к. этот предикат является тождественно-истинным. Процесс может только перейти к следующей подцели, если она имеется. Например, p: - p1, p2,!, p3. Если достигнуты цели p1 и p2, то возврат к ним для поиска новых решений невозможен. Синтаксис языка Пролог Символ «: -» означает «if» (при условии, если), и служит для того, чтобы разделить две части правила: голову и тело. Символ «,» означает логическую операцию «И», «;» - «ИЛИ». Все предложения (в разделе clauses) должны обязательно заканчиваться точкой. Ключевые слова Следующее зарезервированные слова Вы не должны использовать как определяемые пользователем: and, clauses, constants, database, domains, elsedef, enddef, global, goal, if, ifdef, ifndef, include, or, predicates. Арифметические вычисления Хотя Пролог не предназначен для решения вычислительных задач, его возможности вычислений аналогичны соответствующим возможностям таких языков программирования как Basic, C, Pascal. В языке Пролог имеется ряд встроенных математических операций и функций для вычисления арифметических выражений. Рассмотрим некоторые из них.
Совместное использование фактов, правил, и запросов Рассмотрим программу, оформленную по всем правилам. Этот пример, демонстрирует, как Пролог использует правила для ответов на запросы. Предположим, Вы хотите спросить у Пролога следующее: Любит ли Bill бейсбол? 1. Запустите среду Visual Prolog. 2. Откройте новый файл (File → New). В появившемся окне наберите программный код, содержащий разделы: PREDICATES (описание пользовательского предиката) CLAUSES (перечисляются имеющиеся факты и правила) GOAL (формулируется запрос). 3. Опишите предикат likes и типы его аргументов. nondeterm likes(symbol, symbol) Замечание: ключевое слово nondeterm определяет недетерминированные предикаты, которые могут совершать откат назад и генерировать множественные решения. Таким образом, если задача предполагает возможность получения несколько решений, следует объявлять предикаты как недетерминированные. 4. Для реализации программы мы должны задать Прологу базу данных, опираясь на эти данные, Пролог будет искать ответ на поставленный вопрос. Опишите следующие предложения в разделе предложений.
|