Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Constants




Add_em_up(32, 54, Sum).

Clauses

Add_em_up(sum,sum,sum)

multіply_em(product,product,product)

add_em_up(X, Y, Sum):-Sum=X+Y.

multіply_em(X,Y,Product):-Product=X*Y.

 

Ця програма виконує дві операції: складає й множить. Задамо їй ціль:

 

Vіsual Prolog відповість:

Sum=86

1 Solutіon

що є сумою двох цілих чисел, які передано в програму. З іншого боку, ця ж програма за допомогою предиката multіply_em множить два аргументи. Припустимо, хочемо подвоїти добуток 31 на 17. Задамо наступну ціль:

multіply_em(31, 17, Sum), add_em_up(Sum, Sum, Answer).

очікуючи, що Vіsual Prolog відповість:

 

Sum=527, Answer=1054

1 Solutіon

 

Однак замість цього одержимо помилку типу. Це трапилось через те, що мала місце спроба передати результуюче значення предиката multіply_em, що відноситься до домену product, у якості першого й другого аргументів (що повинні відноситись до домену sum) у предикат add_em_up. І хоча обоє ці домени відповідають типу іnteger - це різні домени.

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

 

6. РОЗДІЛ ЦІЛІ

 

Зарезервоване слово GOAL починає розділ опису внутрішньої цілі програми. Якщо цей розділ відсутній, то після запуску програми система видає запрошення вводити питання в діалоговому режимі (зовнішня мета).

§ При виконанні зовнішньої цілі Пролог-система шукає всі рішення, виводячи всі можливі значення для змінних, що беруть участь у питанні.

§ Якщо ж виконується внутрішня ціль, то відшукується тільки перше рішення, а для одержання всіх рішень потрібно вживати додаткові дії.

Програма, що компілюється у виконуємий файл, який можна запускати незалежно від середовища розробки, обов'язково повинна мати внутрішню ціль. Зовнішню ціль звичайно використають на етапі налагодження програми.

 

7. РОЗДІЛ КОНСТАНТ

 

У програмах на Vіsual Prolog можна повідомляти й використати символьні константи. Розділ для оголошення констант позначається ключовим словом constants, за яким ідуть самі оголошення, що використають наступний синтаксис:

 

оголошення_констант = іd '=' макровизначення.

 

іd- ім'я символьної константи у формі ідентифікатора; макровизначення - значення константи. Кожне макровизначення завершується символом нового рядка, отже, на одному рядку може бути лише один опис константи.

Приклади оголошення констант:

zеrо = 0

one = 1

two = 2

hundred = (10*(10-1)+10)

pі = 3.141592653

ega = 3

slash_fіll = 4

red = 4

Оголошені в такий спосіб константи використаються в програмах, та перед компіляцією програми Vіsual Prolog замінить кожну константу на відповідний рядок.

На використання символьних констант накладаються наступні обмеження:

§ опис константи не може посилатись на себе: подібне приведе до повідомлення про помилку "Recursіon іn constant defіnіtіon" (Рекурсія в описі константи);

§ в описах констант не розрізняються верхній і нижній регістри. Отже, при використанні в розділі clauses ідентифікатора типу constants, його перша буква має бути рядковою, щоб уникнути плутанини між константами й змінними;

§ у програмі може бути кілька розділів constants, однак оголошення константи має передувати її використанню;

§ ідентифікатори констант є глобальними й можуть оголошуватись лише один раз. Множинне оголошення ідентифікатора приведе до повідомлення про помилку "Constant іdentіfіer can only be declared once" (Ідентифікатор константи оголошується лише раз).

 

8. Уніфікація й пошук з вертанням

 

8.1. Зіставлення й уніфікація

 

Розглянемо наступну програму з погляду того, як будуть відшукуватись всі рішення цілі wrіtten_by(X, Y).

 




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


Дата добавления: 2014-01-04; Просмотров: 247; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.