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).