PruebaDinamica.pro



%__________________________
% reglas para la suma
%--------------------------
limpiaDatos:-
	dato(X), retract(dato(X)), fail.
limpiaDatos:-!.

inicio:-
	limpiaDatos,
	assert(dato(8)),
	assert(dato(7)),
	ciclo.

cabezadeX([X], X):-!.

comando([inserta]):-
	write('Inserta datos: '),
	readln(X),
	cabezadeX(X, Q),
	assert(dato(Q)).

comando([borra]):- dato(X), retract(dato(X)).

comando([salir]):- !, fail.

comando([muestra]):-
	dato(Y), sformat(S, "~w", [Y]),
	writeln(S), fail.
comando([muestra]):-!.

comando([A]):-
	assert(contador(A)), !,
	contador(B), sformat(S, "B = ~w", [B]), writeln(S),
	limpia,	writeln('limpia'),
	A1 is B -1, writeln('A1 is B-1'),
	assert(contador(A1)), sformat(S2, "A1 = ~w", [A1]), writeln(S2),
	A1 = 0, write('A1 = 0'),
	dato(X), write('dato(X)'),
	sformat(S5, "El elemento [~w] = ~w", [A, X]), writeln(S5).

limpia:- contador(X), retract(contador(X)), fail.
limpia:-!.

ciclo:-
	write('Comando: '),
	readln(X), !,
	sformat(S, "~w", [X]), writeln(S),
	comando(X), ciclo.
ciclo:-!.

:-
	dynamic dato, contador. %assert(contador(0)).