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