У вас вопросы?
У нас ответы:) SamZan.net

Тема. Структура програми на пролозі

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 19.5.2025

Лабораторна робота  №3-4

Тема. Структура програми на пролозі.

Мета. Ознайомити студентів із структурою програми записаної в середовищих програмування Turbo Prolog 2.0. та Visual Prolog

Теоретичні відомості

Програма на мові ПРОЛОГ включає наступні основні розділи:

опис імен і структур об'єктів (domains|);

опис предикатів – назв стосунків, що існують між

об'єктами (predicates|);

розділ цільових тверджень (goal|), який може бути відсутнім; в цьому випадку програма запрошуватиме цільове твердження при запуску;

опис фактів і правил, що описують стосунки (clauses|).

Імена об'єктів (констант) в Пролозі пишуться з маленької букви, а змінних – з великою.

Розглянемо, як можна описати на Пролозі завдання з деякої наочної області, наприклад географія.

Програма 1

DOMAINS|

gorod|, strana| = symbol|

PREDICATES|

situ|(gorod,strana|)

CLAUSES|

situ| (london|, england|).

situ| (petersburg|, russia|).

situ| (kiev|, ukraine|).

situ| (pekin|, asia|).

situ| (warszawa|, poland|).

situ| (berlin|, europe|).

situ| (X, europe|):- situ| (X, russia|).

situ| (X, europe|):- situ| (X, poland|).

Вираження

situ|(kiev|, ukraine|)

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

DOMAINS|

gorod|, strana| = symbol|

PREDICATES|

situ|(gorod,strana|)

можна було просто описати предикат:

PREDICATES|

situ|(symbol|, symbol|)

Інколи перший варіант кращий, оскільки дозволяє оцінювати семантичний сенс аргументів предиката. В кінці розділу clauses| Програми 1 описані два правила. Правило задає новий предикат через предикати, визначені раніше. Правило 7 складається з голови (предиката) і тіла – послідовності предикатів. Голова відділяється від тіла значком :-, який можна інтерпретувати як слово «Якщо». Таким чином, висновок є головою правила, а тіло правила складається з набору посилок.

Використання правил є основним способом представлення знань в інтелектуальних системах.

Сенс правила полягає в тому, що мета, що є головою, буде достеменною, якщо інтерпретатор Прологу зможе показати, що всі вирази (подцели|) в телі правила є достеменними.

У правилах буква X (або будь-яка інша заголовна буква, або будь-яке слово, що починається із заголовної букви) позначає змінну, яка може набувати різних значень.

Так, правило

situ| (X, europe|):- situ| (X, poland|)

означає, що будь-яке польське місто є одночасно європейським містом. Додаванням нових правил можна поповнювати і модифікувати опис завдання. Якщо ми хочемо описати той факт, що всі міста Франції є одночасно європейськими містами, то досить додати всього одне правило

situ| (X, europe|):- situ| (X, france|)

і можна буде як і раніше використовувати всі останні факти про міста Європи.

У Пролозі можна використовувати складені об'єкти. Складені об'єкти дозволяють описувати ієрархічні структури, в яких опис одного предиката включає опис інших предикатів.

Наприклад:

Програма 2

DOMAINS|

personal_library=book|(title,author,publication|)

publication=| publication|(publisher,year|)

collector,title,author,publisher=symbol|

year=integer|

PREDICATES|

collection|(collector|, personal_library|)

CLAUSES|

collection|(“Іванов”,book(“Війна і мир”, “Лев Толстой”

publication|(“Москва”,1990))).

При описі правил часто виникає необхідність використовувати логічні в'язки І і АБО. Як в'язка І використовується кома, а як в'язка АБО – крапка з комою. Наприклад:

gigant|(X):- rost|(X,Y|),Y>200|.

star_or_mlad|(X):- X>70|; X<10|.

ПРОЛОГ має велику кількість вбудованих предикатів, тобто предикати, визначувані автоматично. Наприклад, вбудований предикат nl| викликає переклад рядка, а вбудований предикат write| застосовується для виведення інформації на екран. Вбудовані предикати використовуються так само, як і визначувані користувачем предикати, але вбудований предикат не може бути головою правила або з'являтися у факті.

