Espressioni aritmetiche

Calcolo di espressioni

Calcolare la somma degli elementi di una lista di numeri interi

Le regole per il calcolo della somma possono essere scritte in Prolog nel seguente programma:
% file: aritmetica/somma.pl
%
% calcola la somma degli elementi contenuti 
% in una lista di numeri interi
%

somma([],0).
somma([Testa|Coda],S):-
  somma(Coda,Scoda),
  S is Scoda + Testa.

/*
?- somma([12,34,25,7],Somma).
*/

Calcolare la media degli elementi di una lista di numeri interi

Per il calcolo della media possiamo calcolare separatamente la somma degli elementi e il loro numero. La media sarà il risultato della divisione SommaElementi/NumeroElementi.
%file aritmetica/media.pl
%
% calcola la media  degli elementi
% che compongono una lista
%
media(Lista,Media) :-
  lunghezza(Lista,NumeroElementi),
  NumeroElementi > 0,
  somma(Lista,SommaElementi),
  Media is SommaElementi/NumeroElementi.

lunghezza([],0).
lunghezza([_|Coda],N):-
  lunghezza(Coda,Ncoda),
  N is Ncoda + 1.

somma([],0).
somma([Testa|Coda],S):-
  somma(Coda,Scoda),
  S is Scoda + Testa.

/*
?- media([20,25,12,8,32],N).

Controllare se gli elementi di una lista di numeri interi sono ordinati

Per controllare se una lista è ordinata possiamo usare le regole:
%file: ordinata.pl
%
%il predicato ordinata(L) ha successo se L e' una lista di numeri interi
%ordinati in modo crescente. 
%

ordinata([]).
ordinata([_]).
ordinata([X,Y|Coda]) :-
  X < Y,
  ordinata([Y|Coda]).

/*
?- ordinata([7,10,12,34,41]).
?- ordinata([7,10,34,12,41]).
*/