КАТЕГОРИИ: Архитектура-(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) |
Арифметика в Пролог
Арифметичні операції здійснюються за допомогою спеціальних вбудованих предикатів. У системі Пролог-Д для виконання арифметичних дій передбачений один вбудований арифметичний предикат: УМНОЖЕНИЕ(Арг1,Арг2,АргЗ,Арг4). Даний предикат передбачає реалізацію такої формули: Арг1*Арг2+АргЗ=Арг4. Предикат передбачає оборотність аргументів і реалізує арифметичні операції в області цілих чисел. Також за допомогою даного предиката можна описати будь-які арифметичні операції: СЛОЖЕНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(1,Х,У,Z); ВЫЧИТАНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(1,Х,Z,У); УМНОЖЕНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(Х,У,0,Z); ДЕЛЕНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(У,Z,0,Х); Поряд з арифметичним предикатом існують два предикати БОЛЬШЕ й НЕ. Вбудований предикат БОЛЬШЕ(Арг1,Арг2) призначений для порівняння двох цілих чисел або змінних. Він має два аргументи: цілих або змінних, конкретизованих цілими. Обидва аргументи до моменту виконання повинні бути визначені. Якщо ці вимоги не виконані, то з'явиться повідомлення про помилку: "Функція не може бути виконана.". Предикат виконаний, якщо Арг1 > Арг2, інакше - не виконаний. Незважаючи на те, що предикат БОЛЬШЕ один, його достатньо для опису всіх можливих предикатів для порівняння числової інформації: дорівнює - РАВНО; менше -МЕНЬШЕ; менше і дорівнює - МИР і так далі. Це показує база знань, наведена нижче: РАВНО(Х,Х); МЕНЬШЕ(Х,У)<-БОЛЬШЕ(У,Х); МИР(Х,У)<-НЕ(БОЛЬШЕ(Х,У)); В останньому реченні використаний вбудований предикат НЕ, його синтаксис: НЕ(Арг1); Цей вбудований предикат має один аргумент, він обов'язково повинен бути предикатом. Предикат НЕ виконаний тоді й тільки тоді, коли предикат-аргумент не виконаний. 36. Вбудовані предикати в Пролог
У системі Пролог-Д використав. такі предикати: УМНОЖЕНИЕ (Арг1,Арг2,АргЗ,Арг4). Даний предикат передбачає реалізацію такої формули:Арг1*Арг2+АргЗ= Арг4.Також за допомогою даного предиката можна описати будь-які арифметичні операції: СЛОЖЕНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(1,Х,У,Z); ВЫЧИТАНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(1,Х,Z,У); УМНОЖЕНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(Х,У,0,Z); ДЕЛЕНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(У,Z,0,Х); Поряд з арифметичним предикатом існують два предикати БОЛЬШЕ й НЕ. Вбудований предикат БОЛЬШЕ(Арг1,Арг2) призначений для порівняння двох цілих чисел або змінних. Він має два аргументи: цілих або змінних, конкретизованих цілими. Обидва аргументи до моменту виконання повинні бути визначені. Якщо ці вимоги не виконані, то з'явиться повідомлення про помилку. Предикат виконаний, якщо Арг1 > Арг2, інакше - не виконаний. Незважаючи на те, що предикат БОЛЬШЕ один, його достатньо для опису всіх можливих предикатів для порівняння числової інформації: дорівнює - РАВНО; менше -МЕНЬШЕ; менше і дорівнює - МИР і так далі. Це показує база знань, наведена нижче: РАВНО(Х,Х); МЕНЬШЕ(Х,У)<-БОЛЬШЕ(У,Х); МИР(Х,У)<-НЕ(БОЛЬШЕ(Х,У)); В останньому реченні використаний вбудований предикат НЕ, його синтаксис: НЕ(Арг1); Цей вбудований предикат має один аргумент, він обов'язково повинен бути предикатом. Предикат НЕ виконаний тоді й тільки тоді, коли предикат-аргумент не виконаний. Останній вбудований предикат - це предикат "ОТСЕЧЕНИЕ", призначений для керування логічним виводом. Цей предикат буде потрібний для розв'язання наступних проблем: 1. Обмеження кількості знайдених розв'язків. 2. Знаходження деякого особливого розв'язку завдання. 3. Обмеження обсягу пошуку, з метою підвищення ефективності роботи комп'ютера. Предикат " ОТСЕЧЕНИЕ " позначається знаком вигуку-(!). Необхідно відзначити, що це традиційне позначення відсікання в системах логічного програмування. Якщо даний предикат використати у якості цілі в реченні, то отриманий при цьому ефект можна проілюструвати дверима, через які можна пройти тільки зліва направо, але не можна повернутися назад через ці двері. Роль дверей виконує символ!.
Як відомо, система Пролог-Д буде намагатися виконувати цілі в реченні у порядку перегляду зліва направо, починаючи від символу <-, від першої до останньої цілі. Якщо яка-небудь ціль виявляється не виконаною, то здійснюється повернення й робиться спроба знайти альтернативні розв'язки. Відсікання обмежує можливість пошуку альтернатив з того моменту, як була переглянута ціль, що позначена символом!. Із цієї причини, якщо не виконані цілі А,Б,В, повернення для знаходження альтернативних рішень у реченні приклад <- А,Б,В,!,Г,Д,Е; можливий, а, якщо не виконані цілі Г,Д або Е, те вже неможливо. Необхідно відзначити важливість цього предиката, особливо при описі завдань, що не допускають множинні розв'язки.
37. Рекурсія в Пролог Існує величезна кількість завдань, у яких відносини між об'єктами можна визначити тільки використовуючи самі обумовлені співвідношення. При цьому отримуємо правила, що називають рекурсивними. Застосування рекурсії для опису завдань при роботі із системами логічного програмування є широко розповсюдженим прийомом. Рекурсію проілюструємо декількома прикладами побудови програм, як обчислювальних, так і логічних. Перший - приклад обчислення найбільшого загального дільника (НОД) двох чисел. Для опису обчислення НОД використаються наступні міркування. По-перше, якщо а=b, то с=а=b; По-друге, якщо а>b, те необхідно обчислити НОД для чисел b й а-b; По-третє, якщо b>а, те необхідно обчислити НОД для чисел а й b-а. Ці три твердження можуть бути записані на Пролог-Д: нод(а,а,а); нод(а,b,с)<-БОЛЬШЕ(а,b), ВЫЧИТАНИЕ (а,b,d),нод(b,d,с); нод(а,b,с)<-БОЛЬШЕ(b,а), ВЫЧИТАНИЕ (b,а,d),нод(а,d,с); ВЫЧИТАНИЕ (X,У,Z)<-УМНОЖЕНИЕ(1,X,Z,Y); Якщо до цієї бази знань поставити запитання:?нод(10,15,х); відповідь системи Пролог-Д: х=5 ІНШИХ РІШЕНЬ НЕМАЄ. Предикат нод є оберненим. Другий приклад - про обчислення елементів послідовності: 0, 1,2, З, 5, 8, 13, 21, 34, 55, 89, 144,..., відомої як послідовність Фібоначі. Кожен елемент її визначається наступними правилами: fo=0, fi=l, fn =fn-l+fn-2, При П>1 Перша формула відповідає твердженню про те, що значення нульового елемента послідовності дорівнює нулю. Це можна записати у вигляді факту: Фиб(0,0);. Другий рядок відповідає твердженню: перший елемент дорівнює 1. На Пролог-Д це можна записати так: Фиб(1,1);. Третій рядок являє собою запис рекурсивного співвідношення:
Фиб(N,Х)<-БОЛЬШЕ(N, 1), ВЫЧИТАНИЕ(N, 1,М), BЫЧИTAHИE(N,2,K),Фиб(М,У), Фиб(К,Z),ДОДАВАННЯ(У,Z,Х); Дані речення складають базу даних мовою Пролог-Д, що дозволяє обчислювати значення елементів послідовності. У відповідь на питання: ?Фиб(10,Х); відповідь системи Пролог-Д: х=55 ІНШИХ РІШЕНЬ НЕМАЄ При роботі з базою знань для обчислення N-ro числа Фібоначі необхідно всього лише N рекурсивних звертань. При обчисленні елементів послідовності Фібоначі може з'являтися нескінченна петля при виконанні програми. Використання рекурсивних визначень дає можливість записати базу знань більш лаконічно. Рекурсія може бути використана й для створення графічного об'єкта, що динамічно змінюється. Для цього, на тому самому місці послідовно фіксується образ об'єкта, так, що його кольори поперемінно змінюються від кольору фона до кольору, обумовленого в базі знань. 38. Графічні можливості системи Пролог У системі Пролог-Д визначений набір графічних примітивів, що відображають графічні об'єкти й побудовані таким чином, що з погляду синтаксису кожний з них може бути тільки ціллю й приймає значення "істина"(викон.), якщо на екрані з'являється графічне зображення об'єкта. При записі в правилі декількох графічних примітивів і виконанні даного правила на екрані з'являється об'єднання графічних образів у тій послідовності, як вони описані в правилі. У всіх графічних вбудованих предикатах аргументи повинні бути цілими або змінними, конкретизованими цілими, або не конкретизованими змінними. Якщо ця вимога не виконана, то з'явиться повідомлення про помилку. У предикатах ТОЧКА, ЛИНИЯ, ОКРУЖНОСТЬ, ЗАКРАСКА останній параметр задає колір. Якщо на цьому місці стоїть не конкретизована змінна, то виводиться повідомлення про помилку. У системі Пролог-Д передбачені наступні вбудовані графічні предикати: 1. ТОЧКА. Синтаксис: ТОЧКА(Арг1,Арг2,АргЗ) У будований предикат ТОЧКА має три аргументи. Нижче наведені результати виконання залежно від типу аргументу. ТОЧКА(ц1,ц2,цЗ) Установити крапку з координатами (ц1,ц2) і кольором цЗ; ТОЧКА(ц1,ц2,ПЗ) ПЗ:= колір_крапки(ц1,ц2); ТОЧКА(ц1,П2,цЗ) Малювати лінію з початковою крапкою (ц1,0), кінцевою - (ц1,211) кольором цЗ; ТОЧКА(П1,ц2,цЗ) Малювати лінію з початковою крапкою (0,ц2), кінцевою - (255,ц2) кольором цЗ; ТОЧКА(П1,П2,цЗ) Заповнити екран кольором цЗ. У цих п'ятьох випадках предикат істиний, інакше - виконання програми припиняється й виводиться повідомлення про помилку.
Дата добавления: 2015-01-03; Просмотров: 542; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |