Структура програми на 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, що використовуються в інших мовах: правило Прологу працює відповідно до умовної формитоді/якщо,тоді як цей оператор в інших мовах працює відповідно до умовної формиякщо/тоді.

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

Механізм логічного висновку Пролога бере умови з правила (тіло правила) та переглядає список відомих фактів та правил, намагаючись задовольнити умови. Якщо всі умови істинні, залежне відношення (заголовок правила) вважається істинним. Якщо всі умови не можуть бути узгоджені з відомими фактами, правило нічого не виводить.

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

Анонімні зміннідозволяють "упорядкувати" наші програми. Якщо вам потрібна лише певна інформація про запит, можна використовувати анонімні змінні для ігнорування непотрібних значень. У пролозі анонімні змінні позначаються символом підкреслення (_). Анонімна змінна може бути використана на місці будь-якої іншої змінної і їй ніколи не надається значення.

Чи не знайшли те, що шукали? Скористайтеся пошуком: