Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Правила программирования в системе Prolog

 

В разделе константы объявляются используемые в программе константы.

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

В Prolog’е объявление типа данных доменом с конкретным местным предикатом осуществляется в разделе предикаты. Домен описывает множество значений, которые может принимать переменная предиката в ходе выполнения программы.

Домены подразделяются на простые и структурированные, стандартные и нестандартные. К стандартным доменам относятся:

symbol – длина не более 250 символов, имеет две формы записи: последовательность букв, цифр, знаков подчёркивания, начинающиеся со строчной буквы; и последовательность символов, заключённая в двоичные кавычки.

string – строка символов: любая последовательность символов, заключённая в двойные кавычки.

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

integer – целое число в диапазоне от –32768 до 32767.

real – действительное число, допускается обычная и экспоненциальная форма записи, значение экспоненты должно быть от е-307 до е308.

 

Объявление новых доменов с использованием стандартных имеет вид:

 

<Имя>=<Имя стандартного домена>,

 

 

Примеры объявлений:

 

domains

a = integer

fas = symbol

ret, das = real

 

Такие объявления новых доменов улучшают читабельность программы и обеспечивают контроль типов значений переменных – смешивать в ходе выполнения программы переменные разных типов (доменов) нельзя.

Кроме стандартных видов доменов, Turbo Prolog допускает использование структуры домена, состоящей из нескольких простых или сложных объектов. Объявление структуры имеет следующий вид:

<структура> = <имя структуры> (<D1> <D2>…<Dn>)

Здесь <имя структуры> называется функтором, а домены <D1>,<D2>,…, <Dn> – это либо простые домены, либо имена ранее объявленных доменов, либо, в свою очередь, структуры. Структуры позволяют сортировать объекты по категориям. Ссылки на доменную структуру осуществляются по имени функтора.

В одном объявлении можно описать несколько альтернативных вариантов структуры, разделяя варианты точкой с запятой или служебным словом or.

Примеры объявления структур:

 

domains

d1, d2, d3 = symbol

fr = fruits (d1,d2,d3); pot (d1)

 

Один и тот же предикат может иметь различное число аргументов, такие предикаты объявляются для каждого варианта отдельно. В программе допускается использовать не более 300 предикатов, число аргументов у предиката не должно превышать 50.

Примеры объявления предикатов:

 

predicates

add (integer, integer, integer)

ek (fk)

ek (d1, d2)

 

В разделе database описываются предикаты динамической базы данных. Перечисленные здесь предикаты, после подстановки в них вместо переменных констант (т.е. превращение их в факты), могут быть перемещены и, если потребуется, удалены во время выполнения программы в динамическую базу данных. делается это с помощью стандартных (встроенных в систему) предикатов assert, asserta.

 

В разделе clauses описываются утверждения, каждое из которых является правилом или фактом. В конце каждого утверждения ставится точка.

Факт состоит из имени предиката и заключённого в скобки списка аргументов - констант. Правило состоит из заголовка – предиката, объявленного в разделе predicates, за которым следует сперва двоеточие с дефисом (:-), а потом список вызовов предикатов (пользовательских и/или стандартных), разделенных запятыми или точками с запятой. Вместо двоеточия с дефисом можно использовать ключевое слово if, вместо запятой – ключевое слово and, вместо точки с запятой – ключевое слово or.

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

В теле правила кроме объявленных в программе предикатов, могут использоваться стандартные предикаты и операции сравнения. Стандартные предикаты выполняют разнообразные функции по вводу-выводу, работе с файлами, выполнению функций DOS, обработке строк, поддержке графического режима, обеспечение интерфейса с другими системами программирования. Описание основных стандартных предикатов Turbo Prolog рассматривается ниже.

В правилах можно использовать следующие основные операции сравнения:

- < меньше

- > больше

- <= меньше или равно

- >= больше или равно

- = равно

- <>, >< не равно

Для сравнивания между собой выражений и переменных.

Операция = (равно) устанавливает соответствие между выражениями правой и левой частей предиката Х=У. Предикат этот записан в привычной инфиксной форме.

В процессе согласования переменных используются следующие соглашения:

1. Если Х – свободная переменная, а У – конкретизированная, то при записи Х=У переменная Х станет конкретизированной и получит значение, равное У.

2. Целые числа и строки всегда равны самим себе.

3. Две структуры равны, если они имеют одинаковые функторы, одинаковое число параметров, и все соответствующие параметры равны между собой.

4. Если имеется запись вида Х=У и обе переменные свободны, то они становятся сцепленными и при конкретизации одной из них, вторая автоматически будет означена тем же значением.

Раздел goal содержит запрос в программе, называемый внутренним. Для внутреннего запроса Prolog осуществляет поиск только первого подходящего решения. При этом система не сообщает о результатах найденного решения (успешное или нет). Полученные при сопоставлении значения переменных, входящих в предикаты запроса, так же не отображаются на экране. Эти действия должен запрограммировать программист с использованием стандартных предикатов для вывода данных.

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

 

Примеры:

1). Иванов – студент математического факультета.

Студент (“Иванов”, математический факультет).

2). Земля имеет форму шара.

Имеет (“Земля”, форма_шар).

х = “Земля”

?Имеет (“Земля”, у)

у = форма_шар.

 

<== предыдущая лекция | следующая лекция ==>
Работа в системе программирования Turbo Prolog | Управление вычислениями
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 379; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.