predix6

archivio con include

 

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

nowarnings
include "A:/ana/classe1.pro"
domains
W = integer
Opzione =integer
predicates
finestra
azione0(W)
azione1(W)
azione2(W)
azione3(W)
azione4(W)
azione5(W)
azione6(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...studenti "),nl,
 write("2...dottori sicilia  "),nl,
 write("3...archivio totale "),nl,
 write("4...studenti veneti "),nl,
 write("5...inferiore anni 25 "),nl,
 write("6...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("studenti"),nl,
 attribute(5),azione1(1).
 scelta(2):-attribute(2),
 write("dottori sicilia"),nl,
 attribute(6),azione2(1).
 scelta(3):-attribute(5),
 write("archivio completo "),nl,
 attribute(7),azione3(1).
 scelta(4):-
 write("studenti veneti "),nl,azione4(1).
 scelta(5):-
 write("inferiore anni 25 "),nl,azione5(1).
 scelta(6):-
 write("fine ricerca"),nl,azione6(1). 
 azione0(W):-
 W>0,!,
 dati(X,Y,Z,E),
 write("premi enter "),nl,
 readchar(H),clearwindow,
 elabora.
 
 azione1(W):-
  W>0,!,
  dati(X,Y,Z,E),
  Y=studente,
  write(X,"\t\t",Y,"\t",Z,"\t",E),nl,
  W1=W-1,
  azione1(W1).
  
 azione2(W):-
 W>0,!,
 dati(X,Y,Z,E),
 Y= dottore,
 Z= sicilia, 
 write(X,"\t\t",Y,"\t",Z,"\t",E),nl,
 W1=W-1,
 azione2(W1).
 
 azione3(W):-
 W>0,!,
 dati(X,Y,Z,E),
 write(X,"\t\t",Y,"\t",Z,"\t",E),nl,
 W1=W-1,
 azione3(W1).
 
 azione4(W):-
 W>0,!,
 dati(X,Y,Z,E),
 Y= studente,
 Z= veneto,
 write(X,"\t\t",Y,"\t",Z,"\t",E),nl,
 W1=W-1,
 azione4(W1).
 
 azione5(W):-
 W>0,!,
 dati(X,Y,Z,E),
 E<=25,
 write(X,"\t\t",Y,"\t",Z,"\t",E),nl,
 W1=W-1,
 azione5(W1).
 azione6(W):-attribute(131),
 write("fine:premi enter "),
 readchar(H),attribute(7),exit.
 

/* classe1.pro */
domains
nome = symbol
eta=integer
predicates
dati(nome,nome,nome,eta)
clauses
dati(rossi,studente,veneto,34).
dati(verdi,studente,veneto,21).
dati(verdi,dottore,lazio,55).
dati(basso,tecnico,lazio,23).
dati(grassi,studente,emilia,14).
dati(basso,studente,sicilia,15).
dati(rossini,dottore,sicilia,66).
dati(verdi,tecnico,veneto,34).