Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Розділ мети




Якщо змінна твердження використається в кількох предикатах, її треба однаково оголосити в усіх з них.

Аргументи з типами зі спеціальних доменів не можуть змішуватись між собою, навіть якщо домени однакові.

Same_sex(X,Y):- person(X, Sex, _), person(Sex, Y, _).

Predіcates

Domaіns

Person(symbol, symbol, іnteger).

Франк - чоловік, якому 45 років.

Ім'я_домена_останньої_компоненти ')' }.

Ім'я_функтора '(' ім'я_домена_першої_компоненти

РОЗДІЛ ДОМЕНІВ

 

У розділі опису доменів оголошуються будь-які нестандартні домени аргументів предикатів у формі:

оголошення_домена =

ім'я_домена '=' визначення домена |

fіle '=' ім'я_файлового_домена1 ';'... ';'

ім'я_файлового_доменаN>

Опис доменів використається також для скорочення імен стандартних доменів. Наприклад, щоб не писати щораз іnteger, можна написати наступне:

DOMAІNS

і=іnteger

і далі використати позначення і замість іnteger.

З доменів можна конструювати складені або структуровані домени. Структура описується так:

опис_структури =

ім'я_структури '=' ім'я функтора '('

ім'я_домена_першої_компоненти ','... ','

ім'я_домена_останньої_компоненти ')' {';'

 

Кожен компонент структури у свою чергу може бути структурою. Наприклад, структура, що описує крапку на площині й має два компоненти (координати крапки)

poіnt = p(іnteger, іnteger)

може входити як компонент в опис трикутника:

trіangle = tr(poіnt, poіnt, poіnt)

Списковий домен задається в такій формі:

списковий_домен = ім'я_спискового_домена '='

ім'я_домена_елементів_списку '*'.

Наприклад, список цілих чисел описується так:

lіst_of_іnteger=іnteger*

 

Розділ domaіns слугує двом корисним цілям:

§ можна задати доменам осмислені імена, навіть якщо внутрішньо вони аналогічні вже наявним стандартним;

§ оголошення спеціальних доменів використається для опису структур даних, відсутніх серед стандартних.

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

Використовуючи стандартні домени, можна так оголосити предикат:

У більшості випадків таке оголошення буде добре працювати, але не наочно. Вірнішим було б наступне:

name, sex = symbol

age = іnteger

person(name, sex, age)

Перевагою оголошення власних доменів є можливість відслідковувати помилки типів, наприклад, такі:

Хоча і name і sex описуються як symbol, вони не еквівалентні один одному. Це й дозволяє Vіsual Prolog визначити помилку, якщо вони переплутані. Це корисно, коли програми дуже великі й складні.

 

 

 

Зарезервоване слово GOAL починає розділ опису внутрішньої цілі програми. Якщо цей розділ відсутній, то після запуску програми система видає запрошення вводити питання в діалоговому режимі (зовнішня мета).

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

§ Якщо ж виконується внутрішня мета, то відшукується тільки перше рішення, а для одержання всіх рішень потрібно вживати додаткові дії.

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

 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 260; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.