Часто використовуваними вбудованими предикатами є = (уніфікація) і логічне заперечення not|. Наприклад:

student|(X):- X=”Петров|”; X=”Иванов|”.

xor_student|(X):- not|(X=”Петров|”), not|(X=”Иванов|”).

planeta|(X):- not|(X=”солнце|”).

Затвердження not|(X = Y) еквівалентно X<>Y|.

Інколи буває корисно використовувати предикати, про які заздалегідь відомо, достеменні вони або помилкові. Для цих цілей використовують предикати true| і fail|. Предикат true| завжди достеменний, тоді як fail| завжди помилковий. Останній предикат використовується для управління процесом рішення задачі на Пролозі.

Пролог-програма може використовувати коментарі, які не впливають на виконання програми, але можуть надати допомогу людині, що читає програму. ПРОЛОГ ігнорує довільне число рядків, поміщене між символами /* і */. Все, що знаходиться між % і кінцем рядка, також розглядається як коментар:

/* Тут записаний

коментар */

% Це теж коментар

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

Розглянемо, яким чином на Пролозі можна описати завдання про родинні стосунки.

Хай є факти про батьківство:

1) Іван – батько Ігоря.

2) Іван – батько Сидора.

3) Сидір – батько Лізи.

Введемо також три предикати:

Чоловік (x), що означає, що x – чоловік

Єдинокровний (x,y|), такий, що означає єдинокровність x і в

Брат (x,y|), що означає, що x брат в.

Справедливі, вочевидь, наступні правила:

1) «Всі батьки – чоловіки».

2) «Якщо у дітей один батько, то вони єдинокровні».

3) «Брат – це єдинокровний чоловік».

Розглянемо виведення рішення при відповіді на питання:

«Чи є брати у Ігоря?».

Програма 3

DOMAINS|

person| = symbol|

PREDICATES|

otec|(person,person|)

man|(person|)

brat|(person,person|)

CLAUSES|

man|(X):-otec(X,_|).

brat|(X,Y|):-otec(Z,Y|),otec|(Z,X|),man|(X),X<>Y|.

otec|(ivan,igor|). otec|(ivan,sidor|). otec|(sidor,lisa|).

У другому правилі програми вказана умова X<>Y|. Це дозволяє описати пролог-програмі той факт, що людина не може бути власним братом.

Після запиту

goal|: brat|(igor,X|)

Система видасть

X = sidor|

Це відповідає нашим уявленням про правильне рішення.

Наведені приклади примітивні, але вони дозволяють представити корисність рішень, які може згенерувати ПРОЛОГ при великій кількості фактів і правил.

Хід роботи.

Частина І

  1.  Ознайомитись із теоретичними відомостями.
  2.  Визначити основні відмінності у структурі програм написаних у середовищі Turbo Prolog  та Turbo Pascal.
  3.  Скласти задачу, для опису якої потрібно було б використати найменшу кількість структурних елементів програми.

Частина І

  1.  Визначити засоби для автоматизації набору програми в середовищі Visual Prolog.
  2.  Ознайомитись із основними файловими складовими пакету Visual Prolog.
  3.  Отримані результати оформити у звіт.




1. Шизой Сначала не много о том что я понимаю под словом
2. Профилактика детского травматизма в школе
3. Ориентация на внутренних потребителей при усовершенствовании системы управления для кого выполняется эта работа
4. Роза Мира вм РОЗИН Сущность эзотерической доктрины Много лет занимаясь изучением эзотерических учен
5. Тема урока- АСПушкин Песнь о Вещем Олеге Цель и задачи урока- Познакомить учащихся с балладой А
6. МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТЭКОНОМИКИ СТАТИСТИКИ И ИНФОРМАТИКИ МЭСИ АЛТАЙСКИЙ ТЕХНИКУМ И.html
7. Репродукция человека
8. Конспект лекций Рекомендовано методической комиссией биологического факультета для студентов высших
9. на тему- Социальная концепция интерьера жилой среды Выполнила- ст
10. Лабораторная работа 53