Учебная работа. Реферат: Язык программирования Пролог 2

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (8 оценок, среднее: 4,75 из 5)
Загрузка...
Контрольные рефераты

Учебная работа. Реферат: Язык программирования Пролог 2

Лабораторная работа №1.

Цель работы: Изучить главные конструкции языка программирования Пролог для решения задач вычисления функций в экспертных системах.

1. Теоретические сведения

Пролог – это один из языков программирования, который обширно употребляется для сотворения баз познаний и экспертных систем. Базовыми качествами языка Пролог являются:

1) механизм вывода с поиском и возвратом;

2) интегрированный механизм сравнения с прототипом;

3) обычная и просто дифференцируемая структура данных;

4) отсутствие указателей, операторов присваивания и перехода;

5) естественность рекурсии.

Пролог базируется на сочетании обозначенных параметров, а удобство его – на естественности его принципов для логических задач, сводящихся к рекурсии.

Программки на Прологе состоит из фактов и правил для получения остальных фактов и ответов на вопросцы. Факты по определению числятся доказанными (настоящими).

Определенному применению логической программки соответствует понятие запроса (цели). Достигнуть цели – значит показать, что она логически следует из фактов и правил программки. Если вопросец содержит переменные, то система обязана отыскать к тому же определенные объекты, которые будучи подставленными заместо переменных, обеспечат достижение цели.

В алфавит языка входят последующие знаки:

1) строчные и строчные буковкы латинского алфавита (A-Z, a-z); регистр букв программки влияет на работу программки;

2) числа (0-9);

3) спецсимволы: ! @ # $ ( ) & * — + / < > ; , ? . _ » ‘

1.2 структура программки

Пролог – программка содержит в себе последующие разделы:

constants – задаются константы;

domains — имена и структуры объектов, применяемых в задачке;

predicates – наименования отношений меж объектами;

clauses – факты и правила, описывающие эти дела;

goal – описание цели решения.

Для обозначения логических связок для конъюнкции – and, для дизъюнкции – or, следование обозначаются конструкцией «:-» (двоеточие и минус) либо слово if. Комменты обрамляются комбинациями /*…*/.

1.3 Домены

Типы данных в Прологе именуют доменами. домен охарактеризовывает огромное количество значений, которые может принимать переменная предиката в процессе выполнения программки. Связывание домена с определенным аргументом (местом) предиката осуществляется в секции predicates. Сами переменные в объявлении не нуждаются. Домены разделяются на обыкновенные и структурированные, обычные и неординарные. К обычным относятся :-symbol – символьная константа (имя), имеет две формы записи:

1) последовательность букв, цифр и символов препинания, которая начинается со строчной буковкы;

2) последовательность знаков, заключенная в двойные кавычки (примеры: «apple», «person», «Студент Иванов С.В.» ) ;

-string – строчка знаков (неважно какая последовательность знаков, заключенная в двойные кавычки).

-char – отдельный знак меж апострофами.

-integer – целое число (в спектре –32768 до 32767).

-real – действительное число (пример: -34.567, 0.654, 9.76e+3).

Переменная с именованием <<_>> (анонимная) употребляется, если идет о всех книжках, написанных неким <<переменным>> создателем, при этом пропущенные наименования, издательство, пространство и год рождения роли не играют.

Объявление новейших доменов с исползованием обычных имеет вид

<имя> = <имя_стандартного_домена>

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

domains

a=integer

fax=symbol

r, dup=real

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

domains

articles=book(title,author)

author=author(init,fam)

title, author, fam=symbol

init=string

1.4 Предикаты

Раздел predicates должен содержать полный список предикатов юзера, используемых в программке. Описание предиката включает <имя предиката> и <перечень доменов его аргументов>:

<имя предиката> (<d1>,<d2>,…<dN>), где <d1>,<d2>,…<dN>- имена обычных доменов, объявленных в разделе domains.

Предикаты употребляются для представления как данных, так и правил их обработки. Примеры:

Predicates

Add(integer,integer,real)

lk (fr)

1.5 Утверждения

В разделе clauses описываются утверждения относительно предикатов. Отрицание предиката pr задаётся в форме not(pr) и допустимо лишь для правой части правила. Существует два типа утверждений: факты и правила. Факт – это имя предиката с заключённым в скобки перечнем аргументов. Факты употребляются для констатации того, что выполнено некое отношение меж объектами. Обычно они записываются относительно предметных констант Но в фактах могут употребляться и переменные, что дозволяет укрупнять факты, понижая их общее число и трудоёмкость их поиска в базе данных.

к примеру, факт mult(x,0,0) соединяет воединыжды все факты относительно произведения случайного числа на нуль.

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

Пример интерпретации: правило человек (х):- родитель (X,Y), человек (Y). Читается << Всякий Х отпрыск при условии, что предки Х является Y и объект Y – человек >>. В процессе вычислений заместо переменной быть может подставлен иной объект. В этом случае молвят, что переменная конкретизирована. Область деяния переменной ограничивается утверждением, и передавать информацию из 1-го утверждения в другое через вольные переменные недозволено. В Прологе отсутствуют локальные переменные для сохранения промежных результатов, потому предикаты Пролога дополняются << аргументами-накопителями>>.

1.6 Выражения и обычные предикаты

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

Таблица 1. Обычные функции


Обозначение в арифметике


Обозначение в Прологе



1


|x|


абс(x)



2


ex


exp(x)



3


sin x


sin(x)



4


cos x


cos(x)



5


tg x


tan(x)



6


arctg x


artan(x)



7


ln x


ln(x)



8


log x


log(x)



9



sqrt(x)



10


xz


exp(z*ln(x))




1.7 Предикаты ввода/вывода

Ввод осуществляется при помощи предикатов:

readchar(<имя переменной 1>, < имя переменной 2>, …) – ввод символьных переменных;

readint(<перечень переменных>) – ввод целочисленных переменных;

readreal(<перечень переменных>) – ввод вещественных переменных.

Вывод осуществляется предикатом write(<перечень вывода>)

Предикат nl обеспечивает переход на новейшую строчку.

1.8 Цель

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

Пример цели:

goal

synonym(brave, x),

write(«A synonym for ‘brave’ is»),nl,

write(» ‘ «, x,» ‘ «),nl

2. Задание к работе

Вычислить функцию, заданную согласно варианта (см. таблицу 1).

Написать и отладить программку.

:

Таблица 1

Вариант


Вид выражения


Начальные данные



1


2


3



1



x=1,1



2



x=0,5



3



x=1,2



4



x=1,05



5



х=1,1



6



х=1,33



7



х=1,21



8



х=1,08



9



х=3,9



10



х=1,37



11



х=1,05



12



х=1,022



13



x=1,2



14



x=1,8



15



x=1,01



16



x=1,77



17



X=1



18




x=1.08

19



x=1.03



20



x=1.19



21



x=1.27



22



x=1.21



23



x=1.37



24



x=1.04



25



x=1.06




3. Контрольные вопросцы

1) Главные секции Пролог-программы.

2) Какие обычные домены имеются в Прологе.

3) Обычные предикаты ввода/вывода. Описание и характеристики.

4) Главные обычные функции.

5) Алфавит языка Пролог.

]]>