Программирование на языке Пролог - [116]

Шрифт
Интервал


&.?((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 х у г)

вызывает сопоставление z с суммой х и у, если х и у конкретизированы. С другой стороны, если сначала конкретизированы у и r, а х – нет, то х будет конкретизирован разностью z-у.

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

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

Средства отладки

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


Рекомендуем почитать
Язык PL/SQL

В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.


Введение в Direct3D8

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


Пишем драйвер Windows на ассемблере

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


Язык программирования С# 2005 и платформа .NET 2.0.

В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML.


Вариации на тему STL. Адаптер обобщенного указателя на функцию-член класса

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


Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы.