Prolog/Primi passi: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
m Robot: Automated text replacement (-([^'])a'([^']) +\1à\2) |
||
Riga 5:
Umano(john).
Sii preciso, la maiuscola e' importante in prolog, come il punto. Questo
Adesso avvia l'interprete di prolog. Molti interpreti di prolog mostrano una finestra con un sacco di informazioni seguite da una linea come quella qui sotto:
Riga 30:
umano(john).
(non dimenticare il punto) e premi '''Invio'''. Prolog
Yes.
Riga 38:
umano(Who).
e prolog
Who = john
Premi invio e prolog
Per uscire da prolog digita
Riga 72:
parente(suzie, eliza).
Osserva il punto '.' dietro ogni linea per mostrare la fine della stessa. Questo e' molto importante, se lo dimentichi il tuo interprete non
Dovreesti anche essere consapevole che i nomi scelti per i predicatied i termini non dicono assolutamente nulla all'interprete di prlog. Devono essere scelti per consentire di comprendere bene il programma , la[[w:
Se carichiamo il programma sopra illustrato nell'interprete possiamo interrogare il computer.Se digiti
Riga 79:
umano(john).
prolog
Yes.
Riga 87:
donna(john).
prolog
No.
Questo
Nota: se chiedi a prolog
?- umano(david).
Prolog
== Variabili ==
Quello che stiamo facendo non e' un vero e prorio linguaggio espressivo. Possiamo aumentare l'
umano(A).
Adesso il termine del predicato e' una variabile. Prolog
?- umano(A).
Prolog
A = john
A = suzie ;
Riga 118:
No.
Dopo eliza, prolog risponde No, indicando che le
Se prolog viene interrogato con piu' di una variabile esso
<pre><nowiki>
?- parent(Parent, Child).
Riga 135:
</nowiki></pre>
Quando prolog riceve una domanda con una variabile controlla tutte le linee del programma, e cerca di ''unificare'' ogni predicato con la domanda. Questo signifixa che
Per rendere le cose un po' difficili a prolog possiamo usare due predicati nella stessa domanda, per esempio:
Riga 141:
?- umano(A), parent(B,A).
</nowiki></pre>
Adesso stiamo chiedendo a prolog se c'e un umano A che ha un parente B. The comma significa ''and'', indicando che entrambi i predicati necessitano di essere veri affinche' sia vera la domanda. Per controllare questa domanda, prolog
Nell'esempio precedente prolog trova '''umano(david)''' nel programma ed unifica A con david. Per verifivare il secondo predicato, crea una istanza per '''parent(B, david)'''. Se non trova nulla cerca una nuova istanza per umano(A). Poi tenta A = john. Quindi istanzia parent(B, john). Trova B = david nella linea parent(david, john) e quindi risulta
Riga 148:
B = david
Se premi il punto e virgola
Esiste una variabile speciale chiamata anonima , per la quale viene usata il carattere sottolineatura (_). Quando usi questo carattere in una domanda, significa che non ti importa di come e' istanziata la variabile, ie non ti importa a quale termine sia collegata, anche se e' collegata a qualcosa. Se chiedi a prolog
Riga 154:
?- parent(A, _).
</nowiki></pre>
Prolog
A = david;
Riga 164:
?- abc(_,_,_).
</nowiki></pre>
Questo non
umano(_).
Nel tuo archivio si
<pre><nowiki>
?- umano(abc)
</nowiki></pre>
sarebbe vera . In questo contesto la variabile anonima e' usata per afferamare una
La prossima sezione
== Examples ==
Riga 188:
== Regole ==
Siamo molto lontani da una vera e propria programmazione ,abbiamo appena definitto degli oggetti e le loro
a :- b, c, d.
Riga 204:
?- a.
</nowiki></pre>
prolog
== Regole con Variabili ==
Riga 226:
?- car(corvette).
Quando usiamo le variabili in un programma dobbimo ricordarci che una variabile non significa niente senza la sentenza ad essa legata. Se due affermazioni usano la stessa variabile A, non e' la stessa variabile . For example:
|