русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ВСТРОЕННЫЙ ПРЕДИКАТ FAIL


Дата добавления: 2014-09-29; просмотров: 769; Нарушение авторских прав


Предикат fail вызывает неудачное завершение правила, в результате чего внутренние унификационные процедуры выполняют возврат в предыдущую подцель и пытаются найти для нее другое решение.

С помощью этого предиката можно заставить систему находить все решения и для внутренней цели.

Goal

sister(ann,X),write(“Ann — сестра “,X),

nl, fail

Дойдя до предиката fail, система будет осуществлять возврат к предикату sister и будет находить для Х новое значение. В конечном итоге цель так и не будет согласована, но при попытках ее доказать будут напечатаны все, для кого ann — сестра.

Для того, чтобы заставить систему выдавать еще и обоих родителей ann, запрос нужно составить так:

Goal

(sister(ann,X), write(”Ann- сестра ”,X), nl;

pearent(X,ann), write(X,” — родитель Ann”)),

fail

Или так:

Goal

sister(ann,X), write(”Ann-сестра ”,X),nl,fail;

pearent(X,ann), fail

СОКРАЩЕННЫЕ ВАРИАНТЫ ВНУТРЕННИХ ЗАПРОСОВ

В предыдущих примерах запросы строились из цепочек взимосвязанных предикатов. В случае, когда какой-либо запрос нужно повторить несколько раз, разумно предусмотреть возможность не задавать всякий раз одни и те же условия. В Турбо-Прологе эта задача решается конструированием правил, не содержащих в себе данных, т.е. правил нулевой арности. Задача, таким образом, сводится к написанию сокращенного варианта запроса. Пояснить только что сказанное можно на следующем примере:

Goal

who_is_the_sister ,fail

who_is_the_sister:-

sister(X,Y),

write(X,”- сестра ”,Y),nl.

Для определения всех родственников девушки составим запрос:

Goal

family,fail

И следующие правила:

family:-

write(” Tell me girl, please ”),nl,

readln(X),

family_of_girl(X).

family_of_girl(Girl):- % сестры Girl

sister(X, Girl),

write(X,”- сестра”), nl.

family_of_girl(Girl):- % мать Girl



mother(X,Girl),

write(X,”- мать”),nl.

Аналогично составляются правила для определения братьев и отца.

При разработке программы такой способ записи цели более предпочтителен, так как он упрощает процедуру запросов.

Упражнение 2.1.

Модифицируйте программу «Родственники» из примера 1.2 главы 1 так, чтобы печатались все родственники девушки по имени Бэт.



<== предыдущая лекция | следующая лекция ==>
ИСПОЛЬЗОВАНИЕ ВНУТРЕННИХ ЦЕЛЕЙ | МЕХАНИЗМ ВОЗВРАТА


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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