.


:




:

































 

 

 

 


 

 

充..3

充..5

....7

充.....8

腅..9

..10

() ( ), - . . , .

:

(). . () . . , .

(MB). MB . MB , , .

3) (). , . : , , ( ).

: , .

, , .

, .

- . , . , , . 8 .

, . . .

, , , . , , . , , . MB , ,

. , , , .

, , , , .

Visual Prolog'a . , , , , . .

 

 

. .

 

 

, .

 

. Prolog.

 

 

 

 

 

Prolog. . , . . , . . , . : ; ; .


 

 

, , .

, , , , .


 

 

1) .., : , , , 2006.

2) .., : ,

, , 2007.


 

 

:

 

database

loc(integer, integer),

selection(string),

result(string),

second(string)

predicates

lopata(string)

cena(string, string)

clearloc

clearSelection

clearResult

clearSecond

q1

q2

q3

q4

q5

q6

addloc(integer, integer)

begin

continue(integer)

continue2(integer)

menu

getSolve

print(string)

getAnswer(integer, integer, integer, integer)

resultat(string, integer, integer, integer, integer, integer)

loclist(integer, integer, string)

showInfo(string)

 

clauses

continue2(1):-begin.

 

continue2(2):-

removewindow,

exit.

 

showInfo(X):-resultat(X,X1, X2, X3, X4, X5),

loclist(1, X1, Y1),

loclist(2, X2, Y2),

loclist(3, X3, Y3),

loclist(4, X4, Y4),

loclist(5, X5, Y5),

write(Y1, ' ', Y2, ' ', Y3, ' ', Y4, ' ', Y5, ' '), nl.

 

getAnswer(X, A, B, 1):- readint(X), X >= A, X <= B; X=4.

getAnswer(X, A, B, 0):- readint(X), X >= A, X <= B.

 

getSolve:-

lopata(X),

not(selection(X)),

print(X),!,

asserta(selection(X)),

getSolve.

 

print(X):- X<> "None",

clearResult,

asserta(result("yes")),

cena(X, Y),

write(X), nl,

write("Cena: ", Y, " rub"), nl.

 

menu:-result("yes"), second("no"),

write(" 1. Drugoi variant"), nl,

write(" 2. Zanovo"), nl,

write(" 3. Zakonchit rabotu"), nl,

readint(Z), nl, continue(Z).

 

menu:-result("no"), second("no"),

write("Takogo ne nashlos, no mojno posmotret drugoe"), nl,

write(" 1. Drugoi variant"), nl,

write(" 2. Zanovo"), nl,

write(" 3. Zakonchit rabotu"), nl,

readint(Z), nl, continue(Z).

 

menu:-result("no"), second("yes"),

write("Drygih nety"), nl,

write(" 1. Drugoi variant"), nl,

write(" 2. Zanovo"), nl,

write(" 3. Zakonchit rabotu"), nl,

readint(Z), nl, continue(Z).

 

menu:-result("yes"), second("yes"),

write("Dalee? \n"), nl,

write(" 1. Zanovo"), nl,

write(" 2. Zakonchit rabotu"), nl,

readint(Z), nl, continue2(Z).

 

Clearloc:- retractall(loc(_,_)).

ClearSelection:- retractall(selection(_)).

ClearResult:- retractall(result(_)).

ClearSecond:-retractall(second(_)).

 

addloc(X, Y):- Y<>4, asserta(loc(X,Y)).

addloc(X, 4):- asserta(loc(X,1)), asserta(loc(X,2)), asserta(loc(X,3)).

 

continue(3):-

removewindow,

exit.

 

continue(2):-

begin.

 

continue(1):-

clearSecond,

asserta(second("yes")),

clearResult,

asserta(result("no")),

addloc(5, 1), addloc(5, 2),

addloc(6, 1), addloc(6, 2), addloc(6, 3),

getSolve,

menu.

 

begin:- clearloc,

clearSelection,

clearResult,

clearSecond,

asserta(result("no")),

asserta(second("no")),

q1,

menu.

 

%Opisanie voprosov

 

q1:-

clearwindow,

