dana5
/* dana5.pro */ /* nota numero assegnato W dipende da record */ /* presenti in database */
nowarnings include "A:/ana/ana4.dba" domains H = char predicates finestra scelta(integer) azione1(integer) azione2(integer) azione3(integer) azione6(integer) goal finestra. clauses finestra:-clearwindow, makewindow(1,7,1,"",1,1,20,60), write("1..archivio "),nl, write("2..figli maschi "),nl, write("3..figli femmine "),nl, write("6..fine "),nl, readint(Q),nl,scelta(Q). scelta(1):-azione1(4). scelta(2):-azione2(4). scelta(3):-azione3(4). scelta(6):-azione6(0).
/* stampa archivio completo */ azione1(W):- W<5,!, dati(N,F,S), write(N,"\t",F,"\t",S),nl, W1=W+1, azione1(W1). azione1(4).
/* stampa padri con figli maschi */ azione2(W):- W<5,!, dati(N,F,S), S=maschio, write(N,"\t",F,"\t",S),nl, W1=W+1, azione2(W1). azione2(4).
/* stampa padri con figli femmine */ azione3(W):- W<5,!, dati(N,F,S), S=femmina, write(N,"\t",F,"\t",S),nl, W1=W+1, azione3(W1). azione3(4).
/* fine operazione */ azione6(W):- write("fine "),beep, clearwindow, write("premi enter "), readchar(H).
/* ana4.dba */
domains nome = symbol predicates dati(nome,nome,nome) clauses dati(verdi,luigi,maschio). dati(rossi,carlo,maschio). dati(bassi,anna,femmina). dati(grassi,sergio,maschio). dati(basso,elisa,femmina).