Файл: Предметная область или Универсум совокупность всех предметов, которые она изучает. Литерал.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 30.11.2023

Просмотров: 28

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


ный оператор и читается как «юнив» (univ). Цель Term =.. List является истинной, если List — список, содержащий главный (самый внешний) функтор терма Term, за которым следуют его

параметры.

functor(?Term, ?Functor, ?Arity)

Предикат выдает истину, если терм Term имеет функтор Functor и его арность равна Arity.

arg(?N, +Term, ?Value)

Предикат выдает истину, если терм Term является составным и его N-ый по-порядку аргумент (нумерация идет с 1) унифицируется с Value.

name(?AtomOrInt, ?List)

Предикат выдает истину, если List есть список кодов ASCIIсимволов, составляющих первый аргумент (атом или число).
Ввод и вывод

Существуют текущие входной и выходной потоки. По умолчанию текущим входным потоком считается клавиатура, а выходным потоком — экран. Переключение между

потоками осуществляется с помощью процедур:

• see (+File) — файл становится текущим входным потоком;

• tell (+File) — файл становится текущим выходным потоком;

• seen — закрывается текущий входной поток;

• told закрывается текущий выходной поток.

Файлы читаются и записываются двумя способами: как последовательности символов и как последовательности термов.

Встроенные процедуры для чтения и записи символов и термов таковы:

• read(-Term) вводит следующий терм;

• write(+Term) выводит Term;

• put(+Char) — выводит символ, Char должно быть целочисленное выражение, значение которого есть код ASCII или атом в виде одной литеры;

• get0(–КодСимвола) вводит следующий символ;

• get(–КодСимвола) вводит ближайший следующий «печатаемый» символ.
Характерной особенностью Пролога является эквивалентность программ и данных — и то и другое представлено логическими термами.

Смысл встроенного предиката call(X) в Прологе состоит в передаче терма X в качестве цели.
Доступность метапеременных означает, что в качестве целей в конъюнктивных вопросах и в теле предложений разрешается использовать переменные. В процессе вычисления, в момент обращения к такой переменной, ей должно быть сопоставлено значение — терм.
Информация о фактах, которые не являются истинными, или об отношениях, которые не соблюдаются, называется негативной.

Если правило P не представлено в текущей программе, то считается, что представлено отрицание P.

Множество предложений текущей программы называется миром. Это — замкнутый мир, поскольку интерпретатор ведет себя так, как-будто бы в этом мире содержатся все возможные знания.
предположение об открытости мира
:

если правило P отсутствует в текущей программе, то считается, что P ни истинно, ни ложно.

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

явном виде при составлении программы.
Программирование второго порядка

Программирование на Прологе расширяется введением методов, отсутствующих в модели логического программирования.

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

Предикат findall(+Var, +Goal, -Bag) создает список всех конкретизаций переменной Var, полученных при бэктрекинге (перебор с возвратом) при выполнении цели Goal, и

унифицирует результат с Bag. Bag — пустой список, когда Goal не имеет решения.

Предикат apply(+Term, +List) присоединяет элементы списка List к аргументам терма Term и вызывает полученный терм в качестве цели. Например, apply(plus(1),[2,X]) вызывает plus(1, 2, X)

Предикат checklist(+Pred, +List) проверяет все ли элементы списка List удовлетворяют предикату Pred.
Операции с базой данных

База данных, в соответствии с реляционной моделью баз данных, представляет собой спецификацию набора отношений.

Любая Пролог-программа может рассматриваться как подобная база данных; в ней спецификация отношений частично является явной (факты), а частично неявной (правила).

Некоторые встроенные предикаты позволяют модифицировать эту базу данных во время выполнения программы.

Предикат assert(+Term) добавляет факт или правило в программу (в базу данных в оперативной памяти). Term добавляется как последний факт или правило соответствующего предиката.

При выполнении предиката retract(+Term), когда терм Term унифицируется с первым подходящим фактом или правилом в базе данных, факт или правило удаляется из базы данных.

Предикат retractall(+Term) удаляет все факты или правила в базе данных, которые унифицируются с Term.

Те предикаты, которые будут добавляться или изменяться с помощью предикатов assert и retract, необходимо объявить в программе как динамические. dynamic



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

asserta добавляет в начало базы данных, а assertz (так же как и assert) — в конец.