Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Оператори




Іноді зручно записувати деякі функтори як оператори. Це особлива форма синтаксису, що полегшує читання відповідних структур. Наприклад, арифметичні операції зазвичай записуються як оператори. У арифметичному виразі x+y*z знаки додавання і множення є операторами. Якщо ж цей арифметичний вираз записати в звичайному для структур виді, то воно виглядатиме таким чином: +(x*(y,z)). Важливо відмітити, що оператори не викликають виконання певних арифметичних операцій. Так, в Пролозі 3+4 і 7 означають різні об'єкти. Терм 3+4 — інший спосіб запису терма +(3,4), який є структурою.

необхідно знати, як читати арифметичні вирази, що містять оператори. Це вимагає знання трьох властивостей кожного оператора: його позиції, його пріоритету і його асоціативності.

Оператори, подібні до знаків додавання (+), віднімання (-), множення (*) і ділення (/), записуються між своїми аргументами і називаються тому інфіксними операторами.

Оператори, що записуються перед своїми аргументами, називаються префіксними операторами.

Оператори, записані після своїх аргументів, називаються постфіксними операторами.

Пріоритет оператора визначає, яка операція виконається першою. У Пролозі кожен оператор пов'язаний зі своїм класом пріоритету. Клас пріоритету є цілим числом, величина якого залежить від конкретної версії Прологу. Однак у будь-якій версії оператор з великим пріоритетом має клас пріоритету, ближчий до 1. Якщо класи пріоритетів набувають значень з діапазону від 1 до 255, то оператор з першим класом пріоритету виконується першим, до виконання операторів, що належать (наприклад) до класу 129. У Пролозі оператори множення і ділення належать до більш високого класу пріоритетів, ніж додавання і віднімання, тому терм а-b/c еквівалентний терму -(а,/(b,с)).

Лівоасоціативний оператор повинен мати ліворуч операції однакового або нижчого пріоритету, а справа — операції нижчого пріоритету. Наприклад, усі арифметичні операції (додати, відняти, помножити і поділити) є лівоасоціативними.

 

10. Рівність і встановлення відповідності.

У Пролозі існує особливий предикат рівність, що є інфіксним оператором, і позначається літерою '='. Коли робиться спроба довести узгодженість з базою даних цільового твердження ?— Х = У. (вимовляється X рівне У), Пролог намагається встановити відповідність між X і У; цільове твердження «доказове», якщо така відповідність є. Цю дію можна уявити собі як спробу зробити X і У рівними. Предикат рівності є вбудованим, тобто він вже визначений в Пролог-системі. Предикат рівності працює так, немов визначений наступний факт:

X = X.

Всередині всякого ствердження X завжди рівне X, і ця властивість використана нами при визначенні предиката рівності.

При узгодженні з базою даних мети виду X = У, де X і У — будь-які терми, в яких можуть міститися неконкретизовані змінні, діють наступні правила:

· якщо X є неконкретизованою змінною, а змінна У конкретизована (яке саме значення їй дано, неважливо), то X і У рівні. Крім того, X стане конкретизованою — їй буде дано те ж значення, що і У.

· цілі числа і атоми завжди дорівнюють самим собі.

· дві структури рівні, якщо вони мають один і той же функтом і однакову кількість аргументів, причому всі відповідні аргументи рівні.

Структури можуть бути вкладеними одна в одну на будь-яку глибину. Якщо такі структури перевіряються на рівність, то перевірка займе більше часу, оскільки необхідно перевірити всі структури. Спроба узгодити наступну ціль:

a(b,C,d(e,F,g(h,i,J)))=a(B,c,d(E,f,g(H,I,j))) буде успішною, а змінні В, C, F, Е, J будуть конкретизовані, їм будуть присвоєні відповідно значення b, c, f, e, j.

Що станеться, якщо ми спробуємо прирівняти дві неконкретизованs змінні? Це спеціальний випадок першого з наведених вище правил. Так, мета буде погоджена і дві змінні стануть зчепленими. Якщо дві змінні зчеплені, то при конкретизації однієї з них другій змінній буде автоматично присвоєне те ж саме конкретне значення.

 





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 359 | Нарушение авторских прав


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

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

Студент может не знать в двух случаях: не знал, или забыл. © Неизвестно
==> читать все изречения...

2806 - | 2366 -


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

Ген: 0.01 с.