СТРУКТУРА ПРОГРАМИ PDC ПРОЛОГУ

3.1.Основні розділи програми.

В якості реалізуючої системи Прологу будемо розглядати PDC Пролог. Він вибраний тому, що на противагу більшості реалізацій Прологу, є компілятором.

В загальному, програма PDC Прологу (надалі будемо писати просто Пролог) складається з 3-4 розділів.

Розділ clauses- головна частина програми Прологу. Тут записуються факти та правила, які будуть використані для задовільнення цілі програми.

Розділ predicates- використовується для об'яви предикатів та доменів і опису типів їх аргументів. Коли ви об'являєте предикат, ви вказуєте Прологу які домени аргументів належать даному предикату. В ньому повинні бути присутніми всі предикати, зазначені в розділі clauses.

При використанні вмонтованих предикатів, наприклад, таких, як write, makewindow, nl і т.д., об'являти їх не має потреби.

Опис предикату починається з імені, потім, якщо вони існують, іде список типів аргументів, розділених комами і взятими в круглі дужки. Типи аргументу є або ж стандартними доменами, або ж доменами, які ви об'явили в розділі domains. Ім'я предикату повинно бути ідентифікатором.

Розділ domains - використовується подібно конструктору типів type в Паскалі. За допомогою цього розділу можна перейменувати /перевизначити/ стандартні домени і описати домени складних типів даних. Якщо в вашій програмі використовуються тільки стандартні домени, тоді в розділі domains взагаліне має потреби.

Розділ goal - використовується для задання вмонтованих (внутрішніх) цілей, коли ви бажаєте, щоб програма працювала незалежно від розвитку середовища Прологу. Іншими словами, якщо ви плануєте компілювати програму в самостійно виконувану програму, ви можете явно вказати ціль виконання.

Розділ constants - застосовується для об'яви констант. Використовується синтаксис: <Ідентифікатор> = <Макровизначення>.

Тут присутні наступні обмеження:

в одній стрічці повинно бути визначення тільки одної константи;

заборонена рекурсія при визначенні константи;

в описі констант система не розпізнає великі та малі літери;

ідентифікатори констант є глобальними і можуть бути об'явлені тільки один раз.

Розділ databaseце розділ бази даних. Іноді під час виконання програми вам необхідно змінити деякі факти, з якими працює програма. Факти знаходяться в динамічній або внутрішній базі даних. Факти, котрі розміщуються в динамічній базі даних, повинні бути описані в розділі database.

 

3.2 Стандартні домени.

Пролог має декілька вмонтованих стандартних доменів, основні з яких приводяться нижче. Ви можете використовувати стандартні домени при опису типів аргументів предикату. Їх не потрібно визначати в розділі domains.

Домен Опис
char integer real символ, взятий в одинарні лапки цілі від -32768 до 32767 числа, з необов`язковим знаком + або - , який стоїть перед деяким числом DDDDDDD, потім необов`язкова десяткова крапка (.), яка стоїть перед наступним числом DDDDDDD і необов`якова експоненційна частина (е(+ ¸ -)DDD):<+: ->DDDDD<.>DDDDDDD<e<+ : ->DDD> Приклади дійсних чисел: 42705 9999 86.74 9111.769483 521е238 67.85е+21 Допустимий діапазон чисел від 1е-307 до 1е+308. При необхідності цілі числа автоматично перетворюються в дійсні.
string довільна послідовність символів, які заключені в подвійні лапки.
symbol Існує два формати символів: 1. послідовність букв, чисел і підкреслень, які починаються з великої букви; 2. послідовність символів, які заключені в подвійні лапки (випадок, коли символ не починається з великої букви або ж коли містяться проміжки).

Число аргументів предикату називається арністю предикату. Пролог допускає предикати з однаковою назвою але різною арністю.

Пролог проводить автоматичне перетворення доменів:

1. між стрічками і символами;

2. між цілим, символьним і дійсним доменом.