Определение оператора Определение оператора




НазваниеОпределение оператора Определение оператора
Дата конвертации28.03.2013
Размер445 b.
ТипПрезентации



Определение оператора

  • Определение оператора

    • Понятие структуры
    • Представление структур
    • Формат определения операторов
  • Встроенные операторы

    • Приоритеты, типы
    • Арифметические, логические операторы
  • Примеры определения новых операторов

  • Сопоставления

  • Общие выводы



в Прологе основной формой представления являются структуры.

  • в Прологе основной формой представления являются структуры.

  • Структура со­стоит из функтора (имени структуры) и набора компонент (составных частей структуры).

  • Число аргументов функтора называется арностью.

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

  • Компоненты могут быть также переменными или структурами.



Пример: запишем арифметическое выражение:

  • Пример: запишем арифметическое выражение:

    • 2 * a + b / c ~ +(*(2,a), /(b,c)) % альтернативная запись
    • Вычисления в Прологе:
    • ?- A = 3, B=9, C=3, X is 2*A+B/C.
    • ~
    • ?- A = 3, B=9, C=3, X is +(*(2,A),/(B,C)).
    • A = 3
    • B = 9
    • C = 3
    • X = 9


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

  • Пролог позволяет определить функторы как опе­раторы с нужными свойствами (приоритетом, позицией и ассоциативностью) и использовать привычную форму записи арифметических выражений и предикатов. Для этого используется команда:

  • :-ор(приоритет, тип, функтор).

  • где:

    • Приоритет - задает относительный порядок выполнения оператора
    • Тип – показатель ассоциативности оператора и его позиции.
    • Функтор – символьное обозначение оператора
  • При необходимости программист может ввести свои операторы или переопреде­лить существующие.





Левая ассоциативность:

  • Левая ассоциативность:

  • оператор сложения + определен как op( 500, yfx, +). + обладает левой ассоциативностью. A + B + C + D

  • выполняется как:

  • +(+(+(A,B),C),D)





Пример оператора:

  • Пример оператора:

  • Определив оператор «нравится» как:

  • :-op(600, xfx, likes)

  • можно записать факт того, что Мэри нравится кино

  • likes(mary, cinema).

  • в более естественном виде:

  • mary likes cinema.

  • Т.о., введение новых операторов позволяет записывать правила, факты и т.п. в более привычном (естественном) виде, удобном для восприятия и интерпретации (например, в записи математических формул и теорем).



Множество заранее определенных операций:

  • Множество заранее определенных операций:

  • :-ор(1200, xfx, [:-,-->]).

  • :-op(1200, fx, [:-,?-]).

  • :-op(1100, xfy, ';').

  • :-ор(1050, xfy, ->).

  • :-ор(1000, xfy, ',').

  • :-ор(900, fy, [not, '\+']).

  • :-op(700, xfx, [=, \=, ==, \==, =..]).

  • :-op(700, xfx, [is, =:=, =\=, <, =<, >, >=, @<, @=<, @>, @>=]).

  • :-op(500, yfx, [+, -]).

  • :-op(400, yfx, [*, /, //, mod]).

  • :-op(200, xfx, **).

  • :-op(200, xfy, ^).

  • :-op(200, fy, -).



В Прологе выполняются следующие арифметические операции:

  • В Прологе выполняются следующие арифметические операции:

  • + - сложение

  • - - вычитание

  • * - умножение

  • / - деление

  • mod - остаток от целочисленного деления.

  • // - целочисленное деление

  • ^ - возведение в степень

  • Примеры:

  • f(X, Y, Z):-Z is X*X + Y*Y.

  • ?- f(3,4,X).

  • X=25;



К операциям сравнения относятся следующие предикаты:

  • К операциям сравнения относятся следующие предикаты:

  • =:= - проверка на равенство

  • =\= - проверка на неравенство

  • > - отношение «больше»

  • < - отношение «меньше»

  • =< - отношение «меньше либо равно» (запомнить порядок!)

  • >= - отношение «больше либо равно»

  • Примеры:

  • ?- 2+2=2*2. ?- 2+2=:=2*2. ?- 5>=6.

  • No Yes No



Пролог позволяет формировать сложные логические выражения. Простейшими логическими предикатами являются true (истина)

  • Пролог позволяет формировать сложные логические выражения. Простейшими логическими предикатами являются true (истина)

  • и fail (ложь, неудача)

  • Согласование цели true всегда успешно. Согласование цели fail всегда неудачно.

  • Для конъюнкции целей используется предикат "," (X,Y), а для дизъюнкции - предикат ";" (X;Y)

    • Приоритет у оператора дизъюнкции ";" выше, чем у оператора конъюнкции ",", поэтому лишние скобки в логических выражениях часто можно опускать.
    • ?- true;(fail,fail). ?- true;fail,fail. ?-(true;fail),fail).
    • Yes Yes No
  • Для отрицания используется предикат not(X).

    • Так как запятая служит как для конъюнкции целей, так и для разделения аргументов, требуются дополнительные скобки, если аргумент not не является элементарным выражением.
    • Например, нужно писать not((true,fail)). а не not(true,fail).


Пример 1: Конструкция "если А то В иначе С" на языке Пролог может быть записана как (A,B;not(A),С) или (А,В;С), а конструкция "если А то В" - как (A,B,true)

  • Пример 1: Конструкция "если А то В иначе С" на языке Пролог может быть записана как (A,B;not(A),С) или (А,В;С), а конструкция "если А то В" - как (A,B,true)

  • ?- 5>6,X=1;not(5>6),X=2. ?- 5>4,X=1,true.

  • ?- 5>6,X=1;X=2. X = 1

  • X = 2 Yes

  • Пример 2: Зададим условные операторы и запишем с их помощью определение предиката «max»

  • :-op(1160, fx, if).

  • :-op(1150, xfx, then).

  • :-op(1155, xfx, else).

  • if A then B else C :- A, B; not(A), C.

  • max(X,Y,Z) :- if X>Y then Z is X else Z is Y.

  • ?- max(1,2,X).

  • X = 2



Пример 3: Теорема эквивалентности / правило де-Моргана:

  • Пример 3: Теорема эквивалентности / правило де-Моргана:

  • Условная запись: ~( A & B) <==> ~ A V ~B

  • «Отрицание конъюнкции эквивалентно дизъюнкции отрицаний»

  • Можем запись правило в форме предиката на Прологе:

  • equiv((not(A,B)), (not(A);not(B))).

  • Но удобней представить запись в более естественной матем. форме.

  • Подходящий набор операций для данного назначения:

  • :-ор(800, xfx, <===>).

  • :-op(700, xfy, v).

  • :-op(600, xfy, &).

  • :-op(500, fy, ~).

  • Теперь теорему де Моргана можно записать как следующий факт:

  • ~ ( А & В ) <===> ~А V ~В.



Сопоставление (унификация) является наиболее важной операцией в Прологе. Оно выполняет сравнение двух термов на равенство, при этом неконкретизированные переменные получают значения, при которых термы становятся идентичными. Выполнение сопоставления может производиться либо явно, в теле пра­вила с помощью встроенного предиката X=Y, либо неявно, при сопоставлении цели с фактом или головой правила.

  • Сопоставление (унификация) является наиболее важной операцией в Прологе. Оно выполняет сравнение двух термов на равенство, при этом неконкретизированные переменные получают значения, при которых термы становятся идентичными. Выполнение сопоставления может производиться либо явно, в теле пра­вила с помощью встроенного предиката X=Y, либо неявно, при сопоставлении цели с фактом или головой правила.

  • Сопоставление реализует основные операции обработки данных в логическом про­граммировании

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


Сопоставление выполняется согласно следующим правилам

  • Сопоставление выполняется согласно следующим правилам

    • Неконкретизированная переменная сопоставима с любым объектом и этот объект становится значением переменной («конкретизацией»).
    • Если S переменная, а Т -произвольный объект, то ни сопоставимы и S приписывается значение T.
    • Наоборот, если Т -переменная, а S -произвольный объект, то T приписывается значение S: «T конкретизируется значением S».
  • Числа и атомы сопоставимы только с идентичными числами и атомами.

  • Сопоставление структур:

    • Структуры сопоставимы только, если они имеют одинаковый функтор одинаковое число компонентов, и соответствующие компоненты сопоставимы друг с другом.
    • Если S и Т - структуры, то они сопоставимы, если S и Т имеют одинаковый главный функтор и все их соответствующие компоненты сопоставимы. Результирующая конкретизация определяется сопоставлением компонент.


Конкретизация переменных при сопоставлении.

  • Конкретизация переменных при сопоставлении.

  • ?- data(M, D, 1992)=data(may, 3, Y).

  • M = may

  • D = 3

  • Y = 1992;

  • Сопоставление идентичных атомов.

  • ?- bob=bob.

  • Сопоставление структур.

  • ?- triangle(point(2, 5), A, point(B, 8)) =

  • triangle(X, point(2, 8), point(5, 8)).

  • A = point(2, 8); B = 5; X = point(2, 5);

  • Сопоставление двух структур, содержащих неконкретизированные перемененные.

  • ?- triangle(point(X, 5), point(X, 8), point(5, Z))=

  • triangle(point(2, 5), point(Y, 8), point(5, A)).

  • X = 2; Z = _G777; Y = 2; A = _G777 ;



Итак, в Прологе операция X=Y кроме сравнения выполняет сопоставление двух термов, с конкретизацией переменных.

  • Итак, в Прологе операция X=Y кроме сравнения выполняет сопоставление двух термов, с конкретизацией переменных.

  • Также в Прологе существует противоположный предикат X\=Y, который истинен только в случае, если терм X не сопоставим с термом Y.

  • При использовании этого предиката в программе рекомендуется, чтобы все переменные в термах X и Y на момент согласования цели были конкретизированными, иначе результат будет зависеть от порядка целей в программе

  • Пример: зависимость результата от порядка конкретизации.

  • ?- X=a, Y=b, X\=Y. ?- X=a, X\=Y, Y=b.

  • Yes No



Иногда требуется проверить точное равенство двух термов, включая соответствие расположения и идентичность неконкретизированных переменных. Это осуществляет­ся с помощью встроенного предиката равенства (идентичности) X==Y.

  • Иногда требуется проверить точное равенство двух термов, включая соответствие расположения и идентичность неконкретизированных переменных. Это осуществляет­ся с помощью встроенного предиката равенства (идентичности) X==Y.

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

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

  • Пример: Проверка двух термов на равенство, без конкретизации.

  • ?- f(2,3)==f(2,X).

  • No

  • Противоположный предикат X\==Y истинен только в случае, если терм X не равен терму Y

  • Пример: Проверка двух термов на равенство, без конкретизации.

  • ?- f(2,3)\==f(2,3).

  • No



На основании изложенного можно сделать заключения:

  • На основании изложенного можно сделать заключения:

  • Удобство программ для чтения часто можно повысить с помощью записи операторной форме.

  • Операции могут быть инфиксными, префиксными или постфиксными.

  • Со знаками операций не связаны какие-либо операции над данными, если не считать некоторых частных случаев. Определения операций не определяют конкретные действия; они лишь вводят новые обозначения.

    • Знаки операций (функторы) применяются для соединения компонентов структур.
  • Программист может определять свои собственные операции.

  • В определении каждой операции необходимо указать:

    • приоритет (число в диапазоне от 1 до 1200),
    • тип (символьное представление отношения функтора и операндов),
    • знак (может состоять из одного или нескольких символов).
  • Для сравнения двух термов на равенство выполняется операция сопоставления, выполняющая конкретизацию их переменных.



Похожие:

Определение оператора Определение оператора iconЭлектронные деньги
Баланс электронного кошелька пополняется внесением на счет оператора наличных или безналичных средства
Определение оператора Определение оператора iconОпределение Определение 1
Решение, полученное из общего решения при конкретных значениях постоянных, называется
Определение оператора Определение оператора iconОпределение: Определение
...
Определение оператора Определение оператора iconРоль подсказки-оператора в решении инсайтных задач Лифанова Светлана
...
Определение оператора Определение оператора iconОпределение oss определение oss
Компании, эксплуатирующие сети связи, всерьез задумались о создании систем эксплуатации
Определение оператора Определение оператора iconОпределение стр. 3 Определение стр. 3
Стволовыми называют клетки, не имеющие специализации и способные делиться и развиться в любой вид ткани
Определение оператора Определение оператора iconОпределение №1 Определение №1
Правила и процедуры выработки политических решений в процессе взаимодействия субъектов, предъявляющих спрос на эти решения, и субъектов,...
Определение оператора Определение оператора icon1. Определение потребности Определение потребности
В наше время невероятно развилась мода на вещи «ручной работы», на уникальные подарки, элементы интерьера и одежды
Определение оператора Определение оператора iconЧисло впервые выявленных больных с сахарным диабетом в рк (на 100 000 населения)
Мз рк о создании диабетических информационных аналитическх центров с выделением компьютеров, 1 ставки врача информационного центра,...
Определение оператора Определение оператора icon1. Определение слова Определение слова
Владелец предприятия, фирмы, а также вообще деятель в экономической, финансовой сфере. Ассоциация предпринимателей. Предприимчивый...
Разместите кнопку на своём сайте:
hnu.docdat.com


База данных защищена авторским правом ©hnu.docdat.com 2012
обратиться к администрации
hnu.docdat.com
Главная страница