Сборник задач по логическому программированию для студентов специальности «030100 информатика»




НазваниеСборник задач по логическому программированию для студентов специальности «030100 информатика»
страница11/11
Дата публикации08.07.2013
Размер0.73 Mb.
ТипСборник задач
skachate.ru > Информатика > Сборник задач
1   2   3   4   5   6   7   8   9   10   11
^

Лабораторная работа №8. Создание динамической базы данных. Предикаты для работы с базой данных


Для описания предикатов динамической базой данных предназначен раздел database. База данных (БД) называется динамической потому, что во время работы можно добавлять, удалять содержащиеся в них утверждения. Другая важная особенность динамических баз данных состоит в том, что она может быть записана на диск и считана с диска в оперативную память.

Иногда предпочтительно иметь часть информации БД в виде утверждений статической БД. Эти данные заносятся в динамическую сразу после активизации программы. В общем случае, предикаты статической БД имеют другое имя, но ту же самую форму представления данных, что и предикаты динамической.

Предикаты для работы с динамической БД:

Asserta заносит новый факт в БД, новый факт помещается перед всеми уже внесенными утверждениями.

Assertz помещает новый факт в БД за всеми имеющимися утверждениями.

Retract удаляет утверждение из БД.

Save сохраняет находящуюся в оперативной памяти БД в текстовом файле. Синтаксис этого предиката таков Save(DOS_file_name)

consult(DOS_file_name) считывает в память файл БД

readterm(Domain,Term) используется для чтения из файла объектов, относящихся к определенному в программе домену.

Предикат findall позволяет собрать все имеющиеся в базе данные в список, который может быть полезен при дальнейшей работе.

В качестве примера рассмотрим БД по игрокам футбольных команд, БД допускает следующие операции: добавление, удаление и просмотр данных. Эта программа создает БД и содержит её в оперативной памяти. Для работы с ней использовался предикат player с аргументами p_name-имя игрока, k_name-название клуба, p_number-номер игрока, pos-позиция игрока, height -рост, weight-вес, nfl_exp-стаж выступлений, college-учебное заведение)
Программа 32. Динамическая база данных «Футбольная команда»

Domains

p_name,k_name, pos, college = string

p_number, height, weight, nfl_exp = integer

Database

dplayer(p_name, k_name,p_number,pos, height,weight,nfl_exp, college)

Predicates

repeat

do_mbase

assert_database

menu

process(integer)

clear_database

player(p_name, k_name,p_number,pos, height,weight,nfl_exp, college)

error

Goal

do_mbase.

Clauses

repeat.

repeat:-repeat.

/*База данных футбол*/

player("Иванов Иван","Спартак",13,"з", 205,90,3, "ГГПИ").

player("Петров Петр","Динамо",96,"пз", 185,78,4, "ГТК").

player("Сидоров Денис","Локомотив",69,"в", 190,88,2, "ГТУ").

player("Васечкин Илья","Торпедо",5,"в", 195,80,5, "ГГПИ").

player("Алексеев Дима","ЦСКА",1,"н", 165,67,2, "ГТК").

player("Карпов Павел","Зенит",12,"н",170,74,1, "ГКК").

/*конец начальных данных*/

assert_database:-

player(P_name,K_name,P_number,Pos,Height,Weight,Nfl_exp,College), assertz(dplayer(P_name,K_name,P_number,Pos,Height,Weight,Nfl_exp,

College)),

fail.

assert_database:-!.
clear_database:-

retract(dplayer(_,_,_,_,_,_,_,_)),

fail.

clear_database:-!.

do_mbase :-

assert_database,

makewindow(1,7,7," FOOTBALL DATABASE ",0,0,25,80),

menu,

clear_database.

menu :-

repeat, clearwindow,

nl,

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

write(" * 1. Добавление нового игрока в БД * "),nl,

write(" * 2. Удаление игрока из БД * "),nl,

write(" * 3. Просмотр данных * "),nl,

write(" * 4. Выход из программы * "),nl,

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

write(" Пожалуйста, сделайте свой выбор 1, 2, 3 or 4 : "),

readint(Vibor),nl,process(Vibor),Vibor = 4,!.

/* Добавление информации об игроке в БД */

process(1) :-

makewindow(2,7,7,"Добавление данных",2,20,18,58),shiftwindow(2),

write("Введите, пожалуйста:"),nl,

write("Имя игрока: "), readln(P_name),

write("Название клуба: "), readln(K_name),

