%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Programma per la stampa dei quadrati dei numeri naturali 
% tra 1 ed N (N dato di input)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%% quadrato(X,Y): Y e' il quadrato di X

quadrato(X,Y) :-
    Y is X * X.


%%% Interfaccia utente 

start :-
    nl,
    write('Stampa i quadrati dei numeri naturali tra 1 ed N'),nl,nl,
    write('Dai il valore di N: '), 
    read(N),
    write('I quadrati dei numeri naturali da 1 a '), 
    write(N), write(' sono:'),
    nl,
    stampa_quadrati(1,N).

% stampa_quadrati/2
% stampa i quadrati dei numeri naturali tra I ed F
% (I, F parametri)

stampa_quadrati(I,F) :-
    I > F.
stampa_quadrati(I,F) :-
    I =< F,
    quadrato(I,Q),
    write(I), tab(2), write(Q), nl,
    Isucc is I + 1,
    stampa_quadrati(Isucc,F).
    


