- •Кафедра Информационных систем и вычислительной техники Национального минерально-сырьевого университета «Горный"
- •Содержание
- •История развития и современное состояние языка prolog
- •Тенденции в истории развития языка Prolog
- •Области применения языка Prolog
- •Современные реализации языка Prolog
- •Поддержка веб-технологий в реализацях Prolog
- •Основы разработки prolog-программ
- •Общие сведения о языке Prolog
- •Понятие факта, правила, запроса и процедуры
- •Механизм сопоставления и поиска с возвратом
- •Основные элементы языка Prolog
- •Среда разработки программ pie и система swi-prolog
- •Основы работы в консоли Prolog
- •Основы работы с программными файлами
- •Справка и помощь в среде swi-Prolog
- •Основы трассировки и отладки в среде pie и swi- Prolog
- •Графические интерфейсы на базе swi-Prolog/xpce
- •Загрузка и запуск программ swi-Prolog'a
- •Использование ярлыков для запуска программ
- •Использование командных и скриптовых сценариев
- •Среда разработки turbo-prolog
- •Структура программы на Turbo Prolog'e
- •Оболочка системы Turbo Prolog
- •Отладка и трассировка программ
- •Работа с простейшими программами в Turbo Prolog'e
- •Работа с графикой в Turbo Prolog'e
- •Среда разработки visual prolog
- •Интегрированная среда разработки
- •Разработка консольного проекта
- •Разработка gui проекта на Visual Prolog'e
- •Prolog — язык логического программирования
- •Системы основанные на знаниях
- •Логические модели и логическое программирование
- •Простейшие конструкции языка предикатов
- •Предикатные формулы
- •Определение правильно построенной формулы
- •Логический вывод
- •6.6.1. Правило резолюции для простых предложений
- •Правило резолюции для сложных предложений
- •Простая резолюция сверху вниз
- •Общая резолюция сверху вниз
- •Унификаторы и примеры унификации
- •Решение задач и извлечение ответа
- •Приложение 1. Запуск Turbo-Prolog в ос Windows 7
- •1. Стандартные предикаты ввода данных.
- •Предикаты преобразования данных
- •Предикаты работы с окнами.
- •Предикаты работы с файлами.
- •Предикаты управления экраном.
- •Предикаты обработки строк.
- •Предикаты работы с графикой.
- •Разные предикаты.
- •Правила вычисление атрибутов экрана.
- •Приложение 3. Пример программы построения дерева синтаксического анализа
- •Интеллектуальные информационные системы prolog - язык разработки интеллектуальных и экспертных систем
Предикаты управления экраном.
Синтаксис предиката |
Назначение предиката |
scr_char( Строка , Столбец , Символ ) (integer,integer,integer) -- (i,i,io) |
Выводит символ на экран с текущим атрибутом в позицию, указанную номером строки и столбца. В случае (о) - возвращает значение символа. |
scr_attr( Строка , Столбец , Атрибут ) (integer,integer,integer) -- (i,i,io) |
Устанавливает или возвращает атрибут символа на экране в позиции, указанной строкой и столбцом. Атрибут - положительное целое число, определяющее цвет и мерцание символа |
field_str( Строка , Столбец , Длина , СтроковаяПеременная ) (integer,integer,integer,string) -- (i,i,i,io) |
Если строка и столбец указывают на позицию внутри текущего окна, и поле данной длины, начинающееся с этой позиции, может быть помещено в это окно, то значение, с которым сцеплен аргумент Стро- коваяПеременная, будет занесено в эту позицию, причем будет записано столько символов, сколько указано аргументом Длина. В случае (о) предикат возвращает значение поля. |
field_attr( Строка,Столбец , Длина , Атр ) (integer,integer,integer,integer) -- (i,i,i,i) |
Если строка и столбец указывают на позицию внутри текущего окна, и поле данной длины, начинающееся с этой позиции, может быть помещено в это окно, то все позиции этого поля будут иметь атрибут Атр. |
cursor( Строка , Столбец ) (integer,integer) -- (i,i) (o,o) |
Помещает курсор в указанную позицию текущего окна или возвращает позицию. |
attribute( Атрибут ) (integer) -- (io) |
Устанавливает значение атрибута Атрибут по умолчанию для всех позиций экрана. |
Предикаты обработки строк.
frontchar( Строка , ПервыйСимвол , ОстатокСтроки ) ( string , char , string ) -- (i,io,io) (o,i,i)
Предикат действует так, как если бы было определено равенство Строка = Первый- Символ + ОстатокСтроки, и либо Строка - связанная переменная, либо оба последних параметра - связанные переменные. В случае (i,i,i) предикат истинен, если это равенство справедливо.
fronttoken( Строка , Знак , ОстатокСтроки ) ( string , string , string ) -- (i,io,io) (o,i,i)
Здесь Строка = Знак + ОстатокСтроки либо связанная переменная, либо оба последних параметра - связанные переменные. Предикат успешно выполняется, если второй аргумент связан с первым знаком строки, а третий аргумент - с ее остатком. Под знаком подразумевается последовательность символов, являющаяся - либо именем, соответствующим синтаксису Пролога; либо числом (предшествующий ему знак +,- и т.п. рассматривается отдельно); либо символом, но не пробелом.
frontstr( Длина , ВходнаяСтрока , НачалоСтроки , ОстатокСтроки )
( integer , string , string , string ) -- (i,i,o,o)
Предикат разделяет ВходнуюСтроку на две части. НачалоСтроки будет содержать столько символов, сколько указано первым аргументом, при этом ОстатокСтроки будет связан с оставшимися символами.
concat( Строка1 , Строка2 , Строка3 ) ( string , string , string ) -- (i,i,o) (i,o,i) (io,i,i)
Предикат осуществляет конкатенацию первого и второго аргументов; результат связывается с третьим аргументом (Строка3=Строка1+Строка2). Аргументы Строка1 и Строка2 должны быть связанными.
str_len( Строка,Длина ) ( string , integer ) -- (i,i),(i,o)
Предикат выполняется успешно, если в случае (i,i) первый аргумент имеет столько символов, сколько указано вторым; в случае (i,o) второй аргумент будет связан с числом символов Строки.
isname( Строка ) ( string ) -- (i) Предикат выполняется успешно, если аргумент яв
ляется именем, соответствующим синтаксису Турбо-Пролога.