write("Dlia 4ego vam nujna lopata?\n"), nl,

write(" 1. Lublu s ytra kopat sneg"), nl,

write(" 2. Dlia sipy4ish materialov "), nl,

write(" 3. Kopat'"), nl,

getAnswer(Z, 1, 3, 0), nl, addloc(1, Z), q2.

q1:-q1.

 

q2:-loc(2, _),

menu.

 

q2:-

loc(1, 1),

write("Mojet traktor? \n"),

write(" 1. Nee"), nl,

write(" 2. Horoshaia ideia"), nl,

getAnswer(Z, 1, 2, 0), nl, addloc(2, Z), addloc(5, 0), addloc(4, 0), q3.

 

q2:-

loc(1, W), W<>1,

addloc(2, 0),

q3.

q2:-q2.

 

 

q3:-loc(3, _),

menu.

 

q3:-

loc(1, 3),

q4.

 

q3:-

loc(2, 2),

addloc(3, 0),

q6.

 

 

q3:-

loc(2, 2),

loc(3, _),

q6.

 

q3:-

loc(1, F), F<>3,

write("Viberite proizvoditelya: \n"),

write(" 1. Fiskars(FIN)"), nl,

write(" 2. Alternativa(RUS)"), nl,

write(" 3. Drugoi"), nl,

write(" 4. Vse ravno"), nl,

getAnswer(Z, 1, 3, 1), nl, addloc(3, Z), addloc(4, 0), q5.

q3:-q3.

 

q4:-loc(4, _),

menu.

 

q4:-

write("Poto4nee \n"), nl,

write(" 1. Obi4nie"), nl,

write(" 2. Na pojarnii shit"), nl,

write(" 3. Sapernie"), nl,

getAnswer(Z, 1, 3, 0), nl, addloc(4, Z), addloc(3, 0), q5.

q4:-q4.

 

q5:-loc(5, _), loc(6, _),

menu.

 

q5:-

loc(1, 1),

q6.

 

q5:-

loc(4, 2),

addloc(5, 0),

q6.

 

q5:-

loc(4, 2),

loc(5, _),

q6.

 

q5:-

loc(1, S), S<>1,

write("Material Cherenka? \n"),

write(" 1. Metal"), nl,

write(" 2. Derevo"), nl,

write(" 3. Vse ravno"), nl,

getAnswer(Z, 1, 2, 1), nl, addloc(5, Z), q6.

q5:-q5.

 

q6:-loc(6, _),

menu.

 

q6:-

loc(4, 2),

addloc(6, 1),!, getSolve.

q6:-

loc(4, 2),

loc(6, _),

!, getSolve.

 

q6:-

loc(1,1), loc(2,1), loc(3,1),

write("How much? \n"), nl,!, result("no"),

write(" 1. do 1000 rub"), nl,

write(" 2. dorozhe 1000 rub"), nl,

write(" 3. vse ravno"), nl,

getAnswer(Z, 1, 2, 1), nl, addloc(6, Z),!, getSolve.

 

q6:-

loc(1,2), loc(3,1), loc(5,2),

write("How much? \n"), nl,!, result("no"),

write(" 1. do 1000 rub"), nl,

write(" 2. dorozhe 1000 rub"), nl,

write(" 3. vse ravno"), nl,

getAnswer(Z, 1, 2, 1), nl, addloc(6, Z),!, getSolve.

 

q6:-

loc(1,3), loc(4,3), loc(5,2),

write("How much? \n"), nl,!, result("no"),

write(" 1. do 1000 rub"), nl,

write(" 2. dorozhe 1000 rub"), nl,

write(" 3. vse ravno"), nl,

getAnswer(Z, 1, 2, 1), nl, addloc(6, Z),!, getSolve.

 

q6:-

loc(2,2),

write("How much? \n"), nl,!, result("no"),

write(" 1. do 1000 rub"), nl,

write(" 2. dorozhe 1000 rub"), nl,

write(" 3. vse ravno"), nl,

getAnswer(Z, 1, 2, 1), nl, addloc(6, Z),!, getSolve.

 

q6:-

loc(5, 1),

