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

esci listaprolog.htm
menù incorporato, archivio da includere

 

 

/* predix6.pro */
/* carica programma ed esegue */
/* gestione due finestre menu e dati */
/* gestione menu con ritorno dopo azione */
nowarnings

include "classe1.pro"

domains
W = integer
Opzione =integer
predicates
finestra
azione0(W)
azione1(W)
azione2(W)
azione3(W)
azione4(W)
azione5(W)
azione6(W)
elabora
scelta(integer)
goal finestra,elabora.


clauses
finestra:-
clearwindow,
makewindow(1,5,1,"",1,1,20,70).

elabora:-
makewindow(2,3,4,"",2,5,12,40),
write("si deve premere il tasto 0 "),nl,
write("prima di usare i tasti opzione "),nl,
write("a inizio ricerca dopo il RUN "),nl,
write("--------------------------------"),nl,
write("0...come prima scelta "),nl,
write("1...studenti "),nl,
write("2...dottori sicilia "),nl,
write("3...archivio totale "),nl,
write("4...studenti veneti "),nl,
write("5...inferiore anni 25 "),nl,
write("6...fine "),nl,
write("premi numero per opzione scelta:"),
readint(Opzione),
clearwindow,shiftwindow(1),scelta(Opzione).
scelta(0):-attribute(3),
write("carica dati "),nl,azione0(1).
scelta(1):-attribute(4),
write("studenti"),nl,
attribute(5),azione1(1).
scelta(2):-attribute(2),
write("dottori sicilia"),nl,
attribute(6),azione2(1).
scelta(3):-attribute(5),
write("archivio completo "),nl,
attribute(7),azione3(1).
scelta(4):-
write("studenti veneti "),nl,azione4(1).
scelta(5):-
write("inferiore anni 25 "),nl,azione5(1).
scelta(6):-
write("fine ricerca"),nl,azione6(1).
azione0(W):-
W>0,!,
dati(X,Y,Z,E),
write("premi enter "),nl,
readchar(H),clearwindow,
elabora.

azione1(W):-
W>0,!,
dati(X,Y,Z,E),
Y=studente,
write(X,"\t\t",Y,"\t",Z,"\t",E),nl,
W1=W-1,
azione1(W1).

azione2(W):-
W>0,!,
dati(X,Y,Z,E),
Y= dottore,
Z= sicilia,
write(X,"\t\t",Y,"\t",Z,"\t",E),nl,
W1=W-1,
azione2(W1).

azione3(W):-
W>0,!,
dati(X,Y,Z,E),
write(X,"\t\t",Y,"\t",Z,"\t",E),nl,
W1=W-1,
azione3(W1).

azione4(W):-
W>0,!,
dati(X,Y,Z,E),
Y= studente,
Z= veneto,
write(X,"\t\t",Y,"\t",Z,"\t",E),nl,
W1=W-1,
azione4(W1).

azione5(W):-
W>0,!,
dati(X,Y,Z,E),
E<=25,
write(X,"\t\t",Y,"\t",Z,"\t",E),nl,
W1=W-1,
azione5(W1).
azione6(W):-attribute(131),
write("fine:premi enter "),
readchar(H),attribute(7),exit.

 

/* classe1.pro */

domains
nome = symbol
eta=integer

predicates
dati(nome,nome,nome,eta)

clauses
dati(rossi,studente,veneto,34).
dati(verdi,studente,veneto,21).
dati(verdi,dottore,lazio,55).
dati(basso,tecnico,lazio,23).
dati(grassi,studente,emilia,14).
dati(basso,studente,sicilia,15).
dati(rossini,dottore,sicilia,66).
dati(verdi,tecnico,veneto,34).