АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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

Читайте также:
  1. X. примерный перечень вопросов к итоговой аттестации
  2. Буду на работе с драконом примерно до 21:00.
  3. Булевы функции. Способы задания. Примеры.
  4. В некоторых странах, например в США, президента заменяет вице-
  5. В примере
  6. В странах Востока (на примере Индии и Китая)
  7. Вания. Одной из таких областей является, например, регулирова-
  8. Вашим сообщениям, например, спеть «С днем рождения»
  9. Виды знания. Контрпример стандартному пониманию знания
  10. Власть примера. Влияние с помощью харизмы
  11. Внешний долг (внешняя задолженность): пример России
  12. Вопрос 11. Герои романтических поэм М. Ю. Лермонтова (на примере одного произведения).

 

Программа добавляет и удаляет из базы данных новый факт.

 

add:- write('Введите имя мужчины: '),

read_string(S),

assertz(man(S)).

 

out:- write('Список имен мужчин:\n'),

man(S),write(S),nl.

 

del:- write('Введите имя мужчины: '),

read_string(S),

retractall(man(S)).

 

main:- consult('db.pro'),add,out,del,out.

 

Файл db.pro первоначально содержит следующие факты:

 

man(oleg).

woman(zina).

man(alexandr).

man(petr).

 


Задание к работе

 

1. Составить программу, которая решает задачу соответствующего варианта.

2. Подобрать тестовые данные, проверяющие работу программы.

3. Провести анализ ошибок и полученных результатов, составить отчет о проделанной работе.

 

 

Лабораторная работа № 6

Использование возможностей логического сервера AMZI! Prolog в среде Delphi

 

Цель работы

 

1. Научиться использовать Пролог в Delphi приложениях.

2. Выработать навыки использования Пролога в DELPHI приложениях.

 

Задание для подготовки к работе

 

Изучить материал по теме «Компонент LSEngine»

 

Порядок выполнения работы

 

1. Решить задачу соответствующего варианта.

2. Подобрать тестовые данные и протестировать программу на компьютере.

3. Составить отчет о проделанной работе.

 

Содержание отчета

 

1. Исходные тексты программ на языке Пролог и Object Pascal (Delphi).

2. Наборы тестовых данных и результаты работы программ.

3. Перечень и анализ ошибок.

4. Выводы по работе.

 

Основные понятия

 

Amzi! Prolog не предоставляет достаточно удобного интерфейса для работы с базой данных. Но возможности языка Amzi! Prolog можно использовать и в других языках и средах программирования, например Borland Delphi. В состав пакета Amzi! Prolog входит компонент, написанный для использования в Delphi (LSEngine). С помощью свойств и методов этого компонента разработчик приложения может производить запросы к откомпилированной базе данных Пролога.

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

Этот компонент содержит большое количество методов, позволяющих производить запросы, модифицировать динамическую базу данных, работать с потоками и т.п. Ниже приведены часто используемые процедуры и функции для работы с компонентом LSEngine.

 

Процедуры для подключения Пролога к приложению

 

procedure Init(xplname: String);– инициализация базы;

procedure InitLS(xplname: String); – инициализация базы;

procedure InitLSXP(p: pointer); – инициализация базы;

procedure InitLSX; – инициализация базы;

procedure AddLSX(lsxname: String); – добавление базы;

procedure AddPred(pname: String; parity: TArity; pfunc: TExtPred); – добавление предиката;

procedure InitPreds(PIptr: TPredInitPtr);– инициализация предиката;

procedure Load(xplname: String);– чтение базы из файла;

procedure LoadXPL(xplname: String);– чтение базы из файла;

function Main: Boolean;– доказательство главной цели;

procedure Reset;– сброс базы;

procedure Close;– закрытие базы;

procedure CloseLS;– закрытие базы.

 

Функции и параметры предикатов

 

procedure GetParm(n: integer; dt: TDType; p: pointer);– получение параметра;

function GetPStrParm(n: integer): string;– получение строкового параметра;

