БОЛЬШАЯ НАУЧНАЯ БИБЛИОТЕКА  
рефераты
Добро пожаловать на сайт Большой Научной Библиотеки! рефераты
рефераты
Меню
Главная
Налоги
Начертательная геометрия
Оккультизм и уфология
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование и комп-ры
Радиоэлектроника
Региональная экономика
Режущий инструмент
Реклама и PR
Ресторанно-гостиничный бизнес бытовое обслуживан
Римское право
Русский язык культура речи
РЦБ ценные бумаги
САПР
Сексология
Семейное право
Социология
Страховое право
Строительство архитектура
Таможенное право
Теория государства и права
Технология
Таможенная система
Транспорт
Физика и энергетика
Философия
Финансы деньги и налоги
Физкультура и спорт
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика и эстетика
Сочинения по литературе и русскому языку
Рефераты по теории государства и права
Рефераты по теории организации
Рефераты по теплотехнике
Рефераты по товароведению
Рефераты по трудовому праву
Рефераты по туризму
Рефераты по уголовному праву и процессу
Рефераты по управлению
Рефераты по менеджменту
Рефераты по металлургии
Рефераты по муниципальному праву
Биографии
Рефераты по психологии
Рефераты по риторике
Рефераты по статистике
Рефераты по страхованию
Рефераты по схемотехнике
Рефераты по науке и технике
Рефераты по кулинарии
Рефераты по культурологии
Рефераты по зарубежной литературе
Рефераты по логике
Рефераты по логистике
Рефераты по маркетингу
Рефераты по международному публичному праву
Рефераты по международному частному праву
Рефераты по международным отношениям
Рефераты по культуре и искусству
Рефераты по кредитованию
Рефераты по естествознанию
Рефераты по истории техники
Рефераты по журналистике
Рефераты по зоологии
Рефераты по инвестициям
Рефераты по информатике
Исторические личности
Рефераты по кибернетике
Рефераты по коммуникации и связи
Рефераты по косметологии
Рефераты по криминалистике
Рефераты по криминологии
Новые или неперечисленные
Без категории

Базы и банки знаний

Базы и банки знаний

Санкт-Петербургский государственный технический университет

Кафедра системного анализа и управления

РАСЧЕТНОЕ ЗАДАНИЕ

Дисциплина: базы и банки знаний.

Тема: язык Пролог.

Выполнил студент группы 3082/2 Торопов. К.Д.

Проверил

“__”___________2001г.

Санкт-Петербург

2001

Содержание.

1.Теоретическая часть……………………………………………………………3.

2.Постановка

задачи......................................................................

.....................…4.

3.Текст

программы...................................................................

...............................4.

4.Выводы....................................................................

.............................................13.

5.Литература................................................................

............................................13.

Теоретическая часть.

Prolog является компиляторно-ориентированным языком

программирования высокого уровня и предназначен для программирования задач

из области искусственного интеллекта(ИИ) . Как язык программирования ИИ он

особенно хорош для создания экспертных систем, динамических баз данных,

программ с применением естественно-языковых конструкций; он также может

быть использован для других задач общего характера. Prolog имеет окна,

цветную графику и интерактивные средства ввода-вывода, что свидетельствует

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

Prolog – это декларативный язык, программы на котором содержат

объявления логических взаимосвязей, необходимых для решения задачи.

Обозначения, используемые в Prolog для выражения логических взаимосвязей,

унаследованы из логики предикатов.

Prolog имеет внутренние подпрограммы для выполнения

сопоставления и связанных с ним процессов. Они являются неотъемлемой частью

языка и называются внутренними подпрограммами унификации. Эти подпрограммы

выполняют сопоставление целей и подцелей с фактами и головами правил для

того , чтобы доказать (или вычислить) эти цели или подцели. Эти же

подпрограммы определяют, сгенерированы ли новые подцели правой части

правила. Программист в соответствии с логическим синтаксисом Prolog

объявляет, какие факты и правила дают тот или иной результат при различных

подцелях, а внутренние подпрограммы унификации выполняют оставшуюся часть

работы.

Факты и правила являются утверждениями, которые образуют данные

программы на Prolog. Правила имеют левую часть и правую часть. Левая часть

правила истинна, если истинна правая часть правила. Правила генерируют

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

Prolog использует откаты для определения альтернативных путей вычисления

цели или подцели. Если подцель оказалась неуспешной, а указатели отката

были установлены, то для предыдущей подцели будет сделана попытка добиться

успеха, начиная с точки отката.

Prolog позволяет выполнять целый ряд операций со списками. Их

перечень включает: доступ к объектам списка, проверка на принадлежность к

списку, разделение списка на два, слияние двух списков, сортировку

элементов списка в порядке возрастания или убывания.

Prolog обеспечивает возможности для удобной и эффективной

обработки файлов. Сюда можно включить встроенные предикаты для обработки и

закрытия файлов, чтения из файла и записи в файл, изменения данных в файле,

а также дозапись в уже существующий файл. Данные из файла могут

обрабатываться либо как непрерывный поток символов, либо как

структурированные объекты типа записей базы данных.

В Prolog имеются специальные средства для организации баз

данных. Эти средства рассчитаны на работу с реляционными базами данных, так

как Prolog особенно хорош для написания диалоговой системы именно для

реляционной БД: внутренние унификационные процедуры языка осуществляют

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

присваивают значения ещё не определённым. К тому же механизм отката

позволяет находить все имеющиеся ответы на сделанный вопрос.

Постановка задачи.

