Swi prolog online как запустить программу

Система логического программирования на встроенном SWI‑Prolog

Файлы и ресурсы

Системные файлы DLL

Имя Описание Примечание
libswipl.dll библиотека ядра The Prolog kernel
pthreadGC2.dll библиотека потоков выполнения POSIX thread runtime library (32-bits)
libgmp-10.dll библиотека арифметики повышенной точности The GNU Multiple Precision Arithmetic Library

Файлы DLL для расширения системы (плагины)

Имя Описание Примечание
memfile.dll библиотека временных файлов в памяти Memory files
readutil.dll библиотека утилиты быстрого чтения Reading lines, streams and files

Ресурсные архивы

Имя Описание Примечание
gd_pl_state.dat файл сохраненного состояния Generating Runtime Applications

Для разработчиков

Ссылка на ресурс Описание
gd_pl.pl генерация файла сохраненного состояния
gd_pl_state папка с файлами для сохраненного состояния, не входящими в стандартную поставку SWI-Prolog

PL-классы

Под термином PL-класс понимается класс, предназначенный на для взаимодействия со встроенным SWI‑Prolog.

How To Run Prolog Program in SWI Prolog | How To Run Prolog Program in Windows | How To Install SWI


Соответственно, экземпляр PL-класса будет называться PL‑объект.

TgsPLClient

Класс клиента SWI-Prolog. Иерархия TObject Методы Initialise(AParams: String): Boolean
Инициализация SWI-Prolog. IsInitialised: Boolean
Проверка инициализации SWI-Prolog. Call(APredicateName: String; AParams: TgsPLTermv): Boolean
Краткая форма для OpenQuery, NextSolution, Cut объекта TgsPLQuery, порождающая одно решение. Call2(AGoal: String): Boolean
Выполнение терма (аналог предиката once/1). Cleanup: Boolean
Очистка SWI-Prolog (деинициализация). Compound(AGoal: Unsigned short; AFunctor: String; ATermv: TgsPLTermv)
Компоновка терма из функтора (имени терма) и аргументов (вектора термов). LoadScript(AScriptID: Integer): Boolean
Загрузка Пролог-скрипта по идентификатору. LoadScriptByName(AScriptName: String): Boolean
Загрузка Пролог-скрипта по имени. ExtractData(ADataSet: TClientDataSet; APredicateName: String; ATermv: TgsPLTermv)
Извлечение данных Пролог-запроса в клиентский набор данных. MakePredicatesOfSQLSelect(ASQL: String; ATr: TIBTransaction; APredicateName: String; AFileName: String; AnAppend: Boolean): Integer
Формирование Пролог-фактов на основе SQL-запроса. MakePredicatesOfDataSet(ADataSet: TDataSet; AFieldList: String; APredicateName: String; AFileName: String; AnAppend: Boolean): Integer
Формирование Пролог-фактов на основе клиентского набора данных. SavePredicatesToFile(APredicateName: String; ATermv: TgsPLTermv; AFileName: String)

Prolog 2: Установка и работа с SWI Prolog


Выгрузка данных Пролог-запроса в файл. Свойства Debug: Boolean
Режим отладки.

TgsPLQuery

Класс запроса SWI-Prolog. Иерархия TObject Методы Close
Закрытие Пролог-запроса. Cut
Отсечение следующих решений Пролог-запроса (выполнения предиката). NextSolution
Поиск следующего решения Пролог-запроса (выполнения предиката). OpenQuery
Открытие Пролог-запроса и поиск первого решения (выполнение предиката). Свойства Eof: Boolean
Признак поиска решения Пролог-запроса (выполнения предиката). PredicateName: String
Имя предиката (функтор). Termv: TgsPLTermv
Аргументы предиката (вектор термов).

Читайте также:
Является ли число простым программа паскаль

TgsPLTermv

