Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PROLOG.DOC
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
502.27 Кб
Скачать

2.5.Способи Співставлення.

В Пролозі існує декілька способів співставлення:

1. Ідентичні структури співставляються між собою;

2. Вільна змінна співставляє константу або раніше прив'язану змінну і стає зв'язаною з цією величиною.

3. Дві вільні змінні можуть співставляться і бути зв'язаними між собою. На протязі часу зв'зування, вони розуміються як одна змінна. Іншими словами, якщо одна із змінних отримала якесь значення, інша - зразу ж отримує те ж значення.

Наприклад, відношення

parent(joe,X) співставляючись з Parent(joe,Y) ...

зв'язує змінні Х та У відповідним чином.

4. В Пролозі зв'язування (присвоєння) проходить двома способами: на вході і виході. Коли змінна потрапляє в фразу, вона стає вхідним параметром і позначається (i); а, коли виходить із фрази - стає вихідним параметром, який позначається (о).

Позначення.

Для полегшення читання в Пролозі використовуються наступні позначення:

:- cимвол if;

, слово аnd;

; cлово or .

Вправи.

2.1.Напишіть речення українською, які говорять про те, що визначають для людини наступні фрагменти Прологу:

1.дівчина (Галя);

2.подобається (Що, івану);

3.подобається (Що, івану) if подобається (Що, петру).

2.2.Напишіть фрагменти прологівських програм, які задають наступні твердження української мови:

1.Місто - Київ.

2.Місто Київ красиве.

3.Київ - столиця України.

4.Як називається столиця України?

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

2.4.Нехай у Пролог системи є набір фактів:

батьки(микола, ніна, іван)

батьки(петро, галя, андрій)

батьки(віктор, надія, марія).

Кожний з фактів трактується так. Перші два аргументи предикату є батьками особи, яку визначає третій предикат. Що буде реалізовувати запит:

1.Goal: батьки(X,Y,_);

2.Goal: батьки(_,_,Х).

3.Структура програми pdc прологу.

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

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

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

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

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

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

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

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

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

Розділ constants - застосовується для об'яви констант. Використовується синтаксис:

<Ідентифікатор> = <Макровизначення>.

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]