Требуется написать программу учёта книг – название, автор(или список

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

нужную книгу, добавить/удалить книгу, изменить содержимое нужной записи и

сохранить всё в файл.

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

DOMAINS

name,izd,aut=string

list=aut*

god=integer

file=datafile;

indexfile

GLOBAL DATABASE

kniga(name,list,izd,god)

PREDICATES

nondeterm repeat /*повтор*/

nondeterm menu /*основное меню*/

nondeterm menu_modify /*меню модификации*/

nondeterm process(integer) /*различные операции из перечня меню*/

nondeterm proc(integer) /*различные операции из перечня меню модификации*/

nondeterm do_dbase /*цель*/

nondeterm dbassert(dbasedom) /*добавление данных*/

nondeterm dbass(dbasedom,string,string) /*модуль ввода данных*/

nondeterm readlist(list) /*чтение списка*/

nondeterm writelist(list) /*вывод списка*/

nondeterm dbretract(dbasedom) /*удаление данных*/

nondeterm dbret(dbasedom,string,string)/*модуль удаления данных*/

nondeterm dbret1(dbasedom,real)/*вспомогательный модуль удаления данных*/

nondeterm dbread(dbasedom)/*чтение данных*/

nondeterm dbrd(dbasedom,string,string) /*модуль для выборки данных*/

nondeterm dbaaccess(dbasedom,real)/*вспомогательный модуль выборки и

поиска данных*/

nondeterm append(list,list,list) /*присоединение списка*/

nondeterm delete_it(aut,list,list) /*удаление элемента списка*/

GOAL

do_dbase.

CLAUSES

/*Диалог с этой базой данных осуществляется по принципу меню.

Основываясь на запросе пользователя, СУБД активизирует

соответствующие процессы для удовлетворения этого запроса.*/

/*задание цели в виде правила*/

do_dbase :-

menu.

menu:-

repeat,

nl,

write("***********************************"),nl,

write(" 1.Add a book to database "),nl,

write(" 2.Delete a book from database"),nl,

write(" 3.View a book from database "),nl,

write(" 4.Modify a book in database "),nl,

write(" 5.Quit from this program "),nl,

write("***********************************"),nl,

nl,

write("Please enter your choice,1,2,3,4,5: "),

readint(Choice),nl,

Choice>0,Choice0,C=0,

filepos(datafile,Datpos,0),

readdevice(datafile),

readterm(dbasedom,Term),!,

filepos(indexfile,-9,1),

/*Этот предикат вызывает запись на диск содержимого внутреннего

буфера индексного файла. Таким образом dbret1 предотвращает возможность

работы с

данными, которые были удалены до этого.*/

flush(indexfile),

writedevice(indexfile),

writef("%7.0\n",-1),

readdevice(keyboard),

writedevice(screen).

/*осуществляет поиск нужного индекса в индексном файле*/

dbret1(Term,_):-

readdevice(indexfile),

readreal(Datpos1),

dbret1(Term,Datpos1).

/* Правило dbrd извлекает информацию из файла datafile */

dbrd(Term,Indexfile,Datafile):-

openread(datafile,Datafile),

openread(indexfile,Indexfile),

/*испльзуется вспомогательный модуль dbaaccess, осуществляющий

поиск и выборку данных из файла БД*/

dbaaccess(Term,-1),

closefile(datafile),

closefile(indexfile).

/*Этот предикат читает данные, логически связанные со значением

индекса,

задаваемым переменной Datapos.*/

dbaaccess(Term,Datpos):-

Datpos>=0,

filepos(datafile,Datpos,0),

readdevice(datafile),

readterm(dbasedom,Term).

/*Это правило пытается найти в базе такую запись, индекс которой

присутствует в индексном файле. Если индекс находится, то правило успешно;

если нет, то неуспешно.В случае успеха переменная Term получает нужные

пользователю значения*/

dbaaccess(Term,_):-

readdevice(indexfile),

readreal(Datpos1),

dbaaccess(Term,Datpos1).

/* Правила работы со списками */

/*Чтение списка*/

readlist([H|T]):-

write("> "),nl,

readln(H),!,

readlist(T).

readlist([]).

/*Вывод списка*/

writelist([H|T]):-

write(H, " "),

writelist(T).

writelist([]).

/*Присоединение списка*/

append([],L,L).

append([N|L1],L2,[N|L3]):-

append(L1,L2,L3).

/*Удаление элемента списка*/

delete_it(_,[],[]).

delete_it(X,[H|T],L):-H=X,!,delete_it(X,T,L).

delete_it(X,[H|T],[H|L]):-delete_it(X,T,L).

Выводы.

Была написана программа, реализующая поставленную задачу. При написании

программы автор ознакомился с основными понятиями, касающимися баз данных,

использованием предикатов и правил для работы с файлами, списками,

элементами списков. Работа над составлением программы позволила детально

ознакомиться с вопросами организации данных в БД и извлечения из неё

необходимой пользователю информации.

Литература.

Ц. Ин, Д. Соломон «Использование Турбо-Пролога» , Издательство «Мир»





17.06.2012
Большое обновление Большой Научной Библиотеки  рефераты
12.06.2012
Конкурс в самом разгаре не пропустите Новости  рефераты
08.06.2012
Мы проводим опрос, а также небольшой конкурс  рефераты
05.06.2012
Сена дизайна и структуры сайта научной библиотеки  рефераты
04.06.2012
Переезд на новый хостинг  рефераты
30.05.2012
Работа над улучшением структуры сайта научной библиотеки  рефераты
27.05.2012
Работа над новым дизайном сайта библиотеки  рефераты

рефераты
©2011