%%% Le N numeros e reporta sua soma

cabecalho :-
   write('Soma de N numeros'), nl. 

leN(X) :-
    write('Entre com N, seguido de ".": '),
    read(X).

%%% soma(+N,-A) coloca em A a soma dos próximos N números lidos

soma(0, 0).
soma(N, S) :-
    N > 0,
    N1 is N - 1,
    soma(N1, S1),
    leTermo(A),
    S is S1 + A.

leTermo(X) :-
    write('Entre com um numero, seguido de ".": '),
    read(X).

reporta(S) :-
    write('Soma = '), write(S), nl.

%%% programa principal

:- cabecalho, leN(N), soma(N, A), reporta(A).