write("How much? \n"), nl,!, result("no"),

write(" 1. do 1000 rub"), nl,

write(" 2. dorozhe 1000 rub"), nl,

write(" 3. vse ravno"), nl,

getAnswer(Z, 1, 2, 1), nl, addloc(6, Z),!, getSolve.

 

q6:- not(loc(6, _)),

write("How much? \n"), nl,!, result("no"),

write(" 1. do 100 rub"), nl,

write(" 2. do 1000 rub"), nl,

write(" 3. dorozhe 1000 rub"), nl,

write(" 4. vse ravno"), nl,

getAnswer(Z, 1, 3, 1), nl, addloc(6, Z),!, getSolve.

 

% Baza dannih

 

lopata("Fiskars 143600"):-

loc(1, 1),

loc(2, 1),

loc(3, 1),

loc(4, 0),

loc(5, 0),

loc(6, 1).

 

lopata("Fiskars 142610"):-

loc(1, 1),

loc(2, 1),

loc(3, 1),

loc(4, 0),

loc(5, 0),

loc(6, 2).

 

lopata("stalnaia krashenaia 355*380"):-

loc(1, 1),

loc(2, 1),

loc(3, 2),

loc(4, 0),

loc(5, 0),

loc(6, 1).

 

lopata("lopata plastmassovaia 400*460mm"):-

loc(1, 1),

loc(2, 1),

loc(3, 2),

loc(4, 0),

loc(5, 0),

loc(6, 2).

 

lopata("lopata dvijok na kolesah"):-

loc(1, 1),

loc(2, 1),

loc(3, 2),

loc(4, 0),

loc(5, 0),

loc(6, 3).

 

lopata("detskaia pomogat bydet"):-

loc(1, 1),

loc(2, 1),

loc(3, 3),

loc(4, 0),

loc(5, 0),

loc(6, 1).

 

lopata("lopata Rusich-4 alluminievaia"):-

loc(1, 1),

loc(2, 1),

loc(3, 3),

loc(4, 0),

loc(5, 0),

loc(6, 2).

 

lopata("Novital BIOCCOLO"):-

loc(1, 1),

loc(2, 1),

loc(3, 3),

loc(4, 0),

loc(5, 0),

loc(6, 3).

 

lopata("Belarus"):-

loc(1, 1),

loc(2, 2),

loc(3, 0),

loc(4, 0),

loc(5, 0),

loc(6, 1).

 

lopata("KIROVEC"):-

loc(1, 1),

loc(2, 2),

loc(3, 0),

loc(4, 0),

loc(5, 0),

loc(6, 2).

 

lopata("FISKARS 132402"):-

loc(1, 2),

loc(2, 0),

loc(3, 1),

loc(4, 0),

loc(5, 1),

loc(6, 1).

 

lopata("Fiskars 132500"):-

loc(1, 2),

loc(2, 0),

loc(3, 1),

loc(4, 0),

loc(5, 1),

loc(6, 2).

 

lopata("FISKARS 131650"):-

loc(1, 2),

loc(2, 0),

loc(3, 1),

loc(4, 0),

loc(5, 2),

loc(6, 1).

 

lopata("Fiskars 131410"):-

loc(1, 2),

loc(2, 0),

loc(3, 1),

loc(4, 0),

loc(5, 2),

loc(6, 2).

 

lopata("lopata M-1016"):-

loc(1, 2),

loc(2, 0),

loc(3, 2),

loc(4, 0),

loc(5, 1),

loc(6, 1).

 

lopata("lopata M-1022"):-

loc(1, 2),

loc(2, 0),

loc(3, 2),

loc(4, 0),

loc(5, 1),

loc(6, 2).

 

lopata("lopata M-1015"):-

loc(1, 2),

loc(2, 0),

loc(3, 2),

loc(4, 0),

loc(5, 2),

loc(6, 1).

 

lopata("lopata M-1020"):-

loc(1, 2),

loc(2, 0),

loc(3, 2),

loc(4, 0),

loc(5, 2),

loc(6, 2).

 

lopata("lopata M-1033"):-

loc(1, 2),

