Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Отсечение и способы его использ-я.

Структура логической программы.

1. Директива компилятора (необязат-й раздел)

2. CONSTANTS- раздел описания констант. имя константы должно быть идентифик-м, тоесть может сост-ть из англ-х букв, цифр и не может нач-ся с цифры. <имя конст>=<знач-е>

3. DOMAINS- раздел опис-я доменов. явл-ся аналогом раздела опис-я типов данных в императивных яз-х прогр-я. в прологе имеются стандартные домены.

4. DATABASE- раздел опис-я предикатов внутренней?

5. PREDICATES- разд. опис-я предикатов. аналог в традиц-х языках прогр-я- раздел опис-я проц-р и функций.

6. CLAUSES- разд. опис-я предлож-й. можно считать осн-м разд-м прогр-мы, так как в нем сод-ся факты и правила,реализ-е ползоват-е предикаты. все пред-ты,кот-е использ-ся в этом разделе и не явл-ся стандартными, должны быт описаны в разделе описания пред-в.

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

7. GOAL- разд опис-я внутр цели. если гоал присутствует прогр-ме, то предполаг-ся,что в прогр вычисл-ся внутр-яя цель, тоесть запрос формируется непосредственно в тексте прогр.

 

Логические переменные, подст-ки и типы.

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

переменная начинается с прописной буквы. ПРИМЕР:

нравится(василий,ирина).

?-нравится(ирина,х)

х=василий.

 

Описание доменов и предикатов.

DOMAINS- раздел опис-я доменов. явл-ся аналогом раздела опис-я типов данных в императивных яз-х прогр-я. в прологе имеются стандартные домены.пример:

domains

i=integer

если необходимо описать список определенного типа,около имени домена ставится *

 

PREDICATES- разд. опис-я предикатов. аналог в традиц-х языках прогр-я- раздел опис-я проц-р и функций.пример:

predicates

mother(string, string).

в прологе имеются стандартные встроенные предикаты, которые не нужно опис-ть в этом разделе

 

Использование списков в языке пролог.

[‘a’,’b’,’c’]- список с тремя элем-ми типа char. []-пустой сп-к. для того,чтобы предикат исп-ся в качестве аргумента сп-к соотв-го типа необходимо после описания типа данных указать *

domains

i=integer

predicates

s(i,i) где i- список.

Список предст. собой структуру данных, которую можно определить след-м образом: [head/tail]

[1,2,3]=[1[2,3]]=[1/2/[3]]

для того, чтобы орг-ть работу сп-ка необх-мо построить рекурс-ю процедуру, при этом надо задать базис рекурсии(пр-ло или факт,определяющий, что нужно делат с пустым сп-ком), а также рекурсивное правило, установившее порядок перехода от обр-ки всего списка к обр-ке хвоста.ПРИМЕР: создать предикат, позв-й вычислить длину списка(кол-во элементов). восп-ся след-ми фактами:1)в пустом списке кол-во эл-в-0. 2)кол-во элем-в списка, предст-го в виде объед-я первого эл-та и хвоста равно кол-ву эл-в хвоста, увел-му на 1

length([]-список,0)

length(l_/T],l):-length(T,l_T),

l=l_T+1/

goal

length(1[1,2,3],x).

length([x]) x=0

1)T:=[2,3]

2)T:=[3]

3)T:=[]

 

Арифметика в языке лог. прогр-я

пролог-система имеет в кач-ве встроенных ф-ций базовые арифм. операции: +,-,*…, так же <>,>,<,=…

реализация:

domains: i=integer, r=real.

predicates: add(i,i,i) sub(i,i,i) mul(i,i,i) div(i,i,i) fadd(r,r,r) fsub(r,r,r) fmul(r,r,r) fdiv(r,r,r)

clauses: add(x,y,z):-z=x+y. mul(x,y,z):-z=x*y. fadd(x,y,z):-z=x+y. …дальше по аналогии.

goal

add(3,2,z)

 

Отсечение и способы его использ-я.

Анонимная перем-я исп-ся тогда,когда конкретное значение перем-й несущественно для данного утвержд-я. обозн-ся «_». ПРИМЕР: создать предикат, кот будет нах-ть максимум из двух чисел.

вариант такой шлачный без отсечения фу:

clauses: max(x,y,x):-x>y max(x,y,y):-x<=y

goal:max(3,2,z) max(5,6,z)

Полученная процедура не явл-ся оптимальной,поскольку после того,как проверено первое условие,проверка второго условия избыточна. поэтому к нам спешит на помощь товарищ «отсечение». обозначается «!»

данный предикат всегда заверш-ся успешно. после того,как до него дошла очередь,он устанавл-т барьер, который не дает «откатиться» назад, чтобы выбрать альтернат-е решение для уже конкретизированных подцелей,тех,которые расположены левее отсечения. на цели,расп-е правее, отсечение прекращает выполн-е всех предложений процедуры,распол-х после предл-я,в кот нах-ся отсечение.

а вот и задачка с использованием отсечения:

clauses: max(x,y,x):-x>y,!. max(_,y,y):-x<=y.

goal:max(3,2,z) max(5,6,z)

в первом случае вып-ся только первое предл-е,во втором случае первое предл-е не выполнено,следоват-но переходит ко второму.

ЗЕЛЕНОЕ отсечение в том случае, если его убрать из программы прогр полностью сохранит свою функцион-ть и рез-т выполн-я не изменится.

КРАСНОЕ в обратном случае: программа вып-ся с ошибкой

 

 



<== предыдущая лекция | следующая лекция ==>
Подготовка пациента к проведению инфузионной терапии. | Бухгалтерский финансовый учет в информационной системе управления экономикой предприятия
Поделиться с друзьями:


Дата добавления: 2017-02-25; Мы поможем в написании ваших работ!; просмотров: 337 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Сложнее всего начать действовать, все остальное зависит только от упорства. © Амелия Эрхарт
==> читать все изречения...

2160 - | 2048 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.