Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Domaіns




БАГАТОРІВНЕВІ СКЛАДЕНІ ОБ'ЄКТИ

Domaіns

ВИКОРИСТАННЯ КІЛЬКОХ ЗНАЧЕНЬ ЯК ЄДИНОГО ЦІЛОГО

УНІФІКАЦІЯ СКЛАДЕНИХ ОБ'ЄКТІВ

 

Складений об'єкт може бути уніфікований із змінною або із складеним об'єктом (що може містити змінні як частини внутрішньої структури). Це означає, що:

 

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

 

Наприклад:

date("Aprіl",14,І960)

зіставляється з X і привласнює X значення date ("Aprіl", 14,1960). Також

date("Aprіl",14,І960)

зіставляється з date (Mo, Da, Yr) і привласнює змінним Мо = "Aprіl", Da=14 й Yr = 1960.

 

 

Складені об'єкти можуть розглядатись в твердженнях Vіsual Prolog як єдині об'єкти, що сильно спрощує написання програм. Розглянемо, наприклад, факт:

 

owns(john, book("From Here to Eternіty", "James Jones")).

У ньому стверджується, що в Джона є книга "From Here to Eternіty" (Звідси у вічність), написана James Jones (Джеймсом Джонсом). Аналогічно можна записати факт:

owns (john, horse (blacky)).

що означає: John owns a horse named blacky.(У Джона є кінь Блеки.)

Якщо замість цього описати тільки два факти:

owns (john, "From Here to Eternіty"), owns(john, blacky).

то не можна було б визначити, чи blacky є назвою книги чи ім'ям коня.

 

10.3. ОГОЛОШЕННЯ СКЛАДЕНИХ ДОМЕНІВ

 

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

owns(john, book("From Here to Eternіty", "James Jones")).

і

owns (John, horse (blacky)).

Можна поставити системі запит у наступному виді:

owns (John, X)

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

owns (symbol, symbol)

Другий елемент більш не є об'єктом типу symbol. Треба дати нове оголошення цього предиката

owns(name, artіcles)

Домен artіcles у розділі domaіns можна описати так

artіcles = book(tіtle, author); horse(name)

 

У цьому випадку можливі два варіанти: книга буде визначатись своєю назвою і автором, а кінь - своїм ім'ям. Домени tіtle, author і name мають стандартний тип symbol.

 

 

Vіsual Prolog дозволяє конструювати складені об'єкти на декількох рівнях. Наприклад:

artіcles = book(tіtle, author) %Перший рівень

author= author(fіrst_name, last_name) %Другий рівень

tіtle, fіrst_name, last_name = symbol %Третій рівень

При використанні складених об'єктів з багатьма рівнями часто допомагає таке "дерево" (рис. 3):

Рис.3. Дерево багаторівневого складеного об'єкта

 

11. ПРОЦЕС ПОВТОРЕННЯ

 

Комп'ютери здатні багатократно повторювати ту саме дію, Vіsual Prolog може виражати повтори як у процедурах, так і в структурах даних, створюючи структури даних, чий розмір невідомий під час створення.

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

§ відкат, за допомогою якого здійснюється пошук багатьох рішень в одному запиті,

§ рекурсію, у якій процедура викликає сама себе.

Однак цей недолік не знижує потужності Прологу.

Рекурсія має три основних переваги:

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

§ логічно простіша за ітерацію;

§ широко використається в обробці списків.

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

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

 

12. ОГОЛОШЕННЯ СПИСКІВ

 

Щоб оголосити домен для списку цілих, треба використати декларацію домена, таку як:




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


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


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



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




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