write("Номер игрока: "), readint(P_num),

write("Позицию: "), readln(Pos),

write("Рост: "), readint(Ht),

write("Вес: "), readint(Wt),

write("Стаж выступлений: "), readint(Exp),

write("Название учебного заведения: "), readln(College),

assertz(dplayer(P_name, K_name, P_num,Pos,Ht,Wt,Exp, College)),

write(P_name," добавлен в БД"), nl,!,

write("Press space bar. "), readchar(_),

removewindow, shiftwindow(1).

/* Удаление */

process(2) :-

makewindow(3,7,7,"Удаление данных",10,30,7,40),shiftwindow(3),

write("Введите имя удаляемого игрока: "), readln(P_name),

retract(dplayer(P_name,_,_,_,_,_,_,_)),

write(P_name," удален из БД "), nl, !,

write("Press space bar."), readchar(_), removewindow,

shiftwindow(1).

/* Просмотр данных об игроке*/

process(3) :-

makewindow(4,7,7," Просмотр ", 7,30,16,47), shiftwindow(4),

write("Введите имя для просмотра: "), readln(P_name),

dplayer(P_name,T_name,P_number,Pos,Ht,Wt,Exp,College),nl,

write(" Имя игрока : ",P_name),nl,

write(" Название клуба : ",T_name),nl,

write(" Номер игрока : ",P_number),nl,

write(" Позиция : ",Pos),nl,

write(" Рост : ",Ht), nl,

write(" Вес : ",Wt),nl,

write(" Стаж выступлений : ",Exp), nl,

write(" Учебное заведение : ",College),nl, nl,!,

write("Press space bar"), readchar(_),

removewindow, shiftwindow(1).

process(3) :-

makewindow(5,7,7," Неудача ",14,7,5,60), shiftwindow(5),

write("К сожалению, данных нет."),nl,

write("Извините, пока!"),nl,!,

write("Press space bar."),readchar(_),

removewindow,shiftwindow(1).

/* Выход */

process(4) :-

write("До новых встреч! "),readchar(_),exit.

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

process(Vibor):-

Vibor<1, error; Vibor>5, error.

error:-

write("Пожалуйста выберите число от 1 до 4"),

write("(Press the spase bar to continue)"),readchar(_).
Задание для самостоятельной работы

Модифицируйте программу, добавив в меню пункты:

  1. Вывод списка игроков.

  2. Сохранение данных в файл.

  3. Выборка данных по 1 из трех критериев.
^

Лабораторная работа №9. Применение языка для решения задач ИИ. Создание экспертных систем


Пример 1.Рассмотрим пример ЭС для идентификации породы собак. Она помогает потенциальному хозяину выбрать породу собаки в соответствие с определенными критериями.

В данной ЭС используются следующие характеристики:

  1. Короткая шерсть;

  2. Длинная шерсть;

  3. Рост меньше 30 дюймов;

  4. Рост меньше 22 дюймов;

  5. Низкопосаженный хвост;

  6. Длинные уши;

  7. Хороший характер

  8. Вес больше 100 фунтов.

Каждая характеристика для конкретной породы либо верна, либо не верна. Для каждой породы справедливы следующие характеристики:

Таблица 13.

Характеристики собак

Порода

Характеристики

Английский бульдог


1,4,5,7

Гончая

1,4,6,7

Дог

1,3,6,7,8

Амер.гончая

1,5,6,7

Кокер-спаниэль

2,4,5,6,7

Ирландский сеттер

2,3,6

Колли

2,3,5,7

Сенбернар

2,5,7,8


Программа 33. «Эксперт по породам собак»

*Эксперт по породам собак*/

/*Назначение: Демонстрация работы ЭС*/

Domains

n=integer

list=n*

dog=symbol

Predicates

rule(n,dog,list)

cond(n,string)

do_expert

show_menu

do_consulting

process(n)

test(n,list)

topic

repeat

Goal

do_expert.

Clauses

rule(1,"английский бульдог",[1,4,5,7]).

rule(2,"гончая",[1,4,6,7]).

rule(3,"дог",[1,3,6,7,8]).

rule(4,"американская гончая",[1,5,6,7]).

rule(5,"коккер-спаниель",[2,4,5,6,7]).

rule(6,"ирландский сеттер",[2,3,6]).

rule(7,"колли",[2,3,5,7]).

rule(8,"сенбернар",[2,5,7,8]).
/*Характеристики*/

