Экспертные системы Visual Prolog 5.2
Формулировка задачи:
Привет всем, кто нибудь может подсказать какой предикат относится к базе правил, а какой к базе данных?
Database - framedb%Описание фреймовой модели с помощью БД
type(INTEGER,STRING,SLIST)%Описывает номер типа, название типа, список названий параметров
classroom(STRING,INTEGER,ILIST)%Связывает номер дома, указатель на тип, список параметров
ntype(INTEGER)%Содержит номер последнего добавленного типа
Решение задачи: «Экспертные системы Visual Prolog 5.2»
textual
Листинг программы
predicates
Database - framedb
type(INTEGER,STRING,SLIST)
classroom(STRING,INTEGER,ILIST)
ntype(INTEGER)
predicates
getname(SLIST)
checkanswer(INTEGER,SLIST)
getvalue(SLIST,ILIST)
allparam(SLIST,ILIST,STRING,STRING)
nondeterm init
task_win_eh : EHANDLER
clauses
getname([NAME|L]):-
NAME=dlg_GetStr("Имя параметра","Параметры имени:",""),
NAME<>"",
P=dlg_Ask("Хотите продолжить ввод имени параметра?",["Да","Нет" ]),
checkanswer(P,L).
checkanswer(0,L):-getname(L).
checkanswer(1,[]).
getvalue([],[]).
getvalue([NAME|L1],[VALUE|L2]):-
concat(NAME,": ",STR),
VALUESTR=dlg_GetStr("Значения параметров",STR,""),
str_int(VALUESTR,VALUE),
VALUE>=0,
getvalue(L1,L2).
allparam([],[],S,S).
allparam([NAME|L1],[VALUE|L2],STR,S):-
format(STRVALUE,"%",VALUE),
concat(STR,NAME,STR2),
concat(STR2,": ",STR3),
concat(STR3,STRVALUE,STR4),
concat(STR4,"\n",STR5),
allparam(L1,L2,STR5,S).
init:-ntype(_).
init:-asserta(ntype(0)).