Задание 1.1
Для того чтобы набрать текст программы воспользуйтесь встроенным текстовым редактором. Чтобы создать новый файл выберете команду File/New, в диалоговом окне укажите имя нового файла, например, тест. Для редактирования уже созданного файла с использованием встроенного редактора можно воспользоваться командой меню File/Edit. Набейте программу 1 (текст программы выше по тексту) и сохраните ее (File/Save buffer).
Внешний вид редактора
Красным цветом подсвечиваются предикаты в заголовках предложений, которые с точки зрения синтаксиса SWI/PROLOGа корректны. Указатель “курсор” можно использовать для выверки (например, корректности) расстановки скобок. Зелёным цветом выделяются комментарии ,темно-красным цветом - переменные. Подчеркиванием выделяются предикаты в теле правила, которые совпадают с предикатом заголовка,- таким образом акцентируется внимание на возможном зацикливании программы.
Чтобы запустить программу, сначала необходимо ее загрузить в SWI/PROLOG для выполнения. Это делается выбором опции Compile/Compile buffer из окна редактора. Результат компиляции отображается в окне интерпретатора SWI/PROLOGа. Там же указываются ошибки, возникшие при компиляции, чаще всего они отображаются и во всплывающем окне ошибок. Обычно перед компиляцией предлагается сохранить файл.
Другой способ загрузить уже существующий файл – это выполнение команды Consult в подменю File диалогового окна SWI/PROLOG. На экране появится диалоговое окно.
Укажите имя файла, который вы хотите загрузить, и выберите Открыть. Если вы попытаетесь загрузить для выполнения файл, в котором есть синтаксические ошибки, то он не загрузится, а вы получите сообщение об ошибке в главном окне. Угловые скобки << >> будут выделять место, где встретилась ошибка. По умолчанию файлы, ассоциируемые с SWI/PROLOG имеют расширение .pl.
Файлы также можно загрузить, используя встроенный предикат:
consult(Имя файла или имена нескольких файлов).
ПРИМЕРЫ
consult(Test). % test – имя файла
consult([Test1,Test2]). % Загрузка двух файлов.
consult(‘test.pl’).[1]
Для выполнения загрузки этот предикат нужно написать в главном окне после приглашения интерпретатора (?-), которое означает, что интерпретатор ждет запрос.
Запрос
- это конструкция вида:
?- P1,P2,…,Pn.
которая читается "Верно ли P1 и P2 и ... Pn ?". Предикаты Pi называются подцелями запроса.
Запрос является способом запуска механизма логического вывода, т.е фактически запускает Пролог-программу.
Для просмотра предложений загруженной базы знаний можно использовать встроенный предикат listing.
Проверьте загрузку исходного файла, задайте запрос
?-listing.
Введите запрос:
?-любит('Билл',бейсбол). % Любит ли Билл бейсбол?
Получите ответ yes (да) и новое приглашение к запросу.
Введите следующие запросы и посмотрите на результаты.
?-любит('Билл', теннис). %Любит ли Билл теннис?
?-любит(Кто, теннис). %Кто любит теннис?
?-любит('Марк',Что),любит('Эллен',Что).%Что любят Марк и Эллен?
?-любит(Кто, Что). %Кто что любит?
?-любит(Кто, _). %Кто любит?
При поиске решений в базе Пролога выдается первое решение.
ПРИМЕР
?-любит(Кто,теннис).
Кто = 'Эллен'
Если необходимо продолжить поиск в базе по этому же запросу и получить альтернативные решения, то вводится точка с запятой ;.
Если необходимо прервать выполнение запроса, (например, нужно набрать другой запрос), используйте клавишу b.
Если Вы хотите повторить один из предыдущих запросов, воспользуйтесь клавишами "стрелка вверх" или "стрелка вниз".
Перезагрузить, измененные во внешнем редакторе, файлы можно, используя встроенный предикат make. Например так:
?-make.
Перезагружаются все измененные файлы и файл начальной инициализации pl.ini; о его назначении будет оговорено позднее.