Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Доки к Прологу / PROLOG2
.TXT6. Џ®бв஥ЁҐ нЄбЇҐавле бЁб⥬.
ќЄбЇҐавлҐ бЁб⥬л (ќ‘) пў«повбп ¤®бв в®з® Ї®Їг«пал¬ Їа ў«ҐЁҐ¬
Ёбб«Ґ¤®ў Ё© ў ®Ў« бвЁ ЁбЄгбб⢥®Ј® ЁвҐ««ҐЄв . €¬ҐҐвбп 㦥
¤®бв в®з® Ў®«ми®© ®Їлв Є®¬¬ҐазҐбЄ®Ј® ЁбЇ®«м§®ў Ёп в ЄЁе Їа®Ја ¬¬ Ё
Ў®Ј в п «ЁвҐа вга Ї® Ёе Ї®бв஥Ёо Ё ЁбЇ®«м§®ў Ёо. Ћ¤ Є® ⥬ ҐйҐ
Ґ § Єалв , в Є Є Є ®бв овбп ҐаҐиҐлҐ § ¤ зЁ - Ї®«г票п б ¬Ёе
§ Ё© ®Ў Є®ЄаҐвле ®Ў« бвпе Ё § Ї®«ҐЁп Ё¬Ё ®Ў®«®зҐЄ ќ‘,
б ¬®®Ўг票Ґ ќ‘, ®ЎйҐЁҐ ҐбвҐб⢥®¬ п§лЄҐ Ё в.¤.
‚宦¤ҐЁҐ ў Їа®Ў«Ґ¬ вЁЄг ¬Ґв®¤®ў Ї®бв஥Ёп ќ‘ ҐбвҐб⢥® з вм б
Їа®Ја ¬¬ Џа®«®Ј , Є®в®алҐ ў Їа®б⥩襬 ўЁ¤Ґ пў«повбп ќ‘, в Є Є Є
ўе®¤®© § Їа®б «®ЈЁзҐбЄЁ ўлў®¤п⠢ᥠў®§¬®¦лҐ аҐиҐЁп Ё§ Ё¬ҐойЁебп
Їа ўЁ« Ё д Єв®ў. ’ ЄЁҐ ќ‘ §лў овбп "а Ў®в ойЁ¬Ё Їа ўЁ« е".
ЏаЁўҐ¤Ґ¬ ЇаЁ¬Ґа в Є®© Їа®Ја ¬¬л.
database /* Ў § ¤ ле ¤«п § Ї®¬Ё Ёп ўҐ¤Ґле ®вўҐв®ў */
xpositive(symbol, symbol)
xnegative(symbol, symbol)
predicates
do_expert_job
do_consulting
ask(symbol,symbol)
dog_is(symbol)
it_is(symbol)
positive(symbol,symbol)
negative(symbol,symbol)
remember(symbol,symbol,symbol)
clear_fact
goal
do_expert_job
clauses /* б®®ЎйҐЁҐ ® бЁб⥬Ґ */
do_expert_job:-
makewindow(1,7,7,"ќЄбЇҐав п бЁб⥬ ",1.16,22,58),
nl, write("*************************"),
nl, write(" ‚室 ў нЄбЇҐавго бЁб⥬г "),
nl, write(" ЋЇаҐ¤Ґ«ҐЁҐ Ї®а®¤ б®Ў Є"),
nl, write(" ЋвўҐвм⥠ў®Їа®бл ®"),
nl, write("ў 襩 б®Ў ЄҐ"),
nl, write(" 'yes' Ё«Ё 'no' "),
nl, write("*************************"),
nl, nl,
do_consulting, write("Ќ ¦ вм Є« ўЁиг"),
nl,readch(_), removewindow, exit.
/* ®б®ў®© ЇаҐ¤ЁЄ в dog_is */
do_consulting:-
dog_is(X),!,nl,write("Џ®а®¤ ў 襩 б®Ў ЄЁ: ",X,"."),
nl, clear_fact.
do_consulting:- nl,write("ЌҐ ¬®Јг ®ЇаҐ¤Ґ«Ёвм!"),
clear_fact.
/* ў®Їа®б " Ё¬ҐҐв «Ё б®Ў Є " <бў®©бвў® Y> */
ask(X,Y):-
write(" ‚®Їа®б :-",X, " б®Ў Є ", Y," ?"),
readln(Reply),
remember(X,Y,Reply). /* § Ї®¬Ё ЁҐ ®вўҐв */
/* Їа®ўҐаЄ «ЁзЁҐ ®вўҐв ¤ л© ЇаЁ§ Є ў Ѓ„ */
positive(X,Y):- xpositive(X,Y),!.
positive(X,Y):- not(negative(X,Y)),!, ask(X,Y).
negative(X,Y):- xnegotive(X,Y),!.
/* § Ї®¬Ё ҐЁҐ ®вўҐв ў Ѓ„ */
remember(X,Y,yes):- asserta(xpositive(X,Y)).
remember(X,Y,no):- asserta(xnegative(X,Y)).
clear_fact:- retract(xpositive(_,_)), fail.
clear_fact:- retract(xnegative(_,_)), fail.
/* ®б®ўлҐ ९தгЄжЁ®лҐ Їа ўЁ« ќ‘ */
dog_("English Bulldog"):-
it_is("short-haired dog"),
positive(has,"height under 22 inch"),
positive(has,"low-set tail"),
positive(has,"good natured personality").
dog_("Beagle"):-
it_is("short-haired dog"),
positive(has,"height under 22 inch"),
positive(has,"longer ears"),
positive(has,"good natured personality").
dog_("Gread Dane"):-
it_is("short-haired dog"),
positive(has,"weight over 100 lb"),
positive(has,"low-set tail"),
positive(has,"good natured personality").
dog_("American Foxhound"):-
it_is("short-haired dog"),
positive(has,"height under 30 inch"),
positive(has,"longer ears"),
positive(has,"good natured personality").
dog_("Cocker Spanial"):-
it_is("long-haired dog"),
positive(has,"height under 22 inch"),
positive(has,"low-set tail"),
positive(has,"longer ears"),
positive(has,"good natured personality").
dog_("Iresh Setter"):-
it_is("long-haired dog"),
positive(has,"height under 30 inch"),
positive(has,"long ears").
dog_("Collie"):-
it_is("long-haired dog"),
positive(has,"height under 30 inch"),
positive(has,"low-set tail"),
positive(has,"good natured personality").
dog_("St. Bernard"):-
it_is("long-haired dog"),
positive(has,"weight over 100 lb"),
positive(has,"low-set tail"),
positive(has,"good natured personality").
it_is(short-haired dog):- positive(has,"short_haired"),!.
it_is(short-haired dog):- positive(has,"long_haired"),!.
Љ Є ўЁ¤® Ё§ Ї®Ја ¬¬л § Ёп ® Ї®а®¤ е б®Ў ЄЁ Ёе бў®©бвў е
а §¬ҐйҐл ў Їа ўЁ« е Їа®Ја ¬¬л, зв® Ґ ўбҐЈ¤ 㤮Ў® ¤«п ®ЇҐа вЁў®Ј®
Ёе Ё§¬ҐҐЁп, ўў®¤ Ё Ґ§ ўЁбЁ¬®Ј® еа ҐЁп. Ћ¤ Є® "§ иЁвлҐ" ў
Їа®Ја ¬¬Ґ Їа ўЁ« ®ЎҐбЇҐзЁў ов Є®¬Ї Єв®бвм ќ‘ Ё Ўлбва®вг а Ў®вл.
ќ‘ б Ґ§ ўЁбЁ¬л¬ еа ҐЁҐ¬ Їа ўЁ« Ё д Єв®ў ў Ѓ„ Є« ббЁдЁЄ жЁ®®Ј®
вЁЇ ЇаҐ¤бв ў«Ґ ў б«Ґ¤го饩 Їа®Ја ¬¬Ґ, ў Є®в®а®© Ўг¤гв ॠ«Ё§®ў л
Ї®б«Ґ¤®ў вҐ«м® в ЄЁҐ е а ЄвҐалҐ ¤«п ќ‘ дгЄжЁЁ, Є Є ўў®¤,
б®еа ҐЁҐ Ё । ЄвЁ®ў ЁҐ Ў §л § Ё©, ¬Ґе Ё§¬ ўлў®¤ Ё
Є®¬¬ҐвЁа®ў ЁҐ ўлў®¤ (®ЎмпᥨҐ). ‡¤Ґбм ®ЎмҐЄвл Є« ббЁдЁжЁа®ў л
Ї® Є ⥣®аЁп¬, Є®в®алҐ § ⥬ а §¤Ґ«Ґл Ў®«ҐҐ ¬Ґ«ЄЁҐ Є ⥣®аЁЁ.
ЏаЁзҐ¬ Є ¦¤ п Ї®¤Є ⥣®аЁп е а ЄвҐаЁ§гҐвбп Ў®а®¬ ЇаЁ§ Є®ў
(гб«®ўЁ©), Є®в®алҐ ¬®Јгв Ё¬Ґвм ЇаҐдҐЄб not, в Є¦Ґ ®ЎмҐ¤Ёпвмбп
®ЇҐа в®а®¬ ¤Ё§коЄжЁЁ or.
DOMAINS
CONDITIONS = BNO* /* бЇЁб®Є ®¬Ґа®ў гб«®ўЁ©*/
HISTORY = RNO* /* бЇЁб®Є ®¬Ґа®ў Їа ўЁ«-Є ⥣®аЁ©*/
RNO, BNO, FNO = INTEGER
CATEGORY = STRING /* Є ⥣®аЁп - бва®Є®ў п ЇҐаҐ¬Ґ п */
data_file = string /* Ё¬п д ©« Ў §л §ўЁ© */
file = save_file;df /* вЁЇ ЇҐаҐ¬Ґ®© Ё¬п д ©« */
slist = string* /* бЇЁб®Є бва®Є */
DATABASE /* Ў § § Ё© */
rule(RNO,CATEGORY,CATEGORY,CONDITIONS) /* Їа ўЁ« б ®¬Ґа®¬ RNO,
Ё¬ҐҐ¬ Є ⥣®аЁЁ, Ё¬ҐҐ¬ Ї®¤Є ⥣®аЁЁ, бЇЁбЄ®¬ ®¬Ґа®ў гб«®ўЁ© */
cond(BNO,STRING) /* гб«®ўЁп б ®¬Ґа®¬ BNO Ё ⥪б⮬ */
data_file(data_file) /* Ё¬Ґ д ©«®ў Ѓ‡ ¤ЁбЄҐ */
yes(BNO) /* ®¬Ґа гб«®ўЁ© б ®вўҐв®¬ "¤ " */
no(BNO) /* б ®вўҐв®¬ "Ґв" */
fact(FNO,CATEGORY,CATEGORY) /* д Євл б ®¬Ґа®¬ FNO Ё Є ⥣®аЁ-
п¬Ё */
topic(string) /* з «млҐ Є ⥣®аЁЁ - § Ј®«®ўЄЁ */
include "tdoms.pro" /* ўбЇ®¬®Ј вҐ«мҐ ¬®¤г«Ё ¤«п */
include "tpreds.pro" /* ¤«п ॠ«Ё§ жЁЁ ¬Ґо Ё ®Є®*/
include "menu2.pro"
PREDICATES
title_go update edit_kb
list llist(HISTORY) load_know save_know
pick_dba(data_file) erase clear
proces(integer) endd(integer) listopt
evalans(char) info(CATEGORY) goes(CATEGORY)
run reverse(CONDITIONS,CONDITIONS)
reverse1(CONDITIONS,CONDITIONS,CONDITIONS)
/* ЇаҐ¤ЁЄ вл ¤«п ¬Ґе Ё§¬ ўлў®¤ */
go(HISTORY,CATEGORY)
check(RNO,HISTORY,CONDITIONS)
notest(BNO)
inpq(HISTORY,RNO,BNO,STRING)
do_answer(HISTORY,RNO,STRING,BNO,INTEGER)
/* ЇаҐ¤ЁЄ вл ¤«п ®ЎмпбҐЁп ўлў®¤ */
sub_cat(CATEGORY,CATEGORY,CATEGORY)
show_conditions(CONDITIONS,string)
show_rule(RNO,string)
show_cond(BNO,string)
report(HISTORY,string)
quest(CATEGORY,integer,integer,CATEGORY)
/* ЇаҐ¤ЁЄ вл ¤«п ¤®Ў ў«ҐЁп Є Ў §Ґ § Ё© */
topict(string)
getrnr(RNO,RNO)
getbnr(BNO,BNO)
readcondl( CONDITIONS )
help
getcond(BNO,STRING)
save_y(char,string,data_file)
wrf(string) e(char,char)
GOAL /* ѓ« ў п 楫м */
makewindow(1,49,71,"„€Ђ‹Ћѓ ‘ ќЉ‘Џ…ђ’ЌЋ‰ ‘€‘’…ЊЋ‰",4,0,20,80),
makewindow(2,14,71,"ЇаЁ¬ҐҐлҐ Їа ўЁ« ўлў®¤ ",4,0,20,80),
makewindow(5,7,0,"",0,0,24,80),
makewindow(8,23,0,"",24,0,1,80), /* бва®Є ЎҐ§ а ¬ЄЁ */
makewindow(9,14,4,"‘‚…„…Ќ€џ ‘—€’›‚Ђћ’‘џ ‘ „€‘ЉЂ",0,0,25,80),
run.
clauses
run :-
repeat, /* ®аЈ Ё§ жЁп Ї®ўв®а */
shiftwindow(8),
clearwindow,
write(" ўлЎЁа ©вҐ ¤Ґ©бвўЁҐ б Ї®¬®ймо бв५®Є "),
shiftwindow(1),
menu(6,55,7,7,
["Љ®бг«мв жЁп",
"‚ў®¤ Ў §л § Ё©",
"‘®еа ҐЁҐ Ѓ‡",
"Џа®б¬®ва Ѓ‡",
"„®Ў ў«ҐЁҐ Є Ѓ‡",
"“¤ «ҐЁҐ Ѓ‡",
"ђҐ¤ ЄжЁп Ѓ‡",
"Џ®¬®йм",
"®Ўа 饨Ґ Є DOS",
"‚л室 Ё§ Їа®Ја ¬¬л"],"¬Ґо",2,
CHOICE),
proces(CHOICE),
endd(CHOICE),!.
/*‚лЎ®а ¤Ґ©бвўЁп Ї® ўўҐ¤Ґ®¬г Choice*/
proces(0):-exit.
proces(1):-title_go.
proces(2):-load_know.
proces(3):-save_know.
proces(4):-list.
proces(5):-update.
proces(6):-erase.
proces(7):-edit_kb.
proces(8):-help.
proces(9):-write("Borland ",'\3','\2'," you"),system("").
proces(10).
endd(0).
endd(10):- clearwindow,
write("Џ®¤вўҐа¤ЁвҐ ўл室! (y,¤) "),
readchar(Ans),e(Ans,C),
C='y',exit.
/* ¬Ґе Ё§¬ ўлў®¤ */
title_go:-
goes(Mygoal), /* ўў®¤ § Ј®«®ўЄ з «м®© Є ⥣®аЁЁ */
nl,nl,go([],Mygoal),!. /* § Їа®б гб«®ўЁ© Ё
®ЇаҐ¤Ґ«ҐЁҐ Ї®¤Є ⥣®аЁ© */
title_go:- nl,
write("€§ўЁЁвҐ, ® ўўҐ¤Ґ®© Є ⥣®аЁЁ Ґв ў Ѓ‡ "),nl,update.
goes(Mygoal):-
clear,clearwindow,
topict(Topic),
repeat,
write(" ‡ Ј®«®ў®Є Ў §л § Ё© (Ѓ‡),Є®в®ал© ‚л ¬®¦ҐвҐ ўўҐбвЁ: ",Topic,
"\nЁ«Ё '?' ¤«п Їа®б¬®ва ўбҐе Ё¬ҐойЁебп ў Ѓ‡ § Ј®«®ўЄ®ў.\n ‚ў®¤ЁвҐ: "),
readln(Mygoal),
info(Mygoal),!.
topict(Topic) :- topic(Topic).
topict(Topic) :- write("‚ў®¤ ®ў®Ј® § Ј®«®ўЄ Ѓ‡ : "),
readln(Topic),assert(topic(Topic)).
go( _, Mygoal ):- /* Џа®ўҐаЄ «ЁзЁп ўўҐ¤Ґ®Ј® § Ј®«®ўЄ */
not(rule(_,Mygoal,_,_)),!,nl, /* ў Ў §Ґ § Ё© */
makewindow(11,37,-2,"‚›‚Ћ„ ќЉ‘Џ…ђ’ЌЋ‰ ‘€‘’…Њ›",7,0,10,80),
shiftwindow(11),clearwindow,
write(" ",Mygoal),nl,nl,
write("‚ б гбва Ёў Ґв ? (y,¤)"),
readchar(Ans),e(Ans,C),
evalans(C).
go( HISTORY, Mygoal ):-
rule(RNO,Mygoal,NY,COND), /* ўлЎ®а Ё§ Ѓ‡ RNO, Ї®¤Є ⥣®аЁЁ NY Ё
бЇЁбЄ гб«®ўЁ© COND, Ї®¤вўҐа¦¤ ойЁе NY */
check(RNO,HISTORY, COND), /* Їа®ўҐаЄ гб«®ўЁ© Ё§ COND */
wrf(NY),
go([RNO|HISTORY],NY). /* ४габЁп ¤«п б¤го饣® га®ўп Є ⥣®аЁ©*/
check( RNO, HISTORY, [BNO|REST] ):- yes(BNO), !,
check(RNO, HISTORY, REST)./*Ўл« «Ё а ҐҐ ®вўҐв ¤ гб«®ўЁҐ BNO*/
check( _, _, [BNO|_] ):- no(BNO), !,fail. /* ⮦Ґ ¤«п ®вўҐв Ґв*/
check( RNO, HISTORY, [BNO|REST] ):- cond(BNO,NCOND),
fronttoken(NCOND,"Ґ",_COND), /* Ґбвм ЇаҐдҐЄб "Ґ" ?*/
frontchar(_COND,_,COND), /* г¤ «Ё¬ бЁ¬ў®« Ї®б«Ґ not*/
cond(BNO1,COND), /* ®¬Ґа гб«®ўЁп BNO1 ЎҐ§ ЇаҐдҐЄб */
notest(BNO1), !, /* Ўл« ®вўҐв Ґв?*/
check(RNO, HISTORY, REST). /* Є б«Ґ¤го饬г гб«®ўЁо */
check(_,_, [BNO|_] ):- cond(BNO,NCOND),
fronttoken(NCOND,"Ґ",_COND),
frontchar(_COND,_,COND),
cond(BNO1,COND), /* ўбҐ ⮦Ґ ¤«п ®вўҐв®ў ¤ */
yes(BNO1), !,fail. /* ЇаЁ '¤ ' б 'not' check Ґ ўлЇ®«пҐвбп */
check( RNO, HISTORY, [BNO|REST] ):-
cond(BNO,TEXT),
inpq(HISTORY,RNO,BNO,TEXT), /* § Їа®б ®вўҐв TEXT */
check(RNO, HISTORY, REST). /* ЇаЁ ®вўҐвҐ ¤ ЇҐаҐе®¤ Є
б«Ґ¤го饬г гб«®ўЁо, Ё зҐ check Ґ ўлЇ®«пҐвбп */
check( _, _, [] ). /* бЇЁб®Є гб«®ўЁ© ЁбзҐаЇ ЇаЁ ўбҐе ®вўҐв е ¤ */
notest(BNO):-no(BNO),!.
notest(BNO):-not(yes(BNO)),!.
inpq(HISTORY,RNO,BNO,TEXT):-
write(" - ",TEXT,": "), ROW = 0, COL = 0,
menu(ROW,COL,7,7,["¤ ","Ґв","?"],"",1,CHOICE),
do_answer(HISTORY,RNO,TEXT,BNO,CHOICE).
do_answer(_,_,_,_,0):-exit.
do_answer(_,_,_,BNO,1):-assert(yes(BNO)),
shiftwindow(1),write("¤ "),nl.
do_answer(_,_,_,BNO,2):-assert(no(BNO)),
shiftwindow(1),write("Ґв"),nl,fail.
do_answer(HISTORY,RNO,TEXT,BNO,3):- !,
shiftwindow(2),
rule( RNO, Mygoal1, Mygoal2, _ ),
sub_cat(Mygoal1,Mygoal2,Lstr),
concat(" ",Lstr,Lstr1),
concat(Lstr1," б«Ґ¤гп Їа ўЁ«г ",Ls1),
str_int(Str_num,RNO),
concat(Ls1,Str_num,Ans),
show_rule(RNO,Lls1),
concat(Ans,Lls1,Ans1),
report(HISTORY,Sng),
concat(Ans1,Sng,Answ),
display(Answ),
shiftwindow(8), clearwindow,
write(" €бЇ®«м§гп бв५ЄЁ ўлЎҐаЁвҐ ЇгЄв "),
shiftwindow(1),
ROW = 0,COL = 0,
menu(ROW,COL,7,7,["¤ ","Ґв","?"],"",1,CHOICE),
do_answer(HISTORY,RNO,TEXT,BNO,CHOICE).
/* do_answer(HISTORY,RNO,_,_,4) :-
rule(RNO,M1,_,B),!,ret(B),
rule(_,M2,M1,_),!,
go(HISTORY,M2).
ret([]).
ret([B1|H]):-rt(B1),ret(H).
rt(B1):-retract(yes(B1)).
rt(B1):-retract(no(B1)).
rt(_). */
/* Џа®б¬®ва Їа ўЁ« / ¬Ґе Ё§¬ ®Ўмпᥨп */
list :- findall(RNO,rule(RNO,_,_,_),LIST),
llist(List),!/*,display(Str),!*/.
llist([]) :-!.
llist([RNO|List]):-
/* llist(List), */
show_rule(RNO,RNO_Str),write(RNO_Str),readchar(_),llist(List).
/* concat(RNO_Str,Oldstr,Str). */
show_rule(RNO,Strg):-
rule( RNO, Mygoal1, Mygoal2, CONDINGELSER),
str_int(RNO_str,RNO),
concat("\n Џа ўЁ«® ",RNO_str,Ans),
concat(Ans,": ",Ans1),
sub_cat(Mygoal1,Mygoal2,Lstr),
concat(Ans1,Lstr,Ans2),
concat(Ans2," Ґб«Ё:\n ",Ans3),
reverse(CONDINGELSER,CONILS),
show_conditions(CONILS,Con),
concat(Ans3,Con,Strg).
show_conditions([],"").
show_conditions([COND],Ans):-
show_cond(COND,Ans),!.
show_conditions([COND|REST],Ans):-
show_cond(COND,Text),
concat("\nЁ ",Text,Nstr),
show_conditions(REST,Next_ans),
concat(Next_ans,Nstr,Ans).
show_cond(COND,TEXT):-cond(COND,TEXT).
sub_cat(Mygoal1,Mygoal2,Lstr):-
concat(Mygoal1," ўЄ«оз Ґв ",Str),
concat(Str,Mygoal2,Lstr).
report([],"").
report([RNO|REST],Strg) :-
rule( RNO, Mygoal1, Mygoal2, _),
sub_cat(Mygoal1,Mygoal2,Lstr),
concat("\n\n ",Lstr,L1),
concat(L1," б«Ґ¤гп Їа ўЁ«г ",L2),
str_int(Str_RNO,RNO),
concat(L2,Str_RNO,L3),
concat(L3,".",L4),
show_rule(RNO,Str),
concat(L4,Str,L5),
report(REST,Next_strg),
concat(L5,Next_strg,Strg).
/*„®Ў ў«ҐЁҐ Є Ў §Ґ § Ё©*/
getrnr(N,N):-not(rule(N,_,_,_)),!.
getrnr(N,N1):-H=N+1,getrnr(H,N1).
getbnr(N,N):-not(cond(N,_)),!.
getbnr(N,N1):-H=N+1,getbnr(H,N1).
readcondl( [BNO|R] ):-
write("гб«®ўЁҐ: "),readln(COND),
COND><"",!,
getcond(BNO,COND),
readcondl( R ).
readcondl( [] ).
getcond(BNO,COND):-cond(BNO,COND),!.
getcond(BNO,COND):-getbnr(1,BNO), assert( cond(BNO,COND) ).
/*ђҐ¤ ЄжЁп Ѓ‡*/
edit_kb :-
pick_dba(Filename),
file_str(Filename,Data),
edit(Data,NewData),clearwindow,
write("‡ ЇЁб вм ? (y,¤): "),
readchar(Ans),e(Ans,C),save_y(C,NewData,Filename).
e('y',C):-C='y'. e('¤',C):-C='y'. e('Y',C):-C='y'. e('„',C):-C='y'.
e(_,C):-C='n'.
save_y('y',D,Filename):-
openwrite(save_file,Filename),
writedevice(save_file),
write(D),
closefile(save_file).
save_y('n',_,_).
/*HELP !!!*/
help :- file_str("geni.hlp",Help),
display(Help).
/*Љ®¬ ¤л Ї®«м§®ў ⥫п*/
load_know:-pick_dba(Data), consult(Data),clearwindow,nl,
write(" Ѓ § § Ё©: ",Data," § Ја㦥 !").
save_know :- data_file(Data), bound(Data),!,
save(Data),clearwindow,
writef(" ‚ и Ў § § Ё© % § ЇЁб !",Data).
save_know :- makewindow(11,10,9,"€¬п д ©« ",10,40,4,35),
write("‚ўҐ¤ЁвҐ Ё¬п Ў §л § Ё©: "),
readln(Data),
assert(data_file(Data)),
removewindow,
save(Data),clearwindow,
writef(" ‚ и Ў § § Ё© % б®еа Ґ !",Data).
pick_dba(Data) :- makewindow(10,7,7,"“Є ¦ЁвҐ Ё¬п д ©« ",10,10,10,60),
dir("","*.gni",Data),removewindow.
erase:-retract(_),fail.
erase.
clear:-retract(yes(_)),retract(no(_)),fail,!.
clear.
update:-
shiftwindow(5),
clearwindow,
write("\n\t„®Ў ў«ҐЁҐ ў Ѓ‡\n\t****************\n"),
cursor(1,30),
write("€¬п Є ⥣®аЁЁ: "),
cursor(3,30),
write("€¬п Ї®¤Є ⥣®аЁЁ: "),
cursor(1,50),
‡¤Ґбм ўбҐ ®ЎмҐЄвл б ЇаЁ§ Є ¬Ё Є« ббЁдЁжЁаговбп Ї® а §¤Ґ« ¬ Ё«Ё
Є ⥣®аЁп¬, Є®в®алҐ ¬®Јгв б®бв ў«пвм ЁҐа аеЁо Ё«Ё ў«®¦Ґ®бвм ®в
б ¬®Ј® ®ЎйҐЈ® Ї®пвЁп Є Ў®«м讬г зЁб«г з бвле Ї®пвЁ© Ё«Ё ®ЎмҐЄв®ў.
ЏаЁ ¤«Ґ¦®бвм ®ЎмҐЄв Є Ї®¤Є ⥣®аЁЁ § ¤ Ґвбп а冷¬ гб«®ўЁ©,
ўлЇ®«Ё¬®бвм Є®в®але ®ЇаҐ¤Ґ«пҐвбп ў Їа®жҐбᥠ¤Ё «®Ј б Ї®«м§®ў ⥫Ґ¬.
„ п Їа®Ја ¬¬ пў«пҐвбп ®Ў®«®зЄ®© ќ‘, в Є Є Є ¬®¦Ґв а Ў®в вм б
а §«Ёзл¬Ё Ў § ¬Ё § Ё©, Є®в®алҐ ЇаҐ¤бв ў«пов б®Ў®© Ў §г ¤ ле, ®
Ґ в®«мЄ® д Єв®ў (дЁЄбЁа®ў ле ¤ ле), ® Ё Їа ўЁ« ўлў®¤ ,
ЁбЇ®«м§гҐ¬ле ў нЄбЇҐав®© бЁб⥬Ґ ў н⮬ Ёе Є зҐб⢥.
ќд䥪⠨ᯮ«м§®ў Ёп вҐе®«®ЈЁЁ ®Ў®«®зҐЄ нЄбЇҐавле бЁб⥬
б®бв®Ёв ў § зЁвҐ«м®¬ б®Єа 饨Ё гбЁ«Ё©, ўаҐ¬ҐЁ, б।бвў,
ᮧ¤ ⥫Ґ© ®ўле ќ‘, в Є¦Ґ Ї®«м§®ў ⥫Ґ©.
ЏаЁ¬Ґа Ґ§ ўЁбЁ¬®© Ў §л § Ё© ЇаЁ¬ҐаҐ ЇаЁўҐ¤Ґ Ё¦Ґ.
code 3500
nowarnings
domains
file = descriptor s = string
infrec = imp(s, s, s, s, s, s, s, real)
realist = real*
database
adjustflag
convstack(s) /* ЁбЇ®«м§гҐвбп ў ¬®¤г«Ґ */
danswer(s,real)
dbimp(s, s, s, s, s, s, s, real)
define(symbol, s) /* €бЇ®«м§гҐвбп ў ¬®¤г«Ґ reinevl1. */
evidence(s, real)
hypothesis_node(s)
imp(s, s, s, s, s, s, s, real)
infer_summary(infrec, real)
stackvalue(real) /* €бЇ®«м§гҐвбп ў ¬®¤г«Ґ relnevl1 */
tdbimp(s,s,s,s,s,s,s,real)
terminal_node(s)
varvalue(symbol, real)
predicates
absvalue(real,real)
adjuststack
allinfer(s,real)
and_go_on
answer(s,real)
append(reallist, reallst,reallist)
cleanerx
cleanery
cleanerz
cleanit1
cleanit2
cleanit3
cleanit4
cleanit5
cleanit6
cleanit7
cleanit8
cleanit9
cleanit10
cleanit11
cleanit12
cleanit13
cleanit14
clearall
combine(reallist,real)
cond_multiplier(s,real)
defs_go_on
display_one_answer
edit_rs
exsys_driver
find_multiplaier(s,real,s,real)
form_go_on
form_describer(s,real)
get_name(s)
getallans
getmode1(s,s)
getmode2(s,s)
gettype1(s,s)
gettype2(s,s)
getsense(s,s)
how_explain(s)
how_describer(s)
infer(s,real)
more_defs
make_rules
make_imps
make_defs
make_terms
make_hypos
make_simples
make_ands
make_ors
make_forms
max(real,real,real)
min(real,real,real)
or_go_on
pauser
prepare_answer
purjeit
putadjustflag
process(integer)
pick_exsys(s)
qualifier(s,real,real)
reloadit
reply_to_input(s,s,real)
repeat
record_it(char,s,s)
seerules
seeimps
seedefs
seehypos
seeterms
showresults
shell_driver
simple_go_on
supercombine(reallist, real)
why_describer(s,s,s,s,s,s,s,real)
include "menu.pro"
include "relnevl1"
clauses
shell_driver:-
makewindow(1,112,7,
"IMP - ®Ў®«®зЄ ¤«п Ї®бв஥Ёп ќ‘",0,0,25,80),
repeat, shiftwindow(1), clearwindow,
menu(6,15,
"‘Їа ў®з п Ёд®а¬ жЁп" ,
"‚ў®¤ Їа ўЁ« ®ў®© ќ‘",
"Џа®ўҐаЄ § Ја㦥®Ј® ¬®¦Ґбвў Їа ўЁ«",
"‘®еа ҐЁҐ § Ја㦥®Ј® ¬®¦Ґбвў Їа ўЁ«",
"‡ Јаг§Є ®¤®Ј® Ё§ Ў®а®ў Їа ўЁ«",
"Џа®Ј® § Ја㦥®© нЄбЇҐав®© бЁб⥬л",
"ђҐ¤ ЄвЁа®ў ЁҐ ®¤®Ј® Ё§ Ў®а®ў Їа ўЁ«",
"ЏҐз вм ®¤®Ј® Ё§ Ў®а®ў Їа ўЁ«",
"‚л室 ў DOS",
"ЋЄ®з ЁҐ а Ў®вл б ЇаЈа ¬¬®©", Choice),
process(Choice), Choice=10, !.
process(1):- file_str("impshell.hlp",ZZ),display(ZZ),!.
process(2):- clearall, mak_rules, !.
process(3):- seerules, !.
process(4):- get_name(Rulefile), save(Rulefile), !.
process(5):- clearall, pick_exsys(Rulefile), consult(Rulefile), !.
process(6):- cleanerx, cleanerx, exsys_driver, !.
process(7):- clearall, edit_rs, !.
process(8):- pick_exsys(Rulefile), concat("copy",Rulefile,Z),
concat(Z,"prn:", ZZ), system(ZZ), !.
process(9):- system(""), !.
process(10):- !.
make_rules:- clearwindow, make_imp, make_defs,
make_terms, make_hypos,
clearwindow, nl,nl,
write("„«п в®Ј®, зв®Ўл ᤥ« вм Їа ўЁ« Ї®бв®пл¬Ё,"),nl,
write(" б®еа ЁвҐ Ёе ў д ©«Ґ (б¬. Ј«. ¬Ґо)"),nl,nl,
write(" Џа ўЁ« ¬®Јгв Ўлвм Ё§¬ҐҐл Ї®б«Ґ б®еа ҐЁп, "),
nl,write(" ЁбЇ®«м§гп дгЄжЁо । ЄвЁа®ў Ёп (б¬.Ј«.¬Ґо)."),
nl, pauser.
make_terms:- clearwindow, nl,
write("‡ ¤ ЁҐ Є®жҐўле 㧫®ў ¤«п нв®Ј® Ў®а Їа ўЁ«"),
repeat, nl,nl,
write("‚ўҐ¤ЁвҐ ⥪бв ¤«п ®ЇаҐ¤Ґ«ҐЁп Є®жҐў®Ј® 㧫 :"),
nl,readln(X), assert(terminal_node(X)), more_defs, !.
make_hypos:- clearwindow, nl,
write("‡Ђ„ЂЌ€… ѓ€ЏЋ’…’€—…‘Љ€• “‡‹Ћ‚ „‹џ ЌЂЃЋђЂ ЏђЂ‚€‹"),
repeat, nl,nl,
write("‚ўҐ¤ЁвҐ бва®Єг¤«п ®ЇаҐ¤Ґ«ҐЁп ЈЁЇ®вҐвЁзҐбЄ®Ј® 㧫 :"),
nl, readln(X),assert(hypothesis_node(X)), more_defs, !.
make_imps:- make_simples, make_ands, make_ors, make_forms.
make_simples:- clearwimdow, simple_go_on,
repeat, clearwindow, nl,
write("‡Ђ„ЂЌ€… ЏђЋ‘’ЋѓЋ ЏђЂ‚€‹Ђ €ЊЏ‹€ЉЂ–€€"),nl,nl,
write("—в® ¬®¦Ґв Ўлвм ўлўҐ¤Ґ® Ё§ нв®© Ё¬Ї«ЁЄ жЁЁ?"),nl,
write(""), readln(Z), nl,
write("—в® г⢥ত Ґвбп ў Ї®бл«ЄҐ (Ї®«®¦ЁвҐ«м п д®а¬ )?"),
nl,write(""),readln(X),nl,
write("„®«¦® «Ё гб«®ўЁҐ ®ваЁж вмбп NOT (ўўҐ¤ЁвҐ ¤/)?"),
Соседние файлы в папке Доки к Прологу