Prolog/Primi passi: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
BimBot (discussione | contributi)
m Robot: Automated text replacement (-([^'])u'([^']) +\1ù\2)
BimBot (discussione | contributi)
m Robot: Automated text replacement (- , +,)
Riga 1:
== Primi passi ==
 
Una volta installato il tuo prolog , scriviamo il primo programma e diamolo in pasto al nostro interprete (per vedere se tutto funziona). Accendi il text editor e cre un file di testo semplicissimo scrivendo solo queste parole:
 
Umano(john).
Riga 50:
== Sintassi, Fatti e interrogazioni ==
 
La linea '''umano(john).''' nell'esempio precedente era una proposizione di prolog in forma di predicato, chiamata anche '''fatto'''. I Predicati consistono di una parola e di uno o più caratteri ,scritti in minuscolo, possibilmente seguiti da un numero di termini. Quelli sotto sono esempi di predicati validi:
 
umano(john)
Riga 56:
abc(def,ghi,jkl,m)
albero
p(a ,f ,d)
 
I termini (le parole nelle parentesi) possono prendere molte forme, ma per ora ci agganceremo alle costanti. Queste sono parole, ancora tutte in minuscolo. Il primo carattere, sia di un predicato sia di una costante , deve essere una lettera.
Usando i predicati possiamo aggiungere un fatto ad un programma:
 
Riga 73:
 
Osserva il punto '.' dietro ogni linea per mostrare la fine della stessa. Questo è molto importante, se lo dimentichi il tuo interprete non comprenderà il programma.
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:leggibilità|leggibilità]]. Potremmo sostituire facilmente la parola ''umano'' con qualsiasi altra parola e l'interprete non ne vedrebbe la differenza.
 
Se carichiamo il programma sopra illustrato nell'interprete possiamo interrogare il computer.Se digiti
Riga 100:
== Variabili ==
 
Quello che stiamo facendo non è un vero e prorio linguaggio espressivo. Possiamo aumentare l'espresività di un linguaggio utilizzando le ''variabili'' nel nostro percorso di apprendimento. UNa variabile è una parola , proprio come termini e predicati , con l'eccezione che inizia con la lettera maiuscola ed ha dopo di sè lettere sia maiuscole che minuscole. Considera la seguente interrogazione:
 
umano(A).
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 affinchè sia vera la domanda. Per controllare questa domanda, prolog troverà un' istanza che rende la prima proposizione vera t, poi cercherà di rendere vero il secondo predicato (con l'istanza del primo). If it can make the second predicate true, trovaerà unaltro modo per rendere il secondo predicato vero (dopo premuto il punto e virgola) . Se non ci riesce , troverà una seconda possibilità di rendere il primo predicato vero, prendendo in .
 
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 150:
Se premi il punto e virgola cercherà una nuova istanza per il secondo predicato. Se fallisce trova una nuova istanza per il primo e così fino alla fine del database.
 
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 è istanziata la variabile, ie non ti importa a quale termine sia collegata, anche se è collegata a qualcosa. Se chiedi a prolog
<pre><nowiki>
?- parent(A, _).
Riga 168:
umano(_).
 
Nel tuo archivio si avrà che ogni termine ,esista o meno, sarà umano. Così la domanda
<pre><nowiki>
?- umano(abc)
</nowiki></pre>
sarebbe vera . In questo contesto la variabile anonima è usata per afferamare una proprietà di tutti gli oggetti anzichè di uno solo . Se vogliamo affermare che un gruppo specifico di oggetti ha una verta proprietà , abbiamo bisogno di '''regole'''.
La prossima sezione tratterà di questo.
 
Riga 188:
== Regole ==
 
Siamo molto lontani da una vera e propria programmazione ,abbiamo appena definitto degli oggetti e le loro proprietà. Il primo passo per programmare in prolog è l'uso delle '''regole'''. With rules we state that a predicate is true, provided that other predicates are true. A rule looks like this:
 
a :- b, c, d.