Класс вектора термов SWI‑Prolog. Иерархия TObject Методы PutAtom(Idx: Unsigned short; AValue: String)
Передача по ссылке в терм данных типа Atom. PutDate(Idx: Unsigned short; AValue: Date)
Передача по ссылке в терм данных типа Date. PutDateTime(Idx: Unsigned short; AValue: Date)
Передача по ссылке в терм данных типа DateTime. PutFloat(Idx: Unsigned short; AValue: Real)
Передача по ссылке в терм данных типа Float. PutInt64(Idx: Unsigned short; AValue: Int64)
Передача по ссылке в терм данных типа Int64. PutInteger(Idx: Unsigned short; AValue: Integer)
Передача по ссылке в терм данных типа Integer. PutString(Idx: Unsigned short; AValue: String)
Передача по ссылке в терм данных типа String. PutVariable(Idx: Unsigned short)
Передача по ссылке в терм данных типа Variable (сброс ссылки в изначальное состояние). ReadAtom(Idx: Unsigned short): String
Считывание по ссылке из терма данных типа Atom. ReadDate(Idx: Unsigned short): Date
Считывание по ссылке из терма данных типа Date. ReadDateTime(Idx: Unsigned short): Date
Считывание по ссылке из терма данных типа DateTime. ReadFloat(Idx: Unsigned short): Real
Считывание по ссылке из терма данных типа Float. ReadInt64(Idx: Unsigned short): Int64
Считывание по ссылке из терма данных типа Int64. ReadInteger(Idx: Unsigned short): Integer
Считывание по ссылке из терма данных типа Integer. ReadString(Idx: Unsigned short): String
Считывание по ссылке из терма данных типа String. Reset
Сброс вектора термов (выполнение метода PutVariable для всего вектора термов). ToString(Idx: Unsigned short): String
Считывание по ссылке терма и преобразование к строке. ToTrimQuotesString(Idx: Unsigned short): String
Считывание по ссылке терма и преобразование к строке без обрамляющих кавычек. Свойства DataType(Idx: Unsigned short): Integer
Тип данных. Size: Unsigned short
Размер вектора термов. Term(Idx: Unsigned short): Unsigned short
Ссылка на терм.

Пролог-скрипты

Pl_Examples_Script.png

Примеры использования PL-объектов

Pl_Examples.png

Учебный пример. Игра крестики-нолики

Xo_game15o9.png

Средства разработки

SWI-Prolog Editor

SWI-Prolog_Editor.png

SWI-Prolog graphical tracer

Swi_graphical_tracer.png

Источник: gsbelarus.com

Некоторые операции и предикаты SWI-Prolog

Программирование в SWI-Prolog возможно в разных вариантах:

· с помощью стандартной offline-среды[6] программирования (http://www.swi-prolog.org);

Рис. 1. Стандартная offline-среда программирования SWI-Prolog

· с помощью offline-среды программирования SWI-Prolog-Editor (http://lakk.bildung.hessen.de/netzwerk/faecher/informatik/swiprolog/indexe.html);

Рис. 2. Среда программирования SWI-Prolog-Editor

· с помощью стандартной online-среды[7] программирования SWI-Prolog (http://swish.swi-prolog.org);

Рис. 3. Стандартная online-среда программирования SWI-Prolog

Читайте также:
Программа статистической сводки включает в себя такие этапы как

Дальнейшая работа со SWI-Prolog рассматривается на примере online-среды.

1.4. Лабораторная работа № 1
Представление фактов и правил в Прологе

Цель работы: освоение основ программирования на языке Пролог и online-среды программирования SWI-Prolog.

Рекомендации по выполнению работы

Для перехода в режим редактирования и исполнения программ необходимо нажать на кнопку «Program» (см. рис. 3).

В левой панели осуществляется редактирование программы, содержащей факты и правила.

В правой нижней панели выполняется набор вопросов и запуск их на исполнение с помощью кнопки «Run!».

Панель вопросов
Панель ответов
Панель редактирования программ

Рис. 4. Режим редактирования и исполнения программ

В правой верхней панели интерпретатор SWI-Prolog выдает ответы на вопросы. В случае если на вопрос может быть получено более одного ответа, с помощью кнопок «Next», «10», «100» и «1,000» можно вывести на панель дополнительные ответы.

Необходимый теоретический материал для создания программы изложен в подразд. 1.2–1.3.

Задание на выполнение работы

Разработать программу «Родственные связи», отвечающую следующим требованиям.

А. Программа должна содержать общие для всех заданий факты и правила:

Б. По индивидуальному заданию добавить в программу правила (от 3 до 5) для определения следующих типов родственников:

12) зять (муж дочери, сестры, золовки);

13) невестка (жена сына для его матери, жена брата);

14) свекор (отец мужа);

