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