function GetIntParm(n: integer): integer;– получение целого параметра;

function GetLongParm(n: integer): longint;– получение параметра типа длинное целое;

function GetShortParm(n: integer): longint;– получение параметра типа короткое целое;

function GetFloatParm(n: integer): single;– получение параметра вещественного типа;

function GetParmType(n: integer): TPType;– получение типа параметра;

function StrParmLen(n: integer): integer;– получение длины параметра;

function UnifyParm(n: integer; dt: TDType; p: pointer): Boolean;– унификация параметра;

function UnifyPStrParm(n: integer; s: string): Boolean;– унификация строкового параметра;

function UnifyAtomParm(n: integer; s: string): Boolean;– унификация параметра типа атом;

function UnifyIntParm(n: integer; i: integer): Boolean;– унификация параметра целого типа;

function UnifyLongParm(n: integer; i: longint): Boolean;– унификация параметра типа длинное целое;

function UnifyShortParm(n: integer; i: longint): Boolean;– унификация параметра типа короткое целое;

function UnifyFloatParm(n: integer; f: single): Boolean;– унификация параметра вещественного типа.

 

Вызов Пролога из Delphi

 

function Exec(var tp: TTerm): Boolean;– выполнение доказательства;

function ExecStr(var tp: TTerm; s: PChar): Boolean;– выполнение доказательства, записанного в строке;

function ExecPStr(var tp: TTerm; s: string): Boolean;– выполнение доказательства, записанного в строке;

function Call(var tp: TTerm): Boolean;– вызов терма;

function CallStr(var tp: TTerm; s: PChar): Boolean;– выполнение терма, записанного в строке;

function CallPStr(var tp: TTerm; s: string): Boolean;– выполнение терма, записанного в строке;

function Redo: Boolean;– восстановление;

procedure ClearCall;– очистка стека вызовов.

 

Добавление и удаление фактов из динамической базы данных

 

procedure Asserta(t: TTerm);– выполнение предиката Asserta;

procedure Assertz(t: TTerm);– выполнение предиката Assertz;

procedure Retract(t: TTerm);– выполнение предиката Retract;

procedure AssertaStr(s: PChar);– выполнение предиката Asserta над строковой записью;

procedure AssertzStr(s: PChar);– выполнение предиката Assertz над строковой записью;

procedure RetractStr(s: PChar);– выполнение предиката Retract над строковой записью;

procedure AssertaPStr(s: string);– выполнение предиката Asserta над строковой записью;

procedure AssertzPStr(s: string);– выполнение предиката Assertz над строковой записью;

procedure RetractPStr(s: string);– выполнение предиката Retract над строковой записью.

 

Преобразование строк и термов

 

procedure TermToStr(t: TTerm; s: PChar; n: integer);– преобразование терма в строку;

procedure TermToStrQ(t: TTerm; s: PChar; n: integer);– преобразование терма в кодовую строку;

procedure StrToTerm(var tp: TTerm; s: PChar);– преобразование строки в терм;

function TermToPStr(t: TTerm): string;– преобразование терма в строку;

function TermToPStrQ(t: TTerm): string;– преобразование терма в кодовую строку;

procedure PStrToTerm(var tp: TTerm; s: string);– преобразование строки в терм.

 

Создание типов Пролога

 

procedure MakeAtom(var tp: TTerm; s: string);– создание атома;

procedure MakeStr(var tp: TTerm; s: PChar);– создание строкового типа;

procedure MakePStr(var tp: TTerm; s: string);– создание строкового типа;

procedure MakeInt(var tp: TTerm; i: longint);– создание целого типа;

procedure MakeFloat(var tp: TTerm; f: Single);– создание вещественного типа;

procedure MakeAddr(var tp: TTerm; p: pointer);– создание адреса.

 

Получение значения термов Пролога

function GetTermType(t: TTerm): TPType;– получение типа терма;

procedure GetTerm(t: TTerm; dt: TDType; p: pointer);– получение терма;

function GetPStrTerm(t: TTerm): string;– получение имени терма;

 

