Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Создание программы на языке Visual Prolog






Пролог " сопоставляет вопросы и ответы", " ищет сопоставление", " сопоставляет условия с фактами", " сопоставляет переменные с константами" и т. д. Ниже рассмотрим, что же понимается под термином сопоставление (matching).

В Прологе имеется несколько примеров сопоставления одной вещи с другой. Ясно, что идентичные структуры сопоставимы (сравнимы) друг с другом: parent (joe, tammy) сопоставимо С parent (joe, tammy).

Однако сопоставление (сравнение) обычно использует одну или несколько свободных переменных. Например, если х свободна, то parent (joe, X) сопоставимо с par ent (joe, tammy) и х принимает значение (связывается с) tammy.

Если же х уже связана, то она действует так же, как обычная константа. Таким образом, если X связана со значением tammy, то parent (joe, X) сопоставимо

Cparent (joe, tammy), но parent (joe, X) не сопоставимо с parent (joe, millie).

В предыдущем примере сопоставление не выполняется, т. к. если переменная становится связанной, то ее значение не может изменяться.

Как может переменная оказаться связанной при попытке Пролога сопоставить ее с чем-либо? Вспомним, что переменные не могут хранить значения, т. к. они становятся связанными только на промежуток времени, необходимый для отыскания (или попытки отыскания) одного решения цели. Поэтому имеется только одна возможность для переменной оказаться связанной — перед попыткой сопоставления, если цель требует больше одного шага, и переменная стала связанной на предыдущем шаге. Например:

parent(joe, X), parent(X, jenny)

является корректной целью. Она означает: " Найти кого-либо, являющегося ребенком Joe и родителем Jenny". Здесь при достижении подцели parent (x, jenny) переменная х уже будет связана. Если для подцели parent (x, jenny) нет решений, Про лог " развяжет" переменную х и вернется назад, пытаясь найти новое решение для parent (joe, X), а затем проверит, будет ли " работать" parent (X, jenny) с новым значением х.

Две свободные переменные могут сопоставляться друг с другом. Например,

parent (joe, X) сопоставляется с parent (joe, Y), связывая при этом переменные X

и Y между собой. С момента " связывания" X и Y трактуются как одна переменная, и любое изменение значения одной из них приводит к немедленному соответствующему изменению другой. В случае подобного " связывания" между собой нескольких свободных переменных все они называются совмещенными свободными переменными. Некоторые методы программирования специально используют " взаимосвязывание" свободных переменных, являющихся, на самом деле, различными.

В Прологе связывание переменных (со значениями) производится двумя способами: на входе и выходе. Направление, в котором передаются значения, указывается в шаблоне потока параметров (flow pattern). В дальнейшем (для краткости) будем опускать слово " шаблон" и говорить просто " поток параметров". Когда переменная передается в предложение, она считается входным аргументом и обозначается символом (i). Когда же переменная возвращается из предложения, она является выходным аргументом и обозначается символом (о).

 

Например дана задача определить что травится Ani. (программа 222.pro)


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

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал