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

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

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Министерство образования и науки Российской Федерации
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ИМ. Н.Э. БАУМАНА
Факультет «Информатика и системы управления»
Кафедра «Компьютерные системы и сети»
Лабораторная работа №1
по курсу «Системы искусственного интеллекта»
студента группы ИУ6-72
Кононенко Олега
Вариант 10
2008
Цель работы
Целью проведения лабораторных работ является приобретение навыков разработки и реализации основных элементов систем искусственного интеллекта. Первая часть методических указаний посвящена инструментальному средству создания систем обработки знаний языку программирования высокого уровня Prolog.
Задание
Создать базу данных студентов. Поля: ФИО, ГРУППА, СРЕДНЯЯ ОЦЕНКА. Реализовать
функции:
- просмотр полей;
- сортировка по ФИО.
Текст программы
%Лабораторная работа №1 вариант 10
%автор Кононенко О.С.
Domains
s=string
n=integer
c=char
fio=string
avg=real
group=string
Database -db
stdda(fio,group,avg) %основная БД 1
Database -db1
stdda1(fio,group,avg)%БД 2 для сортировки
Predicates
start %цель
adddata %ввод новых данных
view %просмотр базы данных
find(fio) %поиск
tab(n)% вст авка n пробелов
sel(s)%меню выбора
sort%Сортировка БД по возрастанию
minfind(fio,fio)%Поиск ми нимального элемента в БД 1
form(fio)%формирование БД2
liner(n) %вставка n «-»
printBD(s,fio,group,avg)%Печать содержимого БД 1
printData(fio,group,avg)%Вспомогательное высказывание при печати БД
correct% Корректировка файла БД после сортировки
Goal
start.
Clauses
start:-existfile("students.bd"),
makewindow(1,27,57,"Главное меню",5,10,9,35),
retractall(stdda(_,_,_)),
consult("students.bd",db),
write("1-Добавить новую запись."),nl,
write("2-Поиск студента."),nl,
write("3-Сортировка студентов по ФИО."),nl,
write("4-Просмотр БД."),nl,
write("5-Очистить БД."),nl,
write("6-Выход"),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,write("2-Нет."),nl,
readln(C),removewindow,concat(C,"a",C1),
sel(C1).
sel(S):-S="1b",adddata.
sel(S):-S="4b",view.
sel(S):-S="5b",retractall(stdda(_,_,_)),save("students.bd",db),start,!.
sel(S):-S="1a",adddata.
sel(S):-S="2a",exit.
sel(S):-S="3b",sort.
sel(S):-S="2b",makewindow(3,27,57,"Поиск записи",7,17,3,60),
write("Введите Фамилию И.О.:"),
readln(STR),
removewindow,
find(STR).
sel(S):-S="6b",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.
find(FIO):-printBD("Результаты поиска",FIO,_,_);
readln(X),
removewindow,
start.
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=8-T2,tab(T3),
write("|",Z1),str_len(Z1,Z2),Z3=13-Z2,tab(Z3),write("|"),nl,fail.
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.