loc(2, 0),

loc(3, 2),

loc(4, 0),

loc(5, 2),

loc(6, 3).

 

lopata("Centrinstrument, lopata - molodost"):-

loc(1, 2),

loc(2, 0),

loc(3, 3),

loc(4, 0),

loc(5, 1),

loc(6, 1).

 

lopata("Nava"):-

loc(1, 2),

loc(2, 0),

loc(3, 3),

loc(4, 0),

loc(5, 1),

loc(6, 2).

 

lopata("SOVKOVAIA BEZ CHERENKA 17421"):-

loc(1, 2),

loc(2, 0),

loc(3, 3),

loc(4, 0),

loc(5, 2),

loc(6, 1).

 

lopata("Centrinstryment, lopata - dachnik"):-

loc(1, 2),

loc(2, 0),

loc(3, 3),

loc(4, 0),

loc(5, 2),

loc(6, 2).

 

lopata("Terraline 03786"):-

loc(1, 2),

loc(2, 0),

loc(3, 3),

loc(4, 0),

loc(5, 2),

loc(6, 3).

 

lopata("Fiskars 131412"):-

loc(1, 3),

loc(2, 0),

loc(3, 0),

loc(4, 1),

loc(5, 1),

loc(6, 1).

 

lopata("FISKARS 131510"):-

loc(1, 3),

loc(2, 0),

loc(3, 0),

loc(4, 1),

loc(5, 1),

loc(6, 2).

 

lopata("Lko-4 s rebrom"):-

loc(1, 3),

loc(2, 0),

loc(3, 0),

loc(4, 1),

loc(5, 2),

loc(6, 1).

 

lopata("Fiskars 131640"):-

loc(1, 3),

loc(2, 0),

loc(3, 0),

loc(4, 1),

loc(5, 2),

loc(6, 2).

 

lopata("Fiskars 131410"):-

loc(1, 3),

loc(2, 0),

loc(3, 0),

loc(4, 1),

loc(5, 2),

loc(6, 3).

 

lopata("lopata"):-

loc(1, 3),

loc(2, 0),

loc(3, 0),

loc(4, 2),

loc(5, 0),

loc(6, 1).

 

lopata("FIT skladnaia"):-

loc(1, 3),

loc(2, 0),

loc(3, 0),

loc(4, 3),

loc(5, 1),

loc(6, 1).

 

lopata("Titanovaia"):-

loc(1, 3),

loc(2, 0),

loc(3, 0),

loc(4, 3),

loc(5, 1),

loc(6, 2).

 

lopata("Matrix 61425"):-

loc(1, 3),

loc(2, 0),

loc(3, 0),

loc(4, 3),

loc(5, 2),

loc(6, 1).

 

lopata("Azart b"):-

loc(1, 3),

loc(2, 0),

loc(3, 0),

loc(4, 3),

loc(5, 2),

loc(6, 2).

 

 

lopata("None").

 

%Ceni%

 

cena("Fiskars 143600", "990").

cena("Fiskars 142610", "1947").

cena("stalnaia krashenaia 355*380", "70").

cena("lopata plastmassovaia 400*460mm", "117").

cena("lopata dvijok na kolesah", "1100").

cena("detskaia pomogat bydet", "94").

cena("lopata Rusich-4 alluminievaia", "625").

cena("Novital BIOCCOLO", "1950").

cena("KIROVEC", "7000000").

cena("Belarus", " v te4enii 3-eh let, v den po 999 ").

cena("FISKARS 132402", "650").

cena("Fiskars 132500", "2323").

cena("FISKARS 131650", "520").

cena("Fiskars 131410", "1100").

cena("lopata M-1016", "278").

cena("lopata M-1022", "1001").

cena("lopata M-1015", "95").

cena("lopata M-1020", "295").

cena("lopata M-1033", "1001").

cena("Centrinstrument, lopata - molodost", "492").

cena("Nava", "1047").

cena("SOVKOVAIA BEZ CHERENKA 17421", "77").

cena("Centrinstryment, lopata - dachnik", "854").

cena("Terraline 03786", "1474").

