% mvlpl01.pl
%
% ******************************************************************
% ## 1.0 Gestion des compteurs
% ******************************************************************
:-dynamic(compt/2).
% new_compt(C)
% Creation d'un nouveau compteur "C" s'il n'existe pas
% la valeur initiale est 0
new_compt(C) :-
compt(C,_),
affiche("Le compteur "),
affiche(C),
affiche(" existe déjà."),
nl.
new_compt(C) :-
assert(compt(C,0)).
% init_compt(C,V)
% Initialise le compteur "C" avec la valeur "V"
init_compt(C,V):-
compt(C,_),
err_compt(C),
assert(compt(C,V)),!.
init_compt(C,V):-
assert(compt(C,V)).
% err_compt(C)
% Detruit le compteur "C"
err_compt(C) :-
retract(compt(C,_)).
% inc_compt(C)
% incremente le compteur "C" de 1
inc_compt(C) :-
compt(C,V),
V1 is V + 1,
retract(compt(N,V)),
assert(compt(N,V1)).
% dec_compt(C)
% decremente le compteur "C" de 1
dec_compt(C) :-
compt(C,V),
V1 is V - 1,
retract(compt(C,V)),
assert(compt(C,V1)).
% raz_compt(C)
% remise a zero du compteur "C"
raz_compt(C) :-
retract(compt(C,_)),
assert(compt(C,0)).
% err_all_compt
% Detruit tous les compteurs
err_all_compt :-
retract(compt(_,_)),
fail.
err_all_compt.
%%% ******************************************************** FIN DE MVLPL01