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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Министерство образования и науки Российской Федерации
Московский государственный технический университет имени Н.Э. Баумана
Факультет: «Информатика и системы управления»
Кафедра «Компьютерные системы и сети»
Группа ИУ6-72
Отчет по лабораторной работе №1
«Язык программирования Prolog»
по курсу «Системы искусственного интеллекта»
Выполнили: Леонтьев С.Н.
Надольский А.В.
Преподаватель: Пугачев Е.К.
Москва 2011.
Цель работы
Целью проведения лабораторных работ является приобретение навыков разработки и реализации основных элементов систем искусственного интеллекта. Лабораторная работа посвящена инструментальному средству создания систем обработки знаний языку программирования высокого уровня Prolog.
Задание
Создать базу данных студентов.
Поля:
Реализовать функции:
Текст программы
Domains
s=string
n=integer
c=char
fio=string
avg=real
group=string
Database -db
stdda(fio,group,avg)
Database -db1
stdda1(fio,group,avg)
Predicates
start %цель
adddata %ввод новых данных
view %просмотр базы данных
tab(n)% вст авка n пробелов
sel(s)%меню выбора
sort
minfind(fio,fio)
form(fio)
liner(n) %вставка n -
printBD(s,fio,group,avg)
printData(fio,group,avg)
correct
Goal
start.
Clauses
start:-existfile("students.bd"),
makewindow(1,27,57,"Главное меню",5,15,10,35),
retractall(stdda(_,_,_)),
consult("students.bd",db),
write("1-Добавить новую запись."),nl,
write("2-Сортировка студентов по ФИО."),nl,
write("3-Просмотр БД."),nl,
write("4-Очистить БД."),nl,
write("5-Выход"),nl,
readln(S),
removewindow,
concat(S,"b",S1),
sel(S1).
start:-not(existfile("students.bd")),
makewindow(2,27,57,"Ошибка №1",5,10,7,24),
write("Файл БД не существует хотите его создать?"),nl,write("1-Да."),nl,
readln(C),removewindow,concat(C,"a",C1),
sel(C1).
sel(S):-S="1b",adddata.
sel(S):-S="3b",view.
sel(S):-S="4b",retractall(stdda(_,_,_)),save("students.bd",db),start,!.
sel(S):-S="1a",adddata.
sel(S):-S="2a",exit.
sel(S):-S="2b",sort.
sel(S):-S="5b",exit.
sel(S):-start.
adddata:-makewindow(3,27,57,"Ввод новой записи",7,17,10,40),
write("Введите Фамилию И.О.:"),readln(F),
write("Введите группу:"),readln(G),
write("Введите средний балл:"),readreal(A),
retractall(stdda(F,G,A)),
assert(stdda(F,G,A),db),
save("students.bd",db),
removewindow,
start.
view:-printBD("Содержимое БД students.bd",_,_,_).
view:-readln(X),removewindow,start.
tab(N):-N>0,write(" "),Z=N-1,tab(Z);
N=0.
liner(N):-N>0,write("-"),Z=N-1,liner(Z);
N=0.
printBD(HD,X1,Y1,Z1):-makewindow(4,27,57,HD,1,5,24,70),
write("| Фамилия И.О."),tab(28),
write("| Группа | Средний бал |"),nl,
liner(66),nl,printData(X1,Y1,Z1).
printData(X,Y,Z):-stdda(X,Y,Z),str_real(Z1,Z),
write("| ",X),str_len(X,T),T1=40-T,tab(T1),
write("| ",Y),str_len(Y,T2),T3=7-T2,tab(T3),
write("| ",Z1),str_len(Z1,Z2),Z3=8-Z2,tab(Z3),write("|"),nl
sort:-stdda(T,_,_),minfind(T,T1),form(T1),fail.
sort:-not(stdda(_,_,_)),correct,retractall(stdda1(_,_,_)).
minfind(FIO,RES):-stdda(FIO1,_,_),FIO>FIO1,
FIO<>FIO1,minfind(FIO1,RES).
minfind(FIO,RES):-FIO=FIO1,RES=FIO.
form(X):-stdda(X,Y,Z),
assertz(stdda1(X,Y,Z),db1),
retractall(stdda(X,Y,Z),db),
fail.
correct:-stdda1(X,Y,Z),
assertz(stdda(X,Y,Z),db),
retractall(stdda1(X,Y,Z)),
save("students.bd",db),
fail.