Чтение онлайн

на главную - закладки

Жанры

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

&.LOAD TEST

Другая важная команда – это LOAD.Далее следует имя файла. Ввод этой команды приводит к чтению содержимого файла TEST.LOGи дополнению этим содержимым базы данных, подобно тому, как это делалось при consult.Теперь можно задавать вопросы:

&.?((likes john bertrand))

?

&.?((likes john alfred))

&.

Заметим, что отрицательный

ответ на вопрос обозначается в микро-Прологе литерой «?», а положительный ответ – повторной выдачей приглашения. Чтобы узнать, какие утверждения имеются для предиката likes,мы задаем команду LIST.Можно запросить выдачу текста всей программы или выдачу утверждений для некоторого набора предикатов. Посмотрим, какие утверждения существуют для предиката likes:

&. LIST(likes)

((likes john alfred))

((likes alfred john))

((likes bertrand john))

((likes david bertrand))

((likes john x) (likes x bertrand))

В некоторых случаях для того, чтобы получить ответ на заданный вопрос, приходится прибегать к помощи встроенных предикатов. Предикат РР обеспечивает выдачу его аргументов на терминал, а предикат FAIL вызывает неудачное согласование целевого утверждения.

&.?((likes john х) (РР х) (FAIL))

alfred

david

?

Так мы получили два ответа на вопрос: «Кто нравится Джону?». Если мы хотим добавить к базе данных новые утверждения с терминала, нам не нужно прибегать к помощи специальных команд – мы можем просто ввести эти утверждения. Синтаксис утверждений микро-Пролога будет рассмотрен в следующем разделе.

&.((likes timothy bertrand))

&.?((likes john x) (PP x) (FAIL))

alfred

david

timothy

?

Чтобы выйти из микро-Пролога и вернуться в СР/М, достаточно задать команду QT, за которой следует поставить точку:

&. QT.

А›

Синтаксис

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

f(a,g(2,3),c)

на микро-Прологе должно быть записано как:

(f a (g 2 3) с)

Здесь мы сталкиваемся также и с иным синтаксисом задания списков, где списки заключены в круглые скобки, а элементы списков разделяются пробелами.

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

будучи взятыми в конъюнкции, образуют тело утверждения. Рассмотрим более сложное утверждение:

((alter (zl|z2) (x|y)) (change zl x) (alter z2 у)

Это – второе утверждение для предиката alter(преобразовать) из разд. 3.4. Заметим, что вертикальная черта имеет здесь то же значение, что и в базовом синтаксисе.

Различные ограничения

Микро-Пролог может обрабатывать числа с плавающей точкой с точностью до восьми значащих цифр и с порядком (по основанию 10) в диапазоне от -127 до 127. Имена атомов (называемые в микро-Прологе «константами») могут содержать до 60 литер, а терм не может содержать более 64 переменных. Эти ограничения на практике не вызывают трудностей.

Возможности окружения

Микро-Пролог предоставляет множество средств, помогающих при разработке программ за терминалом. Предикаты LOADи SAVEпозволяют, соответственно, читать и записывать программы в файлы на диске. Мощный строчный редактор и структурный редактор позволяют вносить изменения в тексты программ, не выходя из Пролог-системы. Выполнение микро-Пролог-программы может быть прервано путем ввода комбинации «CONTROL С».

Специальные встроенные предикаты

Имена и назначение встроенных предикатов сильно отличаются от рассмотренных в данной книге. Ниже приводится краткое описание некоторых из предусмотренных средств.

Тип терма можно проверить с помощью предикатов NUM, CON, VAR,которые согласуются с базой данных, соответственно, в случае чисел, констант (атомов) и переменных. Кроме того, предикат SYSпроверяет, является ли константа именем встроенного предиката, предикат 1NTобеспечивает проверку на целое число.

Для работы с базой данных используются предикаты: ADDCL(аналогичен assert), CL(аналогичен clause)и DELCL(аналогичен retract)В этих предикатах можно задавать дополнительный целочисленный аргумент Nс тем, чтобы можно было обрабатывать N– e утверждение процедуры.

Поскольку единственным видом терма в микро-Прологе является список, то предикат вида ' =..' здесь не нужен. Предикат STRINGпозволяет программисту создавать новые атомы и осуществлять доступ к внутренней структуре имени атома аналогично тому, как это делается с помощью предиката name.

Составные цели в микро-Прологе можно конструировать с помощью встроенных предикатов OR, NOTи IF.Предикат FAILвызывает немедленную неудачу в согласовании цели. Предусмотрено также и «отсечение», которое обозначается с помощью литеры '/'.

Арифметические действия реализуются посредством нескольких предикатов, вместо одного is. Арифметические предикаты максимально «обратимы», поэтому, например, цель

(SUM х у г)

Поделиться:
Популярные книги

Отморозки

Земляной Андрей Борисович
Фантастика:
научная фантастика
7.00
рейтинг книги
Отморозки

Цеховик. Книга 2. Движение к цели

Ромов Дмитрий
2. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цеховик. Книга 2. Движение к цели

Гримуар темного лорда V

Грехов Тимофей
5. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда V

Комендант некромантской общаги 2

Леденцовская Анна
2. Мир
Фантастика:
юмористическая фантастика
7.77
рейтинг книги
Комендант некромантской общаги 2

Попаданка в деле, или Ваш любимый доктор

Марей Соня
1. Попаданка в деле, или Ваш любимый доктор
Фантастика:
фэнтези
5.50
рейтинг книги
Попаданка в деле, или Ваш любимый доктор

Ведьмак. Назад в СССР

Подус Игорь
1. Ведьмак. Назад в СССР
Фантастика:
попаданцы
альтернативная история
6.60
рейтинг книги
Ведьмак. Назад в СССР

Здравствуй, 1984-й

Иванов Дмитрий
1. Девяностые
Фантастика:
альтернативная история
6.42
рейтинг книги
Здравствуй, 1984-й

Огромный. Злой. Зеленый

Новикова Татьяна О.
1. Большой. Зеленый... ОРК
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Огромный. Злой. Зеленый

Черный маг императора

Герда Александр
1. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора

Мое ускорение

Иванов Дмитрий
5. Девяностые
Фантастика:
попаданцы
альтернативная история
6.33
рейтинг книги
Мое ускорение

Вечный. Книга IV

Рокотов Алексей
4. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга IV

Я еще князь. Книга XX

Дрейк Сириус
20. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще князь. Книга XX

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Лорд Системы

Токсик Саша
1. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
4.00
рейтинг книги
Лорд Системы