% programmation directe recursive d'une repetition
% Exemple : boucle de lecture

carres :- write('rentrez un nombre pour obtenir son carre,
                 ou n\'importe quelle lettre pour terminer\n'),
          read(X),
          ( \+ number(X),! , write('lecture terminee') 
          ; Y is X*X , write('son carre est '=Y),nl, carres).


% utilisation de "repeat"
% repeat est un predicat predefini ainsi
%      repeat.
%      repeat :- repeat.

carres1 :- write('rentrez des nombres pour obtenir leur carre, 
                  ou n\'importe quelle lettre pour terminer\n'),
          repeat,
          read(X),
          ( \+ number(X),!,  write('lecture terminee')
          ; Y is X*X , write('son carre est '=Y),nl, fail).

