My-library.info
Все категории

У Клоксин - ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе У Клоксин - ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ. Жанр: Программирование издательство неизвестно, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ
Автор
Издательство:
неизвестно
ISBN:
нет данных
Год:
неизвестен
Дата добавления:
17 сентябрь 2019
Количество просмотров:
381
Читать онлайн
У Клоксин - ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ

У Клоксин - ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ краткое содержание

У Клоксин - ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ - описание и краткое содержание, автор У Клоксин, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info
Книга английских специалистов, содержащая описание основ логического программирования и особенностей языка Пролог – базового языка ЭВМ пятого поколения. Области применения этого языка связаны с разработкой экспертных систем, интеллектуальных баз данных, обработкой естественного языка, разработкой компиляторов ЭВМ. Книга полезна для первого ознакомления с языком Пролог.

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ читать онлайн бесплатно

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ - читать книгу онлайн бесплатно, автор У Клоксин

?-op(40,xfx,=).

?-op(40,xfx,‹).

?-op(40,xfx,=‹).

?-op(40,xfx,›=).

?-op(40,xfx,›).

?-op(40,xfx, ==).

?-op(40,xfx,==).

?-op(31,yfx,-).

?-op(31,yfx,+).

?-op(21,yfx,/).

?-op(21,yfx,*).

?-op(ll,xfx, mod).

ГЛАВА 6. ВСТРОЕННЫЕ ПРЕДИКАТЫ

В этой главе будут описаны некоторые встроенные предикаты, которые может обеспечивать Пролог-система. Что имеется в виду, когда мы говорим, что предикат является встроенным? Это значит, что определение этого предиката уже имеется в Пролог-системе и нет необходимости иметь собственное его описание. Встроенные предикаты предоставляют возможности, которые нельзя реализовать с помощью описаний на чистом Прологе. Они также могут предоставлять удобные средства, избавляя программиста от необходимости самому определять эти предикаты. В действительности мы уже встречались с некоторыми встроенными предикатами – это предикаты для ввода и вывода, обсуждавшиеся в гл. 5. Оператор «отсечения» тоже можно рассматривать как встроенный предикат.

Предикаты для ввода-вывода показывают, что встроенные предикаты могут иметь «побочные эффекты». Это значит, что при доказательстве согласованности целевого утверждения, содержащего такой предикат, помимо конкретизации аргументов предиката могут возникнуть дополнительные изменения. Это, естественно, не может случиться с предикатами, определенными на чистом Прологе. Другой важный факт, касающийся встроенных предикатов, состоит в том, что они могут быть определены только для аргументов конкретного вида. Например, рассмотрим предикат '‹' определенный таким образом, что Х‹Y выполняется, если число X меньше, чем число Y. Подобное отношение не может быть определено в Прологе без помощи посторонних средств, использующих некоторые знания о числах. Таким образом,  – это встроенный предикат, а его определение использует некоторые операции вычислительной машины, на которой реализована Пролог-система, для определения относительной величины чисел (представленных в виде двоичного кода или каким-либо иным способом).

Что произойдет, если мы используем в качестве целевого утверждения предикат X‹Y, где X является атомом или даже более того, если как X, так и Y неконкретизированы? Определение предиката, данное на машинном языке, окажется просто неприменимым. Поэтому мы должны оговорить, что предикат X‹Y может быть использован в качестве целевого утверждения, если на момент, когда делается попытка выполнить его, обе переменные X и Y имеют в качестве значений числа. Что произойдет в случае, когда это условие не выполняется, зависит от конкретной реализации Пролог-системы. Возможно, доказательство согласованности такого целевого утверждения просто закончится неудачей. А может быть, будет напечатано сообщение об ошибке и система выполнит ряд действий, соответствующих этой ситуации (подобных прекращению попыток ответить на текущий вопрос).

6.1. Ввод новых утверждений

Когда вы пишете программу на Прологе, вам следует сообщить системе, какие утверждения нужно использовать, и затем задавать относительно них вопросы. Возможно, вы захотите вводить утверждения с терминала или захотите указать Пролог-системе приготовленный вами заранее файл, откуда следует брать утверждения. В действительности обе эти операции с точки зрения Пролога одинаковы, так как терминал рассматривается как файл, имеющий имя user. Имеются два основных встроенных предиката для ввода новых утверждений: consult и reconsult. Кроме того, в языке существует удобная форма записи на случай, когда вы захотите ввести утверждения сразу из нескольких файлов,- так называемая списковая форма записи. Для тех, кому это интересно, укажем, что в разд. 7.13 приведены простые определения на Прологе предикатов consult и reconsult.

