Вход/Регистрация
Программирование на языке пролог
вернуться

Клоксин У.

Шрифт:

foo(a,b,c)

может быть истолкована только как структура с функтором too от трех аргументов, а не, например, что-нибудь типа

foo(a,','(b,c))

или

foo(','(a,','(b,c)))

Если бы мы хотели записать именно этот последний терм, то это следовало бы сделать так

foo((a,b,c))

Правило относительно операторов высокого приоритета касается только нескольких операторов, таких как ':-' и ';'. Оно означает, что запись вида:

?- retract(parent(A,B):- father(A,B)).

является синтаксически неправильной в смысле Пролога-10. Чтобы сделать ее правильной, нужно добавить пару скобок.

В том случае, если вы работаете с терминалом или с операционной системой, в которых не предусмотрено одновременного использования прописных и строчных букв, можно использовать имеющийся в Прологе-10 альтернативный вариант синтаксиса. В этом синтаксисе отличие переменных от атомов состоит в том, что имена переменных начинаются с литеры подчеркивания «_». Для перехода на этот вариант синтаксиса предусмотрен встроенный предикат nolc(нет строчных букв). Другой встроенный предикат, lс(строчные буквы), позволяет снова переключиться на нормальный синтаксис.

И еще одно маленькое замечание. Функтор '.' (с двумя аргументами) в Прологе-10 не является заранее определенным оператором. При желании вы можете определить его сами, хотя в этом нет необходимости, если при работе со списками вы всегда пользуетесь специальным способом задания списков.

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

В Прологе-10 предусмотрены ограничения, с которыми пользователь вряд ли столкнется на практике. Приоритеты операторов должны быть в диапазоне от 1 до 1200. Целые числа должны находиться в диапазоне от -131 072 до 131 071, однако в ходе вычислений целых выражений промежуточные результаты могут выходить за эти границы. Вещественные числа (с плавающей точкой) не предусмотрены.

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

В Прологе-10 предусмотрена очень полезная возможность протоколирования сеанса работы. При обычной работе с Прологом система фиксирует в файле plolog.logна диске почти все, что появляется на терминале. После того как работа закончена, вы можете просмотреть этот файл и точно определить, что происходило во время сеанса работы. Файл prolog.logсодержит полезную информацию о том, что и когда делала ваша программа, и какие изменения вы в ней делали. На тот случай, если вы не хотите протоколировать все подряд, предусмотрены встроенные предикаты, обеспечивающие включение и выключение протоколирования.

В Прологе-10 можно прервать выполнение программы путем одновременного ввода комбинации символов «CONTROL С». Система отвечает приглашением и ждет от вас указаний о том, какое действие нужно выполнить далее. Набор допустимых команд включает break, continue(продолжить выполнение программы), exit(выход из Пролога), traceи notrace. Последние две команды вызывают продолжение выполнения программы после изменения вида или объема трассировки. Команда breakпозволяет приостановить выполнение текущей программы и предоставляет вам возможность работы с новой «копией» Пролог-системы. После выхода из команды breakприостановленная программа продолжит свое выполнение.

В Прологе-10 в качестве литеры, играющей роль признака конца файла используется комбинация «CONTROL Z» (клавиша CONTROL одновременно с Z). Ее ввод, в зависимости от ситуации, в которой вы находитесь, приводит к выходу из Пролога, к завершению режима breakили к завершению выполнения предиката consult. Встроенный предикат readв случае выхода на конец файла сравнивает свой аргумент с атомом end of file.

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

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

Компиляция

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

Различия во встроенных предикатах

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

Действие предиката displayвсегда состоит в выдаче аргументов этого предиката на терминал, а не в текущий файл вывода, как было описано.

  • Читать дальше
  • 1
  • ...
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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