- •1. Характеристика програмних та інтелектуальних систем
- •2. Експертні системи, як клас інтелектуальних
- •3. Особливості та інсталяція ms sql Server 2005 Express Edition.
- •Субд ms sql Server 2005/2008. Переваги та недоліки. Огляд версій та редакцій
- •4. Переваги та недоліки
- •4.1. Переваги
- •4.1.1. Незалежність від конкретної субд
- •4.1.2. Наявність стандартів
- •4.1.3. Декларативність
- •4.2. Недоліки
- •4.2.1. Невідповідність реляційної моделі даних
- •4.2.2. Складність
- •4.2.3. Відхилення від стандартів
- •4.2.4. Складність роботи з ієрархічними структурами
- •Загальна інформація про утиліти
- •10.Створення бд засобами sql Management Studio
- •11. Зміна властивостей бд засобами sql Management Studio
- •12. Перейменування і видалення бд засобами sql Management Studio
- •13. Категорії команд sql: ddl, dml, dcl
- •20,Оператор модифікації таблиць, синтаксис
- •21.Оператор видалення таблиць, синтаксис
- •22.Діаграми бази даних
- •23.Пакетні запити та сценарії
- •24.Типи даних в ms sql Server 2005
- •25.Поняття домену і способи їх створення
- •26.Створення, модифікація та видалення домену засобами ms sql Server
- •27.Створення домену за допомогою sql запитів
- •28.Створення домену за допомогою зберігаємих процедур
- •29.Історія створення Пролог
- •30.Візуальне середовище розробки додатків Visual Prolog
- •31.Створення нового проекту Visual Prolog
- •32.Основні поняття системи Пролог (база знань, терм, формула, речення, предикат, правило, факт). Навести приклади.
- •34.Побудова бази знань. Факти й правила
- •Арифметика в Пролог
- •Вбудовані предикати в Пролог
- •Рекурсія в Пролог
- •Графічні можливості системи Пролог
- •39.Обробка списків в Пролог
- •40.Прості типи даних системи Пролог
- •41.Структуровані типи даних системи Пролог
Рекурсія в Пролог
Існує величезна кількість завдань, у яких відносини між об'єктами можна визначити тільки використовуючи самі обумовлені співвідношення. При цьому отримуємо правила, що називають рекурсивними. Застосування рекурсії для опису завдань при роботі із системами логічного програмування є широко розповсюдженим прийомом. Рекурсію проілюструємо декількома прикладами побудови програм, як обчислювальних, так і логічних. Перший - приклад обчислення найбільшого загального дільника (НОД) двох чисел. Для опису обчислення НОД використаються наступні міркування. По-перше, якщо а=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 рекурсивних звертань. При обчисленні елементів послідовності Фібоначі може з'являтися нескінченна петля при виконанні програми.
Використання рекурсивних визначень дає можливість записати базу знань більш лаконічно. Рекурсія може бути використана й для створення графічного об'єкта, що динамічно змінюється. Для цього, на тому самому місці послідовно фіксується образ об'єкта, так, що його кольори поперемінно змінюються від кольору фона до кольору, обумовленого в базі знань.
Графічні можливості системи Пролог
У системі Пролог-Д визначений набір графічних примітивів, що відображають графічні об'єкти й побудовані таким чином, що з погляду синтаксису кожний з них може бути тільки ціллю й приймає значення "істина"(викон.), якщо на екрані з'являється графічне зображення об'єкта. При записі в правилі декількох графічних примітивів і виконанні даного правила на екрані з'являється об'єднання графічних образів у тій послідовності, як вони описані в правилі. У всіх графічних вбудованих предикатах аргументи повинні бути цілими або змінними, конкретизованими цілими, або не конкретизованими змінними. Якщо ця вимога не виконана, то з'явиться повідомлення про помилку.
У предикатах ТОЧКА, ЛИНИЯ, ОКРУЖНОСТЬ, ЗАКРАСКА останній параметр задає колір. Якщо на цьому місці стоїть не конкретизована змінна, то виводиться повідомлення про помилку.
У системі Пролог-Д передбачені наступні вбудовані графічні предикати:
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,цЗ) Заповнити екран кольором цЗ.
У цих п'ятьох випадках предикат істиний, інакше - виконання програми припиняється й виводиться повідомлення про помилку.
2. ЛИНИЯ
Синтаксис: ЛИНИЯ(Арг1 ,Арг2,АргЗ,Арг4,Арг5).
Цей у будований предикат має п'ять аргументів. П'ятий аргумент завжди повинен бути цілим, арифметичним виразом або змінним, конкретизованим цілим. Результати виконання наведені нижче:
ЛИНИЯ(ц1,ц2,цЗ,ц4,ц) Малювати лінію з початковою крапкою (ц1,ц2), кінцевою - (цЗ,ц4), кольорами ц
ЛИНИЯ(ц1,ц2,цЗ,П4,ц) Малювати зафарбований трикутник з вершинами (ц1,ц2), (ц3,0), (цЗ,211) і кольорами ц;
ЛИНИЯ(ц1,ц2,ПЗ,ц4,ц) Малювати зафарбований трикутник з вершинами (ц1,ц2), (0,ц4), (255,ц4) і кольорами ц;
ЛИНИЯ(ц1,П2,цЗ,ц4,ц) Малювати зафарбований трикутник з вершинами (ц1,0), (ц1,211), (цЗ,ц4) і кольорами ц;
ЛИНИЯ(П1,ц2,цЗ,ц4,ц) Малювати зафарбований трикутник з вершинами (0,ц2), (255,цЗ), (цЗ,ц4) і кольорами ц;
ЛИНИЯ(П1,П2,цЗ,ц4,ц)| ЛИНИЯ(ц1,ц2,ПЗ,П4,ц)| ЛИНИЯ(ц1,П2,ПЗ,П4,ц)| ЛИНИЯ(П1,ц2,ПЗ,П4,ц) - Заповнення екрана кольорами ц ЛИНИЯ(П1,П2,цЗ,П4,ц) | ЛИНИЯ(П1,П2,ПЗ,ц4,ц) | ЛИНИЯ(П1,П2,ПЗ,П4,ц)|
ЛИНИЯ(ц1,П2,цЗ,П4,ц) - Вертикальними, зафарбованими кольорами ц прямокутник, з вершинами (ц1,0), (ц1,211), (ц2,0),(ц2,211);
ЛИНИЯ(П1,ц2,ПЗ,ц4,ц) Горизонтальний зафарбований кольорами ц прямокутник з вершинами (0,ц2), (255,ц2), (0,ц4), (255,ц4);
ЛИНИЯ(ц1,П2,ПЗ,ц4,ц) Чотирикутник кольорами ц із вершинами (ц1,0),(ц1,211),(0,ц4),(255,ц4);
ЛИНИЯ(П1,ц2,цЗ,П4,ц) Чотирикутник кольорами ц із вершинами (0,ц2),(255,ц2),(цЗ,0),(цЗ,211).
У цих шістнадцятьох випадках предикат вірний, інакше виконання програми припиняється й видається повідомлення про помилку.
З ОКРУЖНОСТЬ
Синтаксис: ОКРУЖНОСТЬ(Арг1 ,Арг2,АргЗ,Арг4). У будований предикат КОЛО має чотири аргументи. Нижче наведені результати виконання залежно від типів аргументів.
ОКРУЖНОСТЬ(ц1,ц2,цЗ,ц) Коло із центром (ц1,ц2), радіусом цЗ, кольорами ц;
ОКРУЖНОСТЬ(ц1,ц2,ПЗ,ц) | ОКРУЖНОСТЬ( ц1,П2,ПЗ,ц) | ОКРУЖНОСТЬ(Ш,ц2,ПЗ,ц) Заповнення екрана кольорами ц ОКРУЖНОСТЬ(П1,П2,ПЗ,ц) | ОКРУЖНОСТЬ(П1,П2,цЗ,ц) | ОКРУЖНОСТЬ(ц1,П2,цЗ,ц) Вертикальний зафарбований кольорами ц прямокутник з вершинами: (ц1-цЗ,0), (ц1-цЗ,211), (ц1+цЗ,0), (ц1+цЗ,211);
ОКРУЖНОСТЬ(Ш,ц2,цЗ,ц) Горизонтальний зафарбований кольорами ц прямокутник з вершинами: (0,ц2-цЗ), (255,ц2-цЗ), (0,ц2+цЗ), (255,ц2+цЗ); У цих восьми випадках предикат вірний, інакше виконання програми припиняється й виводиться повідомлення про помилку: "Невыполнимый предикат ОКРУЖНОСТЬ"
4 ЗАКРАСКА
Синтаксис: ЗАКРАСКА(Арг1 ,Арг2,АргЗ,Арг4).
Убудований предикат ЗАКРАСКА( має чотири аргументи. Процедурно цей предикат означає зафарбувати кольорами АргЗ усередині контуру із граничними кольорами Арг4 починаючи із крапки (Арг1,Арг2). Предикат завжди вірний. Всі аргументи повинні бути цілими, арифметичними виразами або змінними, конкретизованими цілими. Якщо ця умова не виконується, то виконання програми припиняється й виводиться повідомлення про помилку.
Необхідно відзначити особливість графічних об'єктів, що описуються за допомогою змінних. У процесі роботи системи може виявитися, що якась змінна в описі графічного примітива не визначена. У цьому випадку графічний примітив однаково буде виконаний, однак змінна приймає всі припустимі для неї значення. Іншими словами, на екрані з'явиться геометричне місце точок, що задається рівнянням графічного об'єкта.
Графічні можливості призначені для виконання виводу графіки та інших подібних операцій. Вбудовані предикати, якщо вони записані у питанні, повинні виконуватися однаково, незалежно від того, записана в пам'ять машини база знань чи ні, і яка це база знань.
