Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Ernesto Burattini » 5.Il Prolog - 1


LPA Prolog

Esempio di applicazione Prolog

Esempio di applicazione Prolog


PROgramming in LOGic


Dati o termini


Termini semplici

Costanti – Atomi
1. Un carattere minuscolo seguito da altri caratteri:

a

carloMagno

due_luglio_2000

Termini semplici (segue)

Costanti – Atomi

2. Una stringa di caratteri speciali:

+ – / \ = ^ < > : . @ # $ & <> ##&& ::=

3. Una stringa di caratteri tra singole virgolette:

‘ABC’ ‘1234′ ‘a<>b’

4. Sono atomi anche:

! ; [] {} :-

Termini semplici (segue)

Costanti – Numeri

  • Interi:

0; -16; 33; +100

  • Reali:

0.5; -3.1416; 6.23e+23; 11.0e-3; -2.6e-2

Termini semplici (segue)

  • Costanti
  • Variabili
    • tutte le variabili in Prolog iniziano con una lettera maiuscola o con _

X25

List

Massimo_De_Gregorio

_234

Termini strutturati

Una termine strutturato può essere formato da diversi componenti. Ogni componente di una struttura può essere un termine (semplice o strutturato).

Struttura generale
Un termine strutturato è sintatticamente formato da un
funtore e una lista di argomenti. In particolare:

  • il funtore deve essere un atomo;
  • la lista di argomenti è racchiusa tra parentesi;
  • ogni argomento è separato dal successivo da una “,”;
  • ogni argomento è un termine.

padre(mario,carlo)

f(a,g(A,c),h(d))

per(2,3,6)

Termini strutturati

Un termine strutturato può essere formato da diversi componenti. Ogni componente di una struttura può essere un termine (semplice o strutturato).

Liste – rappresentazione reale

[mare, sole]
[mela, pera, uva]

.(mare, .(sole, []))
.(mela, .(pera, .(uva, [])))

Corrispondenza tra termini e alberi

  • La radice dell’albero è il funtore;
  • ogni argomento della struttura è un figlio della radice;
  • se un argomento è una struttura, sarà disegnato usando quest’algoritmo ricorsivamente.

Corrispondenza tra termini e alberi (segue)


Componenti di un programma

  • Un programma Prolog è una collezione di predicati (o regole);
  • un predicato stabilisce una relazione tra gli oggetti;
  • in Prolog, l’esecuzione di un programma significa che una query è data e il sistema cerca di stabilire se la query segue (logicamente) dai predicati del programma.

Predicati e Clausole

  • Un predicato è composto da una o più clausole
  • Un goal è un termine definito dal programmatore ed è o un atomo o un termine strutturato
  • La forma generale di una clausola è la seguente:
    • <left-hand-side> :- <right-hand-side>.

Clausole unitarie o Fatti


Queries


Scrivere programmi


Finestre Main e Console

Esempio d’uso del LPA-Prolog

Esempio d'uso del LPA-Prolog


La console

Comandi da console

  • uso dell’ <enter>
  • editing dei comandi
  • riscrittura dei comandi
  • comandi su più linee e
  • opzione break in -

Azzeramento della console
Output sulla console

Le variabili

Variabili che appaiono inizialmente nel goal nella parte sinistra della regola sono quantificate universalmente.
Variabili che appaiono nel goal solo nella parte destra della regola sono quantificate esistenzialmente (lo stesso per quelle che appaiono nelle query).

Tabella Prolog – C o Pascal

Tabella Prolog - C o Pascal


Semantica dei programmi Prolog


Unificazione


  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93