<< Ancora sulle regole - (Prolog) Lezione 3
Art of Illusion >>

Tipi di dato in Prolog - (Prolog) Lezione 4

December 12th, 2008

Nella prima lezione sono stati distinti gli atomi dalle variabili, tale distinzione è stata usata in tutte le lezioni successive. Vediamo adesso in dettaglio i tipi di dato utilizzabili in prolog.

                         Dato
                          /\
                         /  \
               OggettoBase  Termini Composti
                     /\
                    /  \
             Costanti  Variabili
                  /\
                 /  \
            Atomi  Numeri

I dati in prolog si dividono in termini composti e dati basilari, questi ultimi si dividono in varibili e costanti.

Le costanti possono essere atomi o numeri, abbiamo tre modi di scrivere atomi, il primo è quello di utilizzare una stringa di lettere combinata a numeri ed underscore con il primo carattere lettera minuscola:

anna
nil
x25
x_25
x_25AB
x_
x____y
alpha_beta_procedure
miss_Jones
sarah_jones

Il secondo modo è ussare caratteri speciali:

---
=======
...
.:.
::=

In questa forma è importante fare attenzione a non usare simboli che hanno già un particolare significato per prolog

come ‘:-’.

L’ultimo modo di costruire un atomo è usare stringhe tra apici. In questo modo possiamo usare stringhe che iniziano con lettera maiuscola distinguendole dalle variabili:

'Tom'
'South_America'
'Sarah Jones'

La sintassi per i numeri interi è semplice ed è illustrata dai seguente esempi:
1 1313 0 -97

L’intervallo di numeri utilizzabili dipende dall’implementazione di prolog utilizzata.

Per i numeri reali invece abbiamo la sintassi:
3.14 -0.0035 100.2

L’utilizzo dei numeri reali ha bisogno di una particolare attenzione ai problemi di arrotondamento. Osserviamo la valutazione di un’espressione

?- A is 100000 + 0.00001 - 100000.
A = 0.0000

Il calcolo ha ritornato 0 invece del corretto risultato 0.00001.

Le variabili sono date da stringhe di lettere combinate ad underscore che iniziano con lettera maiuscola o underscore, come:

X
Result
PartecipantList
Obj_result
_x
_23

Quando una variabile viene usata una sola è possibile fare uso delle variabili mute, dette anche anonime, che si indicano con underscore. Ad esempio la regola

haschild(X) :- parent(X,Y).

può essere scritta come

haschild(X) :- parent(X,_).

Quando si utilizza una variabile muta in una query il valore di tale variabile non sarà ritornato da prolog.

I termini composti sono costruiti attraverso da un atomo chiamato funtore e un certo numero di argomenti, tale numero è detto arità. Sintatticamente un funtore assume la forma f(t_1,t_2,…,t_n) dove il funtore ha nome f, e arità n e argomenti t_i. Esempi di termini composti sono:

date(1,maggio,2008).
date(Giorno,maggio,2008).
point(x,Y).
nome(paolo,rossi).
lista(a,lista(b,nil)).
tree(tree(nil,3,nil),5,7).

Particolari termini composti sono le liste. L’atomo [] indica la lista vuota. Il funtore per le liste è il punto ‘.’ con due argomenti 2, la testa e la coda della lista. A esempio la lista composta dagli elementi a e b può essere scritta come .(a,b) e se a tale lista vogliamo aggiungere l’elemento c bisogna scrivere .(a, .(b, .(c, []))). Fortunatamente esiste una notazione più compatta per indicare le liste. Infatti .(a, b) può essere scritto come [a, b], ed .(a, .(b, .(c, []))). come [1,2,3].

Nelle lezioni successive vedremo alcuni esempi di utilizzo di liste e dati strutturati.

Posted in Programmazione, Tutorial |
Tags: , , ,

Leave Comment