listati da Prolog2
listati da copiare e incollare su notes e salvare come file.PRO
richiamabili in ambiente Prolog

esci listaprolog.htm

file ori7.pro e clienti.pro (incluso in ori7.pro) devono essere
nella stessa cartella

/* ori7.mar */
/* esempio database semplice con ricerca */

nowarnings
include "orio/clienti.pro"
domains
predicates
azione
elabora(integer)
archivio
qualifica
regione
qualiregio
qualicredi
singolo
anno
credito
opera
goal azione.
clauses
azione:-
makewindow(1,5,1,"",1,1,20,78),opera.
opera:-
write("premi enter"),readchar(_),
clearwindow,
write("-----------------------"),nl,
write("scrivi 1:archivio totale"),nl,
write("scrivi 2:clienti con qualifica"),nl,
write("scrivi 3:clienti in regione"),nl,
write("scrivi 4:clienti con credito>=X"),nl,
write("scrivi 5:con qualifica e regione"),nl,
write("scrivi 6:con qualifica e credito>=X"),nl,
write("scrivi 7:cliente da cercare"),nl,
write("scrivi 8:clienti con eta>=X"),nl,
write("scrivi 0:fine"),nl,
readint(N),
clearwindow,
elabora(N).
elabora(1):-archivio.
elabora(2):-qualifica.
elabora(3):-regione.
elabora(4):-credito.
elabora(5):-qualiregio.
elabora(6):-qualicredi.
elabora(7):-singolo.
elabora(8):-anno.
elabora(0):-exit.
archivio:-
write("stampa archivio dati completo"),nl,
write("cogno","\tnome","\tquali","\tregio","\tcredi","\teta"),nl,
nl,nl,
cliente(X,A,B,C,D,E),
write(X,"\t",A,"\t",B,"\t",C,"\t",D,"\t",E),
nl,fail;opera.
qualifica:-
write("stampa nomi con qualifica"),nl,
write("scrivi qualifica cercata:"),
readln(Q),
cliente(X,A,B,C,D,E),
Q=B,
write(X,"\t","\t",A,"\t",B,"\t",C,"\t",D,"\t",E),nl,fail;opera.
regione:-
write("stampa nomi abitanti in regione:"),nl,
write("scrivi regione cercata:"),
readln(R),
cliente(X,A,B,C,D,E),
R=C,
write(X,"\t",A,"\t",C),nl,fail;
opera.
credito:-
write("stampa creditori oltre valore:"),nl,
write("scrivi limite credito da cercare:"),
readint(CRE),
cliente(X,A,B,C,D,E),
D>CRE,
write(X,"\t",A,"\t",D),nl,
fail;opera.
qualiregio:-
write("clienti con qualifica in regione:"),nl,
write("scrivi qualifica da cercare:"),nl,
readln(Q),
write("scrivi regione da cercare:"),nl,
readln(R),
cliente(X,A,B,C,D,E),
Q=B,R=C,
write(X,"\t",A,"\t",B,"\t",C),nl,
fail;opera.

qualicredi:-
write("cliente con qualifica e credito"),nl,
write("scrivi qualifica da cercare:"),nl,
readln(Q),
write("scrivi limite credito:"),nl,
readint(CRE),
cliente(X,A,B,C,D,E),
Q=B,D>=CRE,
write(X,"\t",A,"\t",B,"\t",D),nl,
fail;opera.

singolo:-
write("stampa dati cliente da indicare"),nl,
write("cognome cliente:"),readln(Co),nl,
write("nome cliente :"),readln(No),nl,
cliente(X,A,B,C,D,E),
Co=X,No=A,
write("cognome","\tnome","\tqua","\treg","\tcre","\teta"),nl,
write(X,"\t",A,"\t",B,"\t",C,"\t",D,"\t",E),
nl,fail;opera.

anno:-
write("clienti con eta oltre limite:"),nl,
write("limite eta:"),nl,
readint(Anni),
cliente(X,A,B,C,D,E),
E>=Anni,
write(X,"\t",A,"\t",E),nl,
fail;opera.

 

/* clienti.pro */
/* esempio database semplice usato con orio7.mar */


domains
nome,cognome,qualifica,regione=symbol
credito,eta=integer
predicates
cliente(cognome,nome,qualifica,regione,credito,eta)
clauses
/* database clienti */
/* cognome,nome,qualifica,regione,credito,eta*/
/* possibile aggiungere altri clienti */

cliente(verdi,mario,dottore,veneto,123,34).
cliente(rossi,anna,dottore,veneto,125,45).
cliente(rossi,luigi,dottore,lazio,345,36).
cliente(bassi,aldo,operaio,lazio,122,21).
cliente(grassi,luigi,operaio,veneto,234,23).
cliente(verdi,aldo,dottore,veneto,123,34).
cliente(rossi,alice,dottore,veneto,125,45).
cliente(rossi,carlo,dottore,lazio,345,36).
cliente(bassi,franco,operaio,lazio,122,21).
cliente(grassi,aldo,operaio,veneto,234,23).
cliente(verdi,elvira,dottore,sicilia,123,34).
cliente(rossi,alvise,dottore,toscana,125,45).
cliente(rossi,sergio,dottore,emilia,345,36).
cliente(bassi,giona,operaio,marche,122,21).
cliente(grassi,alberto,operaio,sicilia,234,23).
cliente(verdi,maria,dottore,friuli,123,34).
cliente(bianchi,pietro,dottore,friuli,125,45).
cliente(neri,pierino,dottore,emilia,345,36).
cliente(bassi,pietro,operaio,sicilia,122,21).
cliente(pascoli,pietro,operaio,lazio,234,23).