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. між цілим, символьним і дійсним доменом.