cond(1,"короткошерстная").

cond(2,"длинношерстная").

cond(3,"рост ниже 30 дюймов").

cond(4,"рост ниже 22 дюймов").

cond(5,"низкопосаженный хвост").

cond(6,"большие уши").

cond(7,"хороший характер").

cond(8,"вес более 100 фунтов").

do_expert:-

makewindow(1,7,5 ,"ЭКСПЕРТНАЯ СИСТЕМА",0,0,25,80),

show_menu.
repeat.

repeat:-repeat.
/*Вывод меню*/

show_menu:-

repeat,

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

write("*****Добро пожаловать!*****"),nl,

write("* *"),nl,

write("*****1-консультация********"),nl,

write("*****2-список**************"),nl,

write("*****3-выход***************"),nl,

write("* *"),nl,

write("****Сделайте свой выбор****"),nl,

readint(X),

process(X),fail.
/*Обработка 1 пункта меню “Консультация”*/

process(1):-

do_consulting,

readchar(_),

shiftwindow(1),

clearwindow.

/*Обработка 2 пункта меню “Вывод списка”*/

process(2):-

makewindow(2,7,7,"",5,20,12,25),

topic,

readchar(_),

shiftwindow(1),

clearwindow.

/* Обработка 3 пункта меню “Выход”*/

process(3):-

removewindow,

exit.

/*Вывод пород собак*/

topic:-

rule(X,Y,_),

write(X,". ",Y),

nl,fail.

topic.

/*Консультация*/

do_consulting:-

test(1,List),

rule(_,X,List),

write("Ваш выбор:" ,X),!.

do_consulting:-

write("Мне жаль, что не смог Вам помочь.").

/*Тестирование*/

test(9,[]):-!.

test(1,[N|List]):-

cond(N,Text),

makewindow(2,7,7,"",5,20,10,35),

write("Вопрос:-",Text,"?"),nl,

write("1-да"),nl,

write("0-нет"),nl,

readint(R),R=1,!,test(3,List).

test(1,List):- test(2,List),!.

test(N,[N|List]):-

cond(N,Text),

makewindow(2,7,7,"",5,20,10,35),

write("Вопрос:-",Text,"?"),nl,

write("1-да"), nl,

write("0-нет"), nl,

readint(R),M=N+1,

R=1,!,test(M,List).

test(N,List):-M=N+1,test(M,List).
Задания для самостоятельной работы

Разработать экспертную систему, тему выбрать самостоятельно. Отчет должен содержать следующие пункты:

  1. Тема ЭС.

  2. Назначение, возможности программы.

  3. Разработать структурно-функциональную схему.

  4. Определить базу знаний, разработать механизм вывода, интерфейс программы.

  5. По каким параметрам программу можно отнести к классу ЭС.


Рекомендуемая литература

  1. Братко И. Программирование на языке Пролог для ИИ: Пер. с англ.- М.- Мир, 1990

  2. Ин Ц., Соломон Д. Использование Турбо-Пролога: Пер. с англ.-М.:Мир, 1993.-608 с.,ил.

  3. Марселлус Д. Программирование экспертных систем на ТурбоПрологе: Пер. с англ./Предисл. С.В.Трубицына.-М.-Финансы и статистика, 1994.-256с.:ил.

  4. Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог: Пер.с англ.-М.: Мир, 1990.-235 с., ил.

  5. Таунсенд К., Фохт Д. Проектирование и программная реализация экспертных систем на персональных ЭВМ: Пер. с англ./Предисл. Г.С.Осипова.-М. .-Финансы и статистика, 1990.-320с.:ил.


