Структура программы. Определение данных, предикатов, фактов и правил

Страницы работы

Фрагмент текста работы

 СТРУКТУРА ПРОГРАММЫ Обычно программа на Прологе имеет следующую структуру:

DOMAINS                                                                                   /*определение данных*/

PREDICATES                                                          /*определение предикатов*/

СLAUSES                                                           /*определение фактов и правил*/

GOAL                                                                                  /* определение цели */

На языке Тurbo Prolog раздел GOAL может отсутствовать. При этом цели могут задаваться вводом с клавиатуры в окне диалога (Dialog), которое служит для ввода запросов и выдачи результатов. На языке Visual Prolog цели задаются в разделе программы GOAL. Для тестирования целей используется команда TestGoal из меню Project . Результат выводится в окне сообщений. Программа для Visual Prolog может содержать раздел CONSTANTS, в котором задаются константы. При модульном программировании в программе могут присутствовать еще три раздела, обеспечивающие определение глобальных доменов GLOBAL DOMAINS, предикатов GLOBAL PREDICATES и баз данных GLOBAL DATABASE.. Эти разделы должны объявляться в начале программы. Определение типов данных и предикатов в этих разделах позволяет обеспечить межмодульный интерфейс. Раздел DOMAINS. В этом разделе определяются типы данных, используемые в программе. Содержимое этого раздела может отсутствовать, но для улучшения читабельности и ясности программы заголовок DOMAINS рекомендуется всегда включать в текст. Раздел PREDICATES. В этом разделе определяются предикаты (отношения). Каждый предикат определяется со своим именем и своими аргументами (параметрами). Предикат - это функция от одного или нескольких переменных, принимающая значения «истина» или «ложь».Если типы данных некоторых аргументов предопределены, то они должны быть описаны в разделе DOMAINS.Раздел СLAUSES. Это основной раздел программы. В этом разделе определяются факты и правила. Факт представляется именем предиката, за которым следуют аргументы, заключенные в круглые скобки. Заканчивается запись факта точкой. Все имена предикатов и константы должны начинаться со строчной буквы.Правило состоит из заголовка правила и тела правила. Заголовок представляет собой предикат, тело состоит из термов, которые могут быть связаны между собой операциями or или аnd. Между телом и заголовком стоит знак «:-» . Каждое правило должно заканчиваться точкой. Имена переменных должны начинаться с прописной буквы и могут содержать только буквы, цифры или знак подчеркивания - «_».Особую роль играют анонимные переменные. Они представляются одиночным знаком подчеркивания.Раздел GOAL. В этом разделе определяется цель. Цель может состоять из нескольких подцелей.Комментарии. Комментарии могут располагаться в программе на произвольном месте. Комментарий начинается с последовательности символов /* и заканчивается символами */. Все, что располагается в строке после символа % также является комментарием.. Представлении о логическом программировании.

1. ЛИСП - язык обработки списков; разработан Дж. Маккарти в США. Этот язык применяется для программирования задач ИИ, в которых символьные данные удобно представляются в виде списков Лиспа, а для получения решения используется механизм рекурсии. ЛИСП стал основой ряда программных реализаций интеллектуальных систем и дал толчок к разработке множества специализированных языков ИИ и языков представления знаний, так как не включает в себя специальных средств для представления знаний, управления выводом и т.п. 2. РЕФАЛ - алгоритмический язык рекурсивных функций; разработан в России В. Турчиным. Он базируется на нормальных алгоритмах Маркова. Подобно ЛИСПу, этот язык активно использует мощные средства преобразования списков на основе концепции распознавания по образцу.

3. ПРОЛОГ - программирование в терминах логики,. европейский язык. Он разработан А. Калмерауэром в Марсельском университете и базируется на логическом исчислении. Специфика языка состоит в том, что здесь имеется встроенная процедура поиска решений на И/ИЛИ графах.

ПРИМЕР ПРОСТЕЙШЕЙ ПРОГРАММЫРассмотрим основные механизмы Пролога на примере конкретной программы.

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

Рис. 1. Дерево родственных отношений

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

Эта программа содержит шесть предложений. Каждое предложение объявляет об одном факте наличия отношения родитель. Такой программе можно задавать вопросы, касающиеся отношения родитель. Например, является ли Петр родителем Нины? Этот вопрос можно передать пролог-системе, набрав в разделе целей запрос: Цель: родитель (петр, нина). Найдя этот факт в программе, система ответит да          (yes)

Некоторые важные моменты языка Пролог: 1.На Прологе легко определить отношение, подобное отношение родитель, указав n– ку объектов

Похожие материалы

Информация о работе

Тип:
Экзаменационные вопросы и билеты
Размер файла:
50 Kb
Скачали:
0