function GetIntTerm(t: TTerm): integer;– получение значения целого терма;

function GetLongTerm(t: TTerm): longint;– получение значения терма типа длинное целое;

function GetShortTerm(t: TTerm): longint;– получение значения терма типа короткое целое;

function GetFloatTerm(t: TTerm): single;– получение значения терма вещественного типа.

 

Работа с функторами

 

procedure GetFA(t: TTerm; var s: string; var ap: TArity);– получение арности функтора;

function GetFunctor(t: TTerm): string;– получение функтора;

function GetArity(t: TTerm): integer;– получение арности;

procedure MakeFA(var tp: TTerm; s: string; a: TArity);– создание арности функтора;

function UnifyArg(var tp: TTerm; n: integer; dt: TDType; p: pointer): Boolean;– унификация арности функтора;

function UnifyPStrArg(var tp: TTerm; n: integer; s: string): Boolean;– унификация арности функтора;

function UnifyAtomArg(var tp: TTerm; n: integer; s: string): Boolean;– унификация аргументов;

function UnifyIntArg(var tp: TTerm; n: integer; i: integer): Boolean;– унификация целого аргумента;

function UnifyLongArg(var tp: TTerm; n: integer; i: longint): Boolean;– унификация аргумента типа длинное целое;

function UnifyShortArg(var tp: TTerm; n: integer; i: longint): Boolean;– унификация аргумента типа короткое целое;

function UnifyFloatArg(var tp: TTerm; n: integer; f: single): Boolean;– унификация аргумента вещественного типа;

procedure GetArg(t: TTerm; n: integer; dt: TDType; p: pointer);– получение аргумента;

function GetPStrArg(t: TTerm; n: integer): string;– получение строкового аргумента;

function GetIntArg(t: TTerm; n: integer): integer;– получение целочисленного аргумента;

function GetLongArg(t: TTerm; n: integer): longint;– получение аргумента типа длинное целое;

function GetShortArg(t: TTerm; n: integer): longint;– получение аргумента типа короткое целое;

function GetFloatArg(t: TTerm; n: integer): single;– получение аргумента вещественного типа;

function GetArgType(t: TTerm; n: integer): TPType;– получение типа аргумента;

function StrArgLen(t: TTerm; i: integer): integer;– получение длины строкового аргумента;

function Unify(t1: TTerm; t2: TTerm): Boolean;– выполнение унификации.

 

Работа со списком

 

procedure MakeList(var tp: TTerm);– создание списка;

procedure PushList(var tp: TTerm; t: TTerm);– помещение элемента в список;

function PopList(var tp: TTerm; dt: TDType; p: pointer): TRC;– извлечение элемента из списка;

function PopPStrList(var tp: TTerm; var s: string): TRC;– извлечение строкового элемента из списка;

function PopIntList(var tp: TTerm; var i: integer): TRC;– извлечение целочисленного элемента из списка;

function PopLongList(var tp: TTerm; var i: longint): TRC;– извлечение элемента типа длинное целое из списка;

function PopShortList(var tp: TTerm; var i: longint): TRC;– извлечение элемента типа короткое целое из списка;

function PopFloatList(var tp: TTerm; var f: single): TRC;– извлечение элемента вещественного типа.

 

Работа с потоками

 

procedure SetStream(st: TPStream; i: integer);– открытие потока;

function GetStream(st: TPStream): integer;– получение потока;

procedure SetInput(pfunc1: TGetC; pfunc2: TUngetC);– установка вводного потока;

procedure SetOutput(pfunc1: TPutC; pfunc2: TPutS);– установка выводного потока;

 

Получение версии языка

 

function GetPVersion: string;– получение версии языка.


 

Обработка ошибок

 

procedure ErrMsg(s: PChar);– сообщение об ошибке;

function ErrPMsg: string;– сообщение об ошибке;

procedure ErrRaise(s: string);– защищенный блок;

procedure ErrReadBuf(var i: LongInt; s: PChar);– чтение буфера ошибки.

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.011 сек.)