Литература


  1. Братко И. Программирование на языке Пролог для ИИ: Пер. с англ.- М.- Мир, 1990

  2. Доорс Дж., Рейблейн А.Р., Вадера С. Пролог-язык программирования будущего: Пер. с англ.- М.- Финансы и статистика, 1990

  3. Стобо Д.Ж. Язык программирования Пролог: Пер. с англ.- М.- Радио и связь, 1993.-368 с.:ил.

  4. Ин Ц., Соломон Д. Использование Турбо-Пролога: Пер. с англ.-М.:Мир, 1993.-608 с.,ил.

  5. Информатика. Задачник-практикум в 2 т./Под ред. И.Г.Семакина, Е.К. Хеннера: Том.2.-М.:-БИНОМ. Лаборатория знаний, 2003.-278 с.:ил.

  6. Информатика:Учеб.пособие для студ.пед.вузов/А.В.Могилев, Н.И.Пак, Е.К.Хеннер;Под ред. Е.К.Хеннера.-3-е изд., перераб. и доп.-М.:Издательский центр “Академия”, 2004.-848 с.

  7. Каймин В.А. Основы компьютерной технологии.- М.:Финансы и статистика, 1992.-208 с.: ил.

  8. Каймин В.А. Информатика: Учебник.-2-е изд., перераб. и доп.-М.-ИНФРА-М,2001.-272 с.

  9. Кларк К., Маккей Ф. Введение в логическое программирование на микро-Прологе. Пер. с англ.- М.- Радио и связь, 1987.

  10. Клоксин У., Меллиш К. Программирование на языке Пролог: Пер.с англ.-М.: Мир, 1987.

  11. Малпас Дж. Реляционный язык Пролог и его применение. Пер. с англ./Под ред. В.Н. Соболева.-М.-Наука, 1990

  12. Марселлус Д. Программирование экспертных систем на ТурбоПрологе: Пер. с англ./Предисл. С.В.Трубицына.-М.-Финансы и статистика, 1994.-256с.:ил.

  13. Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог: Пер.с англ.-М.: Мир, 1990.-235 с., ил.

  14. Таунсенд К., Фохт Д. Проектирование и программная реализация экспертных систем на персональных ЭВМ: Пер. с англ./Предисл. Г.С.Осипова.-М. .-Финансы и статистика, 1990.-320с.:ил.

  15. Хоггер К. Введение в логическое программирование: Пер. с англ.-М.: Мир, 1988.-348 с.

Пособие подготовлено на кафедре информатики Глазовского государственного педагогического института им. В.Г. Короленко


Сборник задач по логическому программированию

Составители:
Акбашева Альфия Мударисовна

Камалов Ренат Рифович


1   2   3   4   5   6   7   8   9   10   11

Похожие:

Сборник задач по логическому программированию для студентов специальности «030100 информатика» iconРуденко Т. В. Сборник задач и упражнений по языку Си. ( учебное пособие для студентов II курса )
Представлены задачи и упражнения по языку Си и программированию на нем. Рассматриваемая версия Си соответствует международному и...
Сборник задач по логическому программированию для студентов специальности «030100 информатика» iconСборник Задач по гидравлике Учебное пособие для студентов-заочников
Бровченко П. Н., Прохасько Л. С., Кузьмина Н. Д. Сборник задач по гидравлике: Учебное пособие для студентов-заочников. – Челябинск:...
Сборник задач по логическому программированию для студентов специальности «030100 информатика» iconМетодические указания по курсовому проектированию для студентов очной...
Составлены в соответствии с рабочей программой курсов “Проектирование информационных систем” для студентов специальности 230100-...
Сборник задач по логическому программированию для студентов специальности «030100 информатика» iconМетодические указания по выполнению дипломной работы для студентов...
Ргтэу по специальности «Прикладная информатика ( в экономике)» и устанавливают требования к ее тематике, содержанию, объему, результатам...
Сборник задач по логическому программированию для студентов специальности «030100 информатика» iconРабочая программа по дисциплине «экономическая информатика» для студентов...
Задание и методические указания к контрольной работе для студентов заочного отделения
Сборник задач по логическому программированию для студентов специальности «030100 информатика» iconИнформатика Лабораторные работы для студентов специальности аэп заочного отделения (2 семестр)
Приведены методические указания по выполнению лабораторных работ по дисциплине "Информатика", изучаемой во 2 семестре
Сборник задач по логическому программированию для студентов специальности «030100 информатика» iconМетодические указания предназначены для студентов специальности 351400...
Методические указания предназначены для студентов специальности 351400 «Прикладная информатика в экономике» очной и заочной формы...
Сборник задач по логическому программированию для студентов специальности «030100 информатика» iconСборник задач по физике пласта практикум для студентов направления...
С23 Сборник задач по физике пласта: практикум по дисциплине «Физика пласта» для студентов направления «Прикладная геология» и направления...
Сборник задач по логическому программированию для студентов специальности «030100 информатика» iconСборник задач по финансовому менеджменту для специальности 080502...

Сборник задач по логическому программированию для студентов специальности «030100 информатика» iconМетодические указания к выполнению контрольной работы для студентов...
Теория экономических информационных систем : методические указания к выполнению контрольной работы для студентов заочного отделения...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2014
контакты
skachate.ru
Главная страница