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

Вопрос 5) Основные секции программы Prolog

symbol

Символьная строка, которая начинается со строчной буквы или заключена в кавычки

string

Также символьная строка, но имеющая другое внутреннее представление

char

Отдельный символ, заключенный в апострофы

integer

Целое число в диапазоне от -32768 до 32767

real

Любое вещественное число

1.       Основные секции программы. (Prolog)

Программа на Прологе включает следующие программные разделы описаний: доменов, динамических баз данных, предикаты, фактов и правил, цели. Раздел доменов: В разделе domains описываются любые используемые домены (типы аргументов пользователя), которые не являются стандартными доменами Пролог-программы. Стандартные домены не описываются. Домены в языке программирования Прологе подобны типам в Паскале. Раздел domains служит двум оченеь важным делам. Во первых можно определить для доменов осмысленные имена, причем даже в том случае, если внутренне они совпадают с именами уже существующих доменов. Во вторых объявления специальных доменов используются для объявления структур данных, которые стандартными доменами не определяются. Синтаксис: domains name=type - стандартный mylist=elevent* - списочный Раздел описания динамических баз данных: Иногда в процессе выполнения программы может возникнуть потребность видоизменения некоторых фактов, с которыми работает программа. В таком случае факты образуют динамическую или внутреннюю базу данных. В прологе для объявления в программе фактов, которые должны стать частью динамической БД, предусмотрен специальный раздел – database. Имеется несколько встроенных предикатов, существенно облегчающих использование динамических БД (consult,save,assert,retract). Раздел описания предикатов: Раздел описания предикатов начинается со служебного слова predicates и предназначен для объявления предикатов пользователя. Встроенные предикаты Пролога в этом разделе не объявляются. Имя предиката может начинаться с буквы или знака подчеркивания. Затем могут следовать буквы, цифры и символы подчеркивания. Величина букв значения не имеет, однако не рекомендуется использовать в качестве первой буквы Заглавную. Кроме того нельзя использовать символы пробела, минуса, звездочки, обратной и прямой черты. Количество символов, описывающих имя предиката не должно превышать 250. синтаксис: predicates name(integer) name2(string, integer)

Любой предикат, описанный программистом в разделе clauses, должен обязательно быть объявленным в разделе predicates, иначе система программирования Пролог выведет сообщение об ошибке о несуществовании данного предиката. Арность предиката – количество термов (аргументов) в его описании. Для объявления принадлежности предиката к той или иной группе в Прологе существуют служебные слова determ и nondeterm. Существует стандартный предикат check_determ который отвечает за проверку предикатов на детерминированность. Недетерминированными являются предикаты, которые могут вызываться на пересогласование с базой данных при возврате по несогласованию следующего предиката(метод бектрекинга). Детерминированные предикаты при возврате пропускаются. Такие предикаты занимают меньше места в памяти компьютера, после компиляции выполняются быстрее. Раздел описания фактов и правил: Этот раздел является ядром программы на Прологе, в нем размещаются факты и правила, которыми оперирует Пролог, пытаясь достичь цели программы. Просмотр всех описанных правил и фактов происходит сверху-вниз. Синтаксис фактов: predicateName(rem1,term2…termN). Синтаксис правил: Заголовок :- подцепь1, подцепь2…, подцепьN. где :- читается как «если», запятая понимается как конъюнкция и читается как «и». Раздел описания цели программы: В разделе goal помещается встроенная (внутренняя) цель, когда программисту требуется чтобы программ могла выполняться вне среды Пролога и независимо от нее. Турбо Пролог позволяет работать только с одной из двух видов целей, внутренней и внешней. Если цель вводится в интерактивном режиме в окне Dialog в ответ на подсказку Goal, то это внешняя цель программы. При этом в самой программе раздел Goal отсутствует. Если в программе описан раздел Goal, то имеет место внутренняя цель. Синтаксис: goal <утверждение>. В конце утверждения ставится точка. Раздел описания констант: Этот раздел начинается со служебного слова constants, после которого следует сами объявления с соблюдением следующего синтаксиса. constants nameConst = значение. Раздел описания глобальных доменов и предикатов: Пролог позволяет объявить в программе некоторые домены, предикаты и выражения глобальными. Это можно сделать сформировав в самом начале программы отдельные разделы global domains, global predicates и global database.

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