cena("Fiskars 131412", "783").

cena("FISKARS 131510", "1990").

cena("Lko-4 s rebrom", "99").

cena("Fiskars 131640", "588").

cena("Fiskars 131410", "1190").

cena("lopata", "34").

cena("FIT skladnaia", "500 000").

cena("Titanovaia","1500").

cena("Matrix 61425", "124").

cena("Azart b", "1050").

cena("None", "-").

 

loclist(1, 1, "Lublu s ytra kopat sneg").

loclist(1, 2, "Dlia sipy4ish materialov").

loclist(1, 3, "Shtikovie").

loclist(2, 1, "Nee").

loclist(2, 2, "Horoshaia ideia").

loclist(2, 0, "").

loclist(3, 1, "Fiskars").

loclist(3, 2, "Alternativa").

loclist(3, 3, " Drugoi").

loclist(3, 0, "").

loclist(4, 1, "Obi4nie").

loclist(4, 2, "Na pojarnii shit").

loclist(4, 3, "Sapernie").

loclist(4, 0, "").

loclist(5, 1, "Metal").

loclist(5, 2, "Derevo").

 

resultat("Fiskars 143600", 1, 1, 1, 0, 1).

resultat("Fiskars 142610", 1, 1, 1, 0, 1).

resultat("stalnaia krashenaia 355*380", 1, 1, 2, 0, 1).

resultat("lopata plastmassovaia 400*460mm", 1, 1, 2, 0, 1).

resultat("lopata dvijok na kolesah", 1, 1, 2, 0, 1).

resultat("detskaia pomogat bydet", 1, 1, 3, 0, 1).

resultat("lopata Rusich-4 alluminievaia", 1, 1, 3, 0, 1).

resultat("Novital BIOCCOLO", 1, 1, 3, 0, 1).

resultat("KIROVEC", 1, 2, 0, 0, 1).

resultat("Belarus", 1, 2, 0, 0, 1).

resultat("FISKARS 132402", 2, 0, 1, 0, 1).

resultat("Fiskars 132500", 2, 0, 1, 0, 1).

resultat("FISKARS 131650", 2, 0, 1, 0, 2).

resultat("Fiskars 131410", 2, 0, 1, 0, 2).

resultat("lopata M-1016", 2, 0, 2, 0, 1).

resultat("lopata M-1022", 2, 0, 2, 0, 1).

resultat("lopata M-1015", 2, 0, 2, 0, 2).

resultat("lopata M-1020", 2, 0, 2, 0, 2).

resultat("lopata M-1033", 2, 0, 2, 0, 2).

resultat("Centrinstrument, lopata - molodost", 2, 0, 3, 0, 1).

resultat("Nava", 2, 0, 3, 0, 1).

resultat("Terraline 03786", 2, 0, 3, 0, 2).

resultat("SOVKOVAIA BEZ CHERENKA 17421", 2, 0, 3, 0, 2).

resultat("Centrinstryment, lopata - dachnik", 2, 0, 3, 0, 2).

resultat("Fiskars 131412", 3, 0, 0, 1, 1).

resultat("FISKARS 131510", 3, 0, 0, 1, 1).

resultat("Lko-4 s rebrom", 3, 0, 0, 1, 2).

resultat("Fiskars 131640", 3, 0, 0, 1, 2).

resultat("Fiskars 131410", 3, 0, 0, 1, 2).

resultat("lopata", 3, 0, 0, 2, 2).

resultat("FIT skladnaia", 3, 0, 0, 3, 1).

resultat("Titanovaia", 3, 0, 0, 3, 1).

resultat("Matrix 61425", 3, 0, 0, 3, 2).

resultat("Azart b", 3, 0, 0, 3, 2).

 

goal

makewindow(2,30,30, " Expert system: auto selection ", 0, 0, 25, 80), nl,

write("Viberite lopaty"), nl,

begin.

 



<== | ==>
630 /TEL-10-630-12,5 |
:


: 2016-03-26; !; : 659 |


:

:

.
==> ...

1721 - | 1556 -


© 2015-2024 lektsii.org - -

: 0.293 .