Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

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

Лабораторна робота  №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. і Кращі з них ми називаємо тепер творами народного мистецтва
7. р этилового спирта погружение в 6 рр перекиси водорода воздействие парами формалина Для контроля качес
8. Проектирование радиорелейных линий связи
9. культурной деятельности и современные технологии организации Влияние праздников на формирование и разв
10. Нижегородская правда 22 сентября 2013 года г
11. Социальное объявление развития english
12. інвалідам Державна соціальна допомога інвалідам з дитинства та дітямінвалідам Станом на 1 листопада
13. Педіатріям Київ Протокол лікування та профілактики рахіту у дітей ШИФР Е 55
14. Реферат- Математичні методи та моделі в управлінні аграрним виробництвом
15. Особенности деятельности налогоплательщика коммерческой или некоммерческой не играют роли при исчисл
16. 1. Дознание и действия правомерные для таможенных органов
17. критики Нам потребуются и другие лица
18. малої прози Е. Золя -- Наукові записки Харківського державного педагогічного університету
19. методичної та наукової роботи професор Е
20. Агентский договор