preedix5

archivio con include

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


nowarnings
include "A:/predi/rocce.pro"
domains
W = integer
Opzione =integer
predicates
finestra
azione0(W)
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:-
 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...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,shiftwindow(1),scelta(Opzione).
 scelta(0):-attribute(3),
 write("carica dati "),nl,azione0(1).
 scelta(1):-attribute(4),
 write("rocce intrusive"),nl,
 attribute(5),azione1(1).
 scelta(2):-attribute(2),
 write("rocce effusive"),nl,
 attribute(6),azione2(1).
 scelta(3):-attribute(5),
 write("archivio completo "),nl,
 attribute(7),azione3(1).
 scelta(4):-
 write("fine ricerca "),nl,azione4(1). 
 azione0(W):-
 W>0,!,
 roccia(X,Y),
 write("premi enter "),nl,
 readchar(H),clearwindow,
 elabora.
 
 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):-attribute(131),
 write("fine:premi enter "),
 readchar(H),attribute(7),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).