listati da Prolog2
listati da copiare e incollare su notes e salvare come file.PRO
richiamabili in ambiente Prolog

esci listaprolog.htm

/* ori4.mar */

nowarnings
domains
nome=symbol
voti,N=integer
predicates
studente(nome,voti,voti,voti,voti,voti)
azione
elabora(integer)
bocciato
promosso
respinto
archivio
somma
opera
aiutato
goal azione.
clauses
azione:-
makewindow(1,5,1,"",1,1,20,78),opera.
opera:-
write("-----------------------"),nl,
write("scrivi 1:archivio"),nl,
write("scrivi 2:promossi in ogni materia"),nl,
write("scrivi 3:bocciati in qualche materia"),nl,
write("scrivi 4:somma e media voti"),nl,
write("scrivi 5:promosso con aiuto"),nl,
write("scrivi 6:respinto"),nl,
write("scrivi 0:fine"),nl,
readint(N),
clearwindow,
elabora(N).
elabora(1):-archivio.
elabora(2):-promosso.
elabora(3):-bocciato.
elabora(4):-somma.
elabora(5):-aiutato.
elabora(6):-respinto.
elabora(0):-exit.
archivio:-
write("stampa archivio dati completo"),nl,
studente(X,A,B,C,D,E),
write(X,"\t",A,"\t",B,"\t",C,"\t",D,"\t",E),
nl,fail;opera.
promosso:-
write("stampa nomi studenti promossi"),nl,
studente(X,A,B,C,D,E),
A>5,B>5,C>5,D>5,E>5,
write("promosso:",X),nl,fail;opera.
bocciato if
studente(X,A,B,C,D,E),A<6,write(X,"\t",A),nl,fail;
studente(X,A,B,C,D,E),B<6,write(X,"\t",B),nl,fail;
studente(X,A,B,C,D,E),C<6,write(X,"\t",C),nl,fail;
studente(X,A,B,C,D,E),D<6,write(X,"\t",D),nl,fail;
studente(X,A,B,C,D,E),E<6,write(X,"\t",E),nl,fail;
opera.
somma:-
write("stampa somma voti e media arrotondata"),nl,
studente(X,A,B,C,D,E),
S=A+B+C+D+E,
M=(S/5),
Q=round(M),
write(X,"\t",S,"\t",M,"\t",Q),nl,fail;opera.

aiutato:-
write("alunni promossi con aiuto"),nl,
studente(X,A,B,C,D,E),
S=A+B+C+D+E,
M=S/5,
M<6,
Q=round(M),
Q>5,
write(X,"\t",M,"\t",Q,"\tpromosso"),nl,
fail;opera.

respinto:-
write("alunni respinti"),nl,
studente(X,A,B,C,D,E),
S=A+B+C+D+E,
M=S/5,
M<6,
Q=round(M),
Q<=5,
write(X,"\t",M,"\t",Q,"\trespinto"),nl,
fail;opera.

studente(mario,5,6,7,6,6).
studente(carlo,8,9,8,7,6).
studente(anna,8,7,6,8,8).
studente(luigi,4,5,6,7,7).
studente(aldo,6,7,4,6,3).