Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пример 1.
Рассмотрим задачу поиска девушкой жениха, который должен удовлетворять определенным ее требованиям. Если ввести предикат man (symbol, symbol, integer), где аргументы могут обозначать имя, цвет глаз, возраст и т.п., это правило приобретет вид ideal(X): - man(X, C, A), C=blue, A< =30. Обычно количество требований-аргументов можно увеличивать практически неограниченно и, кроме того, возможна ситуация, когда какой-либо из аргументов имеет несколько свойств. Например, автомобиль характеризуется маркой, мощностью двигателя, цветом и т.д. В таких случаях применяются сложные структуры данных, которые формируются с помощью стандартных типов Пролога. Эти структуры называются функторами и имеют следующий формат записи имя_функтора (свойство1, свойство2,, свойство ) Поставим в нашей задаче дополнительное требование, чтобы идеальный друг имел некоторую собственность. Каждую возможную форму собственности можно изобразить в форме функтора, а их многообразие записать с помощью альтернативного задания типов. Например, введем предикат владеть(объект) или have(object), и пусть к собственности будет принадлежать автомобиль, книга, и конь и каждый из этих функторов имеет разное количество свойств, которые принадлежат к разным типам Пролога. Тогда запись решения задачи приобретет вид
domains object=book(symbol, symbol, integer); horse(symbol); avto(symbol, integer). predicates man(symbol, integer, integer, object). ideal(symbol). сlauses man(“Stas”, 28, 186, have(book(“Куприн”, ”Поединок”, 1902))). man(“Vlad”, 27, 183, have(avto(“Volvo”, 350))). ideal(X): - man(X, A, H, have(book(“Куприн”, _, _))), A< =30, H> =180. или ideal(X): - man(X, A, H, have(avto(M, _))), A< =30, H> =180, M=”Volvo”.
Итоговое содержание файла main.pro имеет вид implement main property=have(object). run(): - stdio:: write(" fail"), succeed(). end implement main
|