15) свекровь (мать мужа);

16) тесть (отец жены);

17) теща (мать жены);

18) сноха (жена сына для его отца);

19) сват (отец одного из супругов для родителей другого супруга);

20) сватья (мать одного из супругов для родителей другого супруга);

21) свояк (муж сестры жены);

22) свояченица (сестра жены);

23) свояки (лица, женатые на двух сестрах);

24) деверь (родной брат мужа для жены);

25) золовка (сестра мужа);

26) шурин (брат жены);

27) дядя (брат отца или матери по отношению к детям, племянникам, кроме того, дядей является муж тетки);

28) тетка (сестра отца или матери по отношению к детям, племянникам, кроме того, теткой является жена дяди);

29) племянник (ребенок брата или сестры);

30) внучатый племянник (внук брата или сестры);

31) внучатая племянница (внучка брата или сестры);

32) двоюродный дедушка (дядя отца или матери);

33) двоюродная бабушка (тетка отца или матери);

34) двоюродный брат – кузен (сын родного дяди или тети);

35) двоюродная сестра – кузина (дочь родного дяди или тети);

36) двоюродный дядя (двоюродный брат отца и матери);

37) двоюродная тетка (двоюродная сестра отца и матери);

Читайте также:
До какого года действует программа 450 тыс за третьего

38) мачеха (неродная мать ребенка);

39) отчим (неродной отец ребенка);

40) падчерица (неродная дочь по отношению к одному из супругов);

41) пасынок (неродной сын по отношению к одному из супругов);

42) сводный брат (сын неродного родителя (мачехи, отчима) по отношению к детям родного);

43) сводная сестра (дочь неродного родителя (мачехи, отчима) по отношению к детям родного);

44) стрый – стрий (дядя по отцу (брат отца)).

45) уй – вуй (дядя по матери (брат матери)).

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

Г.Отчет должен содержать:

· вопросы с ответами, иллюстрирующие корректность работы программы;

Источник: cyberpedia.su

Лабораторная. Лаба. Лабораторная работа 1 знакомство с swiprolog. Запуск простой программы по дисциплине логическое программирование

Единственный в мире Музей Смайликов

Самая яркая достопримечательность Крыма

Скачать 325.73 Kb.

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ЛАБОРАТОРНАЯ РАБОТА №1

Цель работы: знакомство с интерпретатором SWI/PROLOG, включая использование меню, создание программных файлов, запуск и трассировку программ на SWI/PROLOG.

Работа с базой начинается с ее загрузки, c помощью предиката consult().

Используя имеющуюся базу, ввести следующие запросы и посмотреть на результаты (рис. 1-2).

%Любит ли Билл теннис?

%Кто любит теннис?

?-любит(‘Марк’,Что),любит(‘Эллен’,Что).%Что любят Марк и Эллен?

Рисунок 1 – Имеющаяся база

После запуска и ввода запроса, справа отображается результат запроса.

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

Эллен любит чтение.

Марк любит компьютеры.

Джон любит бадминтон.

Эрик любит чтение.

Бадминтон — это вид спорта.

Теннис — это вид спорта.

Футбол — это вид спорта.

Бейсбол — это вид спорта

Спортсмен — это тот, кто любит какой-нибудь вид спорта (рис. 3).

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

Рисунок 4 – Результат запроса

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

Рисунок 5 – Использование debug

После нахождения первого ответа выдается false, так как ответов больше не найдено.

Построить запросы на основании стихотворения Джани Родари «Чем пахнут ремесла». Запросы и результат показаны на рисунках 6-7.

Рисунок 6 – Запросы

Рисунок 7 – Результат выполнения запросов

Источник: topuch.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru