Рефераты. Интерпретатор языка Пролог

В окно "Трассировка" выводится протокол работы программы, то каждый вызов предиката, базы данных или арифметического выражения, а также возвращаемые ими значения.

Рис. 3.7. Вид окна трассировки.

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

Общий вид корневого элемента дерева выглядит следующим образом: "Имя предиката n1 : n2", где n1 - номер предложения, n2 - номер условия в предложении.

Рис.3.8. Вид окна стека.

3.3.5 Работа с меню

Для удобства пользователя при выборе команд в программу введена система меню, которая содержит следующие пункты:

Файл

Окна

Проект

Настройка

Помощь

Меню Файл содержит следующие пункты.

Создать - позволяет создать новую программу на Прологе.

Открыть - позволяет открыть имеющийся файл и выводит стандартное окно Windows для открытия файла:

Рис.3.9. Вид окна для открытия файла.

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

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

Сохранить - позволяет сохранить файл на диск. Если файл создавался с помощью пункта меню Создать, то выводится диалоговое окно, позволяющее присвоить имя сохраняемому файлу.

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

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

<Имя печатаемого файла>

DOMAINS

<Объявления типов>

ALIAS

<Имя алиаса в Borland Database Engine, которое использует данная программа>

DATABASES

<Описание структур баз данных>

PREDICATES

<Описание параметров предикатов>

GOAL

<Имя запускаемого предиката>

CLAUSES

<Текст программы>

Выход - позволяет завершить работу программы интерпретатора Пролог.

Меню Окна позволяет открыть следующие окна:

Инспектор;

Консоль;

Редактор;

Контрольные точки;

Стек;

Трассировка.

Меню Проект содержит следующие пункты:

Опции - выводит на экран диалоговое окна с опциями проекта, в котором можно указать имя алиаса, которым будет пользоваться программа написанная на Прологе, а также имя запускаемого предиката.

Запуск - позволяет запустить Пролог-программу на исполнение.

Меню Настройка содержит пункт Параметры редактора. При выборе этого пункта появляется диалоговое окно, в котором можно выбрать тип и размер шрифта для окна редактора.

Меню Помощь содержит следующие пункты:

Предметный указатель - загружает help-файл и показывает главную страницу.

О программе - выводит окно с информацией о программе.

3.4 Описание процесса выполнения программы, написанной на

языке Пролог

Выполнение программы, написанной на языке Пролог, ведется с использованием алгоритма бэктрекинга.

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

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

3.5 Общие сведенья об интерпретаторе

Данная версия языка Пролог совместима по синтаксису с языком Turbo Prolog с некоторыми отличиями.

Поддерживаются следующие простые типы данных:

Integer - целочисленный тип;

Real - число с плавающей запятой;

String - строка;

Boolean - логический тип (имеет два значение True - истина и False - ложь).

Составные типы:

Список - используется для представления массивов данных. Количество элементов в списке не ограничено.

Структура - используется для представления массивов неоднородных данных. Количество полей в структуре не ограничено.

Составной тип - используется для совмещения нескольких типов под одним именем.

Комментарии внутри программы записываются внутри фигурных скобок.

3.6 Особенности работы Пролог-программы с базами данных

Данная версия Пролога работает со следующими видами баз данных:

Paradox 7 (или предыдущие версии);

DBase IV и DBase for Windows;

Fox Pro;

MS Access.

Для использования других видов баз данных (например, InterBase или Oracle) необходима установка драйверов этих баз данных.

Работа с базами данных производится под управлением Borland Database Engine, которая должны быть установлена на компьютер либо при установке Пролога, либо с какой-либо другой программой.

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

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

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

3.7 Описание стандартных предикатов

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

Предикаты ввода с консоли.

ReadString(<свободная переменная>) - читает с консоли строку. В качестве параметра обязательно должна передаваться свободная переменная. В противном случае будет выдано сообщение об ошибке и программа закончит свою работу.

ReadInteger(<свободная переменная>) - читает с консоли целое число.

ReadReal(<свободная переменная>) - читает с консоли реальное число.

Предикаты вывода на консоль.

Write (<переменная или константа любого типа>, ...) - печать на консоль содержание переменной. Количество аргументов у предиката произвольно. Количество аргументов у предиката произвольно. Стиль вывода на печать устанавливается в опциях проекта. Например, в процессе отладки можно включить печать имен переменных вместе с их содержимым или кавычки у строковых переменных.

WriteLn (<переменная или константа любого типа>, ...) - печать на консоль содержание переменной или константы и перевод курсора на следующую строку. Количество аргументов у предиката произвольно.

Nl - перевод курсора консоли на следующую строку.

Предикаты определения типов переменных.

IsInteger(<переменная>) - предикат является истинным, если поступающая на вход переменная - целочисленная.

IsReal(<переменная>) - проверяет, является ли переменная реальным числом.

IsNumeric(<переменная>) - проверяет, является ли переменная числовой, то есть либо реальной, либо целой. Использование функции IsNumeric предпочтительнее, чем IsInteger и IsReal, так как в ходе некоторых арифметических операций над целыми числами результат получается дробным (например, при делении).

IsString(<переменная>) - проверяет, является ли переменная строкой.

IsBoolean(<переменная>) - проверяет, является ли переменная логической.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.