consult(X)

Встроенный предикат consult предназначен для использования в тех ситуациях, когда вы хотите добавить утверждения из некоторого файла /или вводимые с терминала) к утверждениям, уже имеющимся в базе данных. Аргумент предиката должен быть атомом, указывающим имя файла, из которого должны браться утверждения. Какие литеры составляют допустимое имя файла, естественно, зависит от конкретной, используемой вами ЭВМ. Ниже приведены примеры возможной записи целевого утверждения с предикатом consult на различных ЭВМ:


?- consult(myfile).

?- consult('/us/gris/pl/chat').

?- consult('lib:iorout.pl'),


В случае когда Пролог должен доказать согласованность целевого утверждения consult, он просматривает файл, добавляя утверждения, которые он обнаруживает, в конец базы данных. В результате новые утверждения будут помещены после всех уже имевшихся утверждений для тех же предикатов. Если в файле будет обнаружен вопрос, то он будет рассматриваться точно так же, как обычный вопрос, за тем исключением, что ответ не будет напечатан. Обычно не имеет смысла вставлять вопросы в файл с новыми утверждениями, за исключением тех случаев, когда необходимо сделать операции, подобные объявлению новых операторов и печати полезных сообщений.

reconsult(X)

Предикат reconsult аналогичен предикату consult, за исключением того, что вводимые утверждения заменяют все имеющиеся утверждения для того же самого предиката. Вследствие этого reconsult удобно использовать для исправления ошибок в программе. Если вы вводите некоторые файлы с утверждениями и затем обнаруживаете, что одно из утверждений содержит ошибку, то вы можете исправить ее, и для этого нет необходимости вводить заново все файлы. Чтобы сделать это, вам необходимо ввести с помощью reconsult файл, содержащий совокупность правильных утверждений для предиката, содержащего ошибку. Вы можете ввести исправления либо непосредственно с терминала (reconsult (user)), либо сначала отредактировать соответствующий файл, не выходя из Пролог-системы (такую возможность предоставляют не все реализации), и затем ввести этот файл с помощью reconsult. Конечно, при вводе исправленных утверждений с терминала содержание базы данных, с которой работает Пролог, изменится, но при этом исходный файл, содержащий первоначальные утверждения с ошибками, останется неизменным! В разд. 8.5 показано использование предикатов consult и reconsult в процессе разработки программы.

Списковая форма записи

Пролог предоставляет специальную форму записи, позволяющую более удобно задавать предикаты consult и reconsult в качестве целевых утверждений, особенно в случае, когда вы хотите ввести более чем один файл. Для этого достаточно просто записать совокупность имен файлов (как атомов Пролога) в виде списка и задать этот список в качестве целевого утверждения. Если вы хотите, чтобы содержимое файла было просто добавлено к базе данных (consult), то имя такого файла записывается в списке в том виде, как оно есть, если же вы хотите, чтобы при этом произошла замена уже имеющихся одинаковых предикатов (reconsult), то перед именем файла ставится знак '-' (минус). Так, например, вопрос


?- [файл1,-файл2,'фред.1',-'билл.2'].


полностью эквивалентен следующему, но более длинному;


?- consult(файл1), reconsult(файл2), consult('фред:1'), reconsult('билл.2').


Списковая форма сводится к удобству записи, она не дает каких-либо дополнительных возможностей по сравнению с использованием предикатов consult и reconsult. Некоторые реализации Пролога могут использовать в списковой форме записи вместо знака '-' какой-нибудь иной знак, но эффект при этом останется прежним.

6.2. Выполнение и невыполнение целевого утверждения

При нормальном выполнении программы на Прологе целевое утверждение считается согласованным (с базой данных), когда это может быть доказано, и несогласованным в случае, когда доказательства найти не удается. В языке имеются два предиката, позволяющих удобно и явным образом определить случаи, когда целевое утверждение считается согласованным и когда несогласованным. Это предикаты true и fail.

true

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

fail

Это целевое утверждение никогда не согласуется с базой данных. Имеются две ситуации, когда этот предикат оказывается полезным. Одна из них – это использование комбинации !- fail, которая уже была описана в разд. 4.3. Конъюнкция целевых утверждений


У Клоксин читать все книги автора по порядку

У Клоксин - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ отзывы

Отзывы читателей о книге ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ, автор: У Клоксин. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.