Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Основные элементы языка Пролог.
Алфавит языка Пролог включает следующие символы: 1. A, B, C, …, Z, a, b, c,…,z — прописные и строчные буквы латинского алфавита. 2. 0,1,2,3,4,5,6,7,8,9 — цифры. + - = * / < > [ ] : ; , | . —специальные знаки
Основными конструкциями логического программирования являются термы и утверждения. В логических программах существует только один тип данных — логические термы (рис. 1). Понятие “терм” в Прологе совпадает с понятием терма в исчислении предикатов и означает либо переменную, либо константу, либо составной терм.
Переменная в Прологе — это последовательность латинских букв, цифр и знака подчеркивания, начинающая с прописной буквы или знака подчеркивания. Например, X, all, S1 — переменные. Переменные используются для представления объектов, значения которых определяются в ходе решения задачи. Переменные записываются в качестве аргументов предикатов в Пролог— программе и в запросах. Если значение аргумента предиката не принимается во внимание, то этот аргумент обозначается анонимной переменной, то есть в место имени переменной указывается знак подчеркивания «_». Константы используются для представления конкретных объектов и отношений. В языке Пролог существуют три вида констант: атомы, числа и строки. Атомы могут быть трех типов: 1. символьный атом — это последовательность латинских букв, цифр и знака подчеркивания, начинающая со строчной буквы. Например, may, all, factorial — символьные атомы. Символьные атомы не должны содержать пробелы. Символьные атомы используются для обозначения предметных, функциональных и предикатных констант. 2. Последовательность специальных знаков есть атом, например, :- >= *. 3. Любое слово из букв латинского и русского алфавита и цифр, заключенное в апострофы, например, ‘Mary’, ‘Маша’,’1_мая’, ‘Arity_Prolog’. Пробелы в символьных атомах не допустимы. Числа в языке Пролог используются целые и вещественные. Целые числа записываются так же, как в любом другом языке программирования; целые отрицательные числа записываются со знаком, в записи положительных чисел знак можно опустить, например, 135, 0, -89. Вещественные константы могут быть представлены в форме с фиксированной точкой и с плавающей точкой, например, 135.712 и 0.135712E+3,соответственно. Строки — это последовательности символов, заключенная между знаками $. Строки используются в задачах обработки текстов на естественных языках. $$ — пустая строка. Знак $ внутри строки записывается дважды. Строки могут включать пробелы, например, $1 января 2003 года $ есть строка, и $Turbo-Prolog$ тоже строка. Составной терм — это конструкция вида f(t1,t2,…,tk), где f — символьный атом, определяющий функциональную константу или главный функтор, а t1,t2,…,tk — термы, каждый из которых может быть составным термом. Составной терм по-другому называется структурой;
Представление клауз Хорна на языке Пролог. Факты. Правила. Вопросы. Представление фактов в Пролог—программах.
В логическом программировании существует три вида утверждений: факты, правила и вопросы. Самая простая программа на Прологе является множеством фактов. Факт — это предикатная структура, заканчивающаяся точкой, которая записывается следующим образом: <имя предиката>(<терм1>,<терм2>,…,<термn>). Факт представляет собой утверждение о том, что соблюдается некоторое отношение. Факты являются простейшим видом утверждений в логических программах и с их помощью можно выражать произвольные отношения между объектами. Например, student(‘Иванов’). Этот факт означает то, что Иванов является студентом. Другой пример — student(‘Иванов’,’МГГУ’). Этот факт определяет отношение между термами, первым из которых является фамилия студента, а вторым ¾место его учебы. Одноместные предикаты определяют свойства объектов, а n¾местные предикаты определяют отношения между объектами. Совокупность наборов значений переменных, при которых предикат p(x1,x2,…,xn) имеет значение “истина” называется n¾местным отношением. Реляционной схемой (схемой отношения) предиката называется описание роли каждого аргумента предиката. Например, parent(<имя родителя>,<имя ребенка>) ¾ схема предиката parent; person(<имя>,<пол>,<возраст>) ¾ схема предиката person. Совокупность фактов в Пролог¾программе является аналогом реляционной базы данных, а вопросы к программе подобны запросам к базе данных.
Синтаксические правила записи фактов в программе следующие: 1. Имя предиката в утверждении-факте есть символьный атом. 2. После имени предиката записывается список аргументов в круглых скобках. Между именем предиката и открывающей скобкой ‘(‘ не должно быть пробела. 3. Возможны нуль—местные предикаты в фактах, т.е. предикаты, не имеющие аргументов. 4. В качестве аргументов в списке могут быть как переменные, так и константы. 5. В конце факта обязательна точка. Переменные в фактах неявно связываются квантором всеобщности. Это означает, что факт Факты, содержащие переменные, называются универсальными. Примерами универсальных фактов являются следующие утверждения: plus(X,0,X). proiz(X,0,0). horizontal(p(X1,Y),p(X2,Y)).
Вопросы. Вопрос (целевое утверждение) ¾ это средство извлечения информации из логической программы. С помощью вопроса выясняется, истинно ли некоторое утверждение или нет. С точки зрения логики поиск ответа на вопрос состоит в определении того, является ли утверждение (вопрос) логическим следствием программы или нет. Вопрос, включающий в себя конъюнкцию предикатов p1,p2,…,pn , называется конъюнктивным вопросом. Каждый предикат pi называется целью. Конъюнктивный вопрос ¾ это конъюнкция целей. Вопросы, состоящие из одной цели, называются простыми вопросами. Вопрос, не содержащий переменных, называется основным вопросом, а вопрос, включающий переменные, называется неосновным. Переменные в вопросах неявно связаны квантором существования. Это означает, что вопрос Конъюнктивные вопросы могут содержать общие переменные. Переменные называются общими, если они входят в две или более цели конъюнктивного запроса.
Правила. Кроме фактов, логические программы могут содержать правила, условные предложения языка Пролог. Правила ¾ это средство определения новых утверждений, используя уже существующие в Пролог¾программе утверждения (факты и правила). С точки зрения синтаксиса языка Пролог правило ¾это утверждение вида В правилах, так же как и в фактах, переменные неявно связаны квантором всеобщности. Например, утверждение «Точка с координатами (X,Y) принадлежит окружности с радиусом, равным 2, и с центром в точке начала координат, если X2+Y2=4.» на Прологе будет записано следующим образом: circle(X,Y):¾ X^2+X^2=4. В Пролог¾программе может быть записано произвольное число фактов и правил. Набор правил, заголовки которых имеют одно и то же имя и арность, описывает одно и то же отношение и называется процедурой.
|
|||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 419. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |