- Философия, эзотерика:
- Религии:
- Познавательное
(обо всём)
/* GoogleAds */
Программа «Библиотека» демонстрирует одноуровневый составной объект (доменную структуру).
Описание содержит два имени объектов. Первое имя относится к обычному объекту, второе - к структуре из нескольких объектов. Использование доменной структуры упрощает структуру предиката. Если не использовать конструкцию доменной структуры, то программы требовала бы такого описания предиката collection:
collection(collector,title,author,publisher,year)
В этом описании 4 последних объекта обозначают атрибуты книги. Правило, которое оперирует с персональными библиотеками, рассматривало бы эти 4 последних объекта, как независимые сущности, что сделало бы код программы более сложным.
domains /* персональная библиотека = книга(название, автор, издательство, год издания) */ /* это составной объект */ /* Функтор структуры personal_library имеет имя book имя домена - personal_library имя структуры - book. Структура содержит четыре объекта: title, author, publisher и year.*/ personal_library = book(title,author,publisher,year) collector,title,author,publisher = symbol year = integer predicates /* Предикат, использующий структуру коллекция (имя коллекционера, библиотека) */ collection(collector,personal_library) clauses collection(kahn, book("The Computer and the Brain", "von Neumann", "Yale University Press",1958)). collection(kahn, book("Symbolic Logic", "Lewis Carroll", "Dower Publications",1958)). collection(johnson, book("Database: A Primer", "C.J.Date", "Addison-Wesley",1983)). collection(johnson, book("Problem-Solving Methods in AI", "Nils Nilsson", "McGraw Hill",1971)). collection(smith, book("Alice in Wonderland", "Lewis Carroll", "The New American Library",1960)). collection(smith, book("Fables of Aesop", "Aesop-Calder", "Dover Publications",1967)). goal /* Определить, какие книги принадлежат Смиту. Объект smith является частным значением из домена collector, а Books - //свободной переменной//. */ /* collection(smith,Books), write("У smith есть следующие книги ", Books),nl. */ /* Результат: У smith есть следующие книги book("Alice in Wonderland","Lewis Carroll","The New American Library",1960) У smith есть следующие книги book("Fables of Aesop","Aesop-Calder","Dover Publications",1967) */ /* Определить, какие книги принадлежат Смиту */ collection(smith,book(Title, Autor, Publisher, Year)), write("У smith есть следующие книги: "), nl, nl, write("Название: ", Title), nl, write("Автор : ", Autor), nl, write("Издательство: ", Publisher), nl, write("Год издания: ", Year),nl, nl. /* Найти владельцев и названия книг, напечатанных в 1967 году. Свободными переменными являются Сollector и Title. Знак подчёркивания (_) указывает то, что вас не интересуют объекты с родовыми именами author и publisher. Знак подчёркивания замещает собой анонимную переменную. */ /* collection(Collector,book(Title,_,_,1967)),write("Books published in 1967:"),nl, write("Collector: ", Collector), nl, write("Title: ", Title). */ /* Результат Books published in 1967: Collector: smith Title: Fables of Aesop */ /* Как зовут коллекционера, которому принадлежит книга под названием «Database. A Primer»? */ /* collection(Collector,book("Database: A Primer",_,_,_)), write("Книга Database: A Primer принадлежит ", Collector),nl. */ /* Результат Книга Database: A Primer принадлежит johnson */ /* Каковы названия книг, опубликованных после 1980 года? */ collection(_,book(Title,_,_,Year)),Year > 1980, write("Список, книг опубликованных после 1980 года: "), nl, write("Название: ", Title), nl, write("Год издания: ", Year),nl. /* Результат Список, книг опубликованных после 1980 года: Название: Database: A Primer Год издания: 1983 */
!!Рекомендуем: Семейная Энциклопедия Здоровья ⇒ Что должен знать современный человек? ⇒ Самоанализ. Работа над собой ⇒ Оглавление ⇒ Главная сайта