PREDICATES
run1 run2 run3
run4 run44 run444 run4444 run4x
run5(real) run55(real)
run6 run7 run8
xeste(real) blocinstr
dublu(real,real) repeta
vreisarepeti repeta2
CLAUSES
run1:-X=3,nl,write(X),nl.
run2:-X=3,nl,write(X),nl,X=4.
run3:-X=3,nl,X=4,write(X),nl.
run4:-X=3,nl,write(X),nl;
X=4,nl,write(X),nl.
run44:-xeste(X),nl,write(X),nl.
run444:-X=3,nl,write(X),nl,fail;
X=4,nl,write(X),nl.
run4444:-xeste(X),nl,write(X),nl,fail.
run4x:-X=3,nl,write(X),nl.
run4x:-X=4,nl,write(X),nl.
run5(X):-X=3,nl,write(X),nl;
X=4,nl,write(X),nl.
run55(X):-xeste(X),nl,write(X),nl.
xeste(X):-X=3;
X=4.
blocinstr:-write("Introduceti numar:"),
readreal(X), nl,
write("Dublul lui "),
write(X),
write(" este "),dublu(X,Y),write(Y),nl.
dublu(X,Y):-bound(X),Y=2*X;
bound(Y),X=Y/2;
free(X),free(Y).
%
repeta.
repeta:-repeta.
%
repeta2.
repeta2:-vreisarepeti,repeta2.
%
vreisarepeti:-write("Continuati?[y/n]"),nl,readchar(X),X='y'.
% ciclare infinita
run6:-repeta,blocinstr,fail.
% ciclare cu test final
run7:-repeta2,blocinstr,fail.
% ciclare cu test initial
run8:-vreisarepeti,repeta2,blocinstr,fail.