predix3
archivio con include
/* predix3.pro */ /* carica programma ed esegue */
nowarnings
include "A:/predi/rocce.pro"
domains W = integer Opzione =integer predicates finestra azione1(W) azione2(W) azione3(W) azione4(W) elabora scelta(integer) goal finestra,elabora.
clauses finestra:- clearwindow, makewindow(1,5,1,"",1,1,20,70).
elabora:- write("1...rocce intrusive "),nl, write("2...rocce effusive "),nl, write("3...archivio totale "),nl, write("4...fine "),nl, write("premi numero per opzione scelta:"), readint(Opzione),clearwindow,scelta(Opzione). scelta(1):- write("rocce intrusive"),nl,azione1(1). scelta(2):- write("rocce effusive"),nl,azione2(1). scelta(3):- write("archivio completo "),nl,azione3(1). scelta(4):- write("fine ricerca "),nl,azione4(1). azione1(W):- W>0,!, roccia(X,Y), Y=intrusiva, write(X,"\t\t",Y),nl, W1=W-1, azione1(W1).
azione2(W):- W>0,!, roccia(X,Y), Y=effusiva, write(X,"\t\t",Y),nl, W1=W-1, azione2(W1).
azione3(W):- W>0,!, roccia(X,Y), write(X,"\t\t",Y),nl, W1=W-1, azione3(W1).
azione4(W):- write("fine:premi enter "),exit.
/* rocce.pro */ /* prova GOAL:roccia(X,Y) */ /* prova GOAL:roccia(X,intrusiva) */ /* prova GOAL:roccia(X,effusiva) */
domains nome = symbol
predicates roccia(nome,nome)
clauses roccia(granito,intrusiva). roccia(diorite,intrusiva). roccia(sienite,intrusiva). roccia(gabbro,intrusiva). roccia(porfido,effusiva). roccia(pomice,effusiva). roccia(diabase,effusiva). roccia(basalto,effusiva).