Структура програми на Visual Prolog - Студопедія
Програма Visual Prolog має таку узагальнену структуру:
domains /* .
predicates/*.
clauses /*.
пропозиції (правила та факти) */
goal /*.
подцель _2, тощо. д. */
У розділіclauses ви розміщуєте факти та правила, з якими буде працювати Visual Prolog, намагаючись вирішити мету програми.
Програми мовою Пролог складаються із двох типів фраз: фактів і правил, званихпропозиціями.
-Факти- це відносини чи властивості, про які відомо, що вони мають значення "істина".
Факти мають загальний вигляд:
property(objectl, object2, .objectN)
relation(objectl, object2, .objectN)
-Правила- це пов'язані відносини; вони дозволяють Прологу логічно виводити одну порцію інформації з іншої. Правило набуває значення "істина", якщо доведено, що заданий набір умов є дійсним.
Правила мають загальну форму заголовок: - тіло, які виглядають так:
relation(object,object.object): -relation(object.object), relation(object.object).
Пролог всі правила мають 2 частини: заголовок і тіло, розділені спеціальним знаком :-.
-Заголовок- це факт, який був би істинним, якби були істинними кілька умов. Це називається висновком чи залежним ставленням.
-Тіло- це низка умов, які повинні бути істинними, щоб Пролог міг довести, що заголовок правила є істинним.
Факти та правила Прологу отримують інформацію при виклику з аргументами, які можуть бути константами або пов'язаними змінними; вони повертають інформацію в процедуру, що викликає, шляхом зв'язування аргументів, які є незв'язаними змінними.
Відмінності між цими поняттями несуттєві, і тому часто використовується узагальнений термінвідношення.
У розділіpredicates ви повідомляєте предикати та домени (типи) аргументів цих предикатів. Імена предикатів повинні починатися з літери (бажано малої), за якою слідує послідовність літер, цифр і символів підкреслення (до 250 знаків). В іменах предикатів не можна використовувати символи пробіл, мінус, зірочка, слеш. Оголошення предикату має таку форму:
predicateName(argumentTypel OptionalNamel, argumentType2 OptionalName2, ; argumentTypeN OptionalNameN)
Тут argument_type1, . argument_typeN - або стандартні домени, або домени, оголошені в розділі domains. Оголошення домену аргументу та опис типу аргументу — суть те саме. Імена аргументів OptionalNamel ігноруватимуться компілятором.
У розділіdomains оголошуються будь-які нестандартні домени, які використовуються для аргументів предикатів. Домени в Пролог є аналогами типів в інших мовах. Основні стандартні домени Visual Prolog: char, byte, short, ushort, word, integer, unsigned, long, ulong, dword, real, string І symbol.
Домени дозволяють задавати різні імена різних видів даних. У програмах Visual Prolog об'єкти у відносинах (аргументи предикатів) належать доменам, причому це може бути як стандартні, і описані вами спеціальні домени.
Таблиця 1 - Основні стандартні предикати
| Домен | Опис та реалізація |
| short | Короткий, знаковий, кількісний. Усі платформи 16 біт (-32 768-32 767) |
| ushort | Коротка, беззнакова, кількісна, Всі платформи 16 біт (0-65 535) |
| long | Довге,знакове, кількісне, Всі платформи 32 біт (-2 147 483 648-2 147 483 647) |
| ulong | Довге, беззнакове, кількісне, Всі платформи 32 біт (0-4 294 967 295) |
| integer | Знакове, кількісне, має платформо-залежний розмір, Платформи 16 біт (-32 768-32 767), Платформи 32 біт (-2 147 483 648-2 147 483 647) |
| unsigned | Беззнакове, кількісне має платформо-залежний розмір. Платформи 16 біт (0-65 535) Платформи 32 біт (0-4 294 967 295) |
| byte | Усі платформи 8 біт (0-55) |
| слово | Усі платформи 16 біт (0-65 535) |
| dword | Всі платформи 32 біт (0-4 294 967 295) |
| char | Символ, що реалізується як беззнаковий byte. Синтаксично це символ, укладений між двома одиночними лапками: 'а' |
| real | Число з плаваючою комою, що реалізується як 8 байт відповідно до угоди IEEE; еквівалентний типу double в С. Синтаксично числа з необов'язковим знаком (+ або -), за яким слідує кілька цифр DDDDDDD, потім необов'язкова десяткова точка (.) і ще цифри ddddddd, за якими йде необов'язкова експоненційна частина (е(+ або -)ddd ): DDDDD DDDDDDD DDD> Приклади дійсних чисел (real): 42705. 9999. 86.72 9111.929437521е238. 79.83е+21 Тут 79.83е+21 означає 79.83х10 21 як і в інших мовах. Допустимий діапазон чисел: від 1x10"" 307 до 1х10 + зої (від 1е-307 до 1е +308). При необхідності, цілі автоматично перетворюються на real |
| string | Послідовність символів, що реалізуються як покажчик на байтовий масив, що завершується нулем, як у С. Для рядків допускається два формати: 1. Послідовність букв, цифр та символівпідкреслення, причому перший символ має бути малою літерою. 2. Послідовність символів, укладених у подвійні лапки. |
| symbol | Послідовність символів, що реалізуються як покажчик на вхід у таблиці ідентифікаторів, що зберігає рядки ідентифікаторів. Синтаксис – як для рядків |
У розділіgoal ви задаєте внутрішню мету програми; це дозволяє програмі бути скомпільованою, запускатися та виконуватися незалежно від середовища візуальної розробки (VDE).
Правила мають форму:
Оператор Прологу :- (if) відрізняється від if, що використовуються в інших мовах: правило Прологу працює відповідно до умовної формитоді/якщо,тоді як цей оператор в інших мовах працює відповідно до умовної формиякщо/тоді.
Пролог завжди шукає рішення, починаючи з першого факту та/або правила, та переглядає весь список фактів та/або правил до кінця.
Механізм логічного висновку Пролога бере умови з правила (тіло правила) та переглядає список відомих фактів та правил, намагаючись задовольнити умови. Якщо всі умови істинні, залежне відношення (заголовок правила) вважається істинним. Якщо всі умови не можуть бути узгоджені з відомими фактами, правило нічого не виводить.
Змінніу Пролозі ініціалізуються у порівнянні з константами у фактах чи правилах. До ініціалізації змінна вільна; після надання їй значення вона стає пов'язаною. Змінна залишається пов'язаною лише той час, який необхідний для отримання рішення на запит, потім Пролог звільняє її і шукає інше рішення. Не можна зберегти інформацію, надавши значення змінної. Змінні використовуються як частина процесу пошуку рішення, а не як сховище інформації.
Анонімні зміннідозволяють "упорядкувати" наші програми. Якщо вам потрібна лише певна інформація про запит, можна використовувати анонімні змінні для ігнорування непотрібних значень. У пролозі анонімні змінні позначаються символом підкреслення (_). Анонімна змінна може бути використана на місці будь-якої іншої змінної і їй ніколи не надається значення.
Чи не знайшли те, що шукали? Скористайтеся пошуком: