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

esci listaprolog.htm

 

/* equa2.mar */
/* soluzione e discussione equazione 2 grado */
/* valori interi o reali */

nowarnings
domains
predicates
azione
opera
tasto
verifica(real,real,real,real)
elabora(integer)
calcola
goal azione.
clauses
azione:-makewindow(1,5,1,"",1,1,20,78),opera.
opera:-
clearwindow,
write("scrivi 1 per calcolo equazione"),nl,
write("scrivi 0 per finire"),nl,
readint(N),clearwindow,
elabora(N).
elabora(1):-calcola.
elabora(0):-exit.
calcola:-
write("soluzione equazione 2 grado "),nl,
write("ax^2+bx+c "),nl,
write("scrivi valori ,seguiti da enter"),nl,
write("a="),readreal(A),
write("b="),readreal(B),
write("c="),readreal(C),
D=B*B-4*A*C,
write("discriminante=",D),nl,
verifica(D,A,B,C).

verifica(D,A,B,C):-
D>0,
R=sqrt(D),
X1=(-B+R)/(2*A),
X2=(-B-R)/(2*A),
write("soluzione equazione:"),nl,
write("x1=",X1),nl,
write("x2=",X2),nl,tasto,opera;

D=0,
X1=-B/(2*A),
X2=X1,
write("soluzione equazione:"),nl,
write("x1=x2=",X1),nl,tasto,opera;

D<0,
write("soluzione con radici complesse "),nl,
tasto,opera.

tasto:-
makewindow(3,3,2,"",20,60,3,15),
write("premi enter"),
readchar(_),removewindow,gotowindow(1).