Студопедия

КАТЕГОРИИ:


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

Предикаты типа




Системные предикаты

Предикаты

Шаги выполнения программы на языке Пролог

Пример.

predicates

type (symbol, symbol)

is (symbol, symbol)

lives (symbol, symbol)

can_swim (symbol)

goal

can_swim (what), write (what," плавает"), nl, fail.

clauses

type (mammal, animal).

type (fish, animal).

is ("зебра", mammal).

is ("окунь", fish).

is ("сельдь", fish).

lives ("зебра", on_ground).

lives ("сельдь", in_water).

lives ("окунь", in_water).

can_swim (Y):- type (X, animal), is (Y, X), lives (Y, in_water).

 

Поведение работы Пролог-программы можно сравнить с поиском выхода в лабиринте [7]. Пометим стрелкой направления движения. Предположим, что попали к развилке. Если все пути помечены стрелкой, то возвращаемся по пути, противоположному стрелке. Если таких путей несколько, то возвращаемся по тому, по которому шли последний раз (для этого следует присвоить каждому пути такой номер N, чтобы последний новый путь получал номер старше всех номеров уже пройденных путей). Если на развилке есть не пройденный путь, то он помечается стрелкой и осуществляется следование по этому пути.

Если при движении возникает тупик, то возвращаемся по этому пути обратно до предыдущей развилки. Эта стратегия полная и она приводит к выходу из лабиринта, если даже существует в нем единственный маршрут.

 

Итак, рассмотрим самый общий алгоритм работы Пролог-программы.

1. Нахождение подходящего правила для текущей цели (или подцели).

2. Передача и согласование параметров цели и правила.

3. Определение в зависимости от исхода шага 2 текущей (новой) цели или возврат к предыдущей цели с отменой значений для переменных, полученных в результате выполнения шага 2 для последней цели.

4. Создание точек ветвления программы с помощью предикатов repeat, fail и «!».

5. Инициализация переменных процедуры и восстановление их значений при возврате.

В программе на языке Пролог используются следующие группы системных предикатов:

· предикаты типа;

· арифметические и логические предикаты;

· предикаты ввода-вывода;

· предикаты, влияющие на ход выполнения программы (отсечения, вызов пользователя);

· металогические предикаты (работа с термами, классификация термов);

· предикаты управления и связи с операционной системой;

· предикаты отладки программы.

 

Предикаты типа позволяют задать новую переменную определенного типа, а также проверить принадлежность переменной к тому или иному типу, например:

integer (C) – задает переменную C целого типа;

real (C) – задает переменную C вещественного типа;

char (C) – задает переменную C символьного типа;

symbol (C) – задает переменную C символьного типа;

string (S) – задает переменную строкового типа;

atom (A) – цель истинна, если терм A является атомом;

atomic (A) – цель истинна, если терм A является атомом или целым числом;

var (D) – цель истинна, если терм D является переменной;

nonvar (D) – цель истинна, если терм D не является переменной;

 




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


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


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



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




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