КАТЕГОРИИ: Архитектура-(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; Просмотров: 254; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |