LINGUAGGI DICHIARATIVI
cod. 14830

Anno accademico 2008/09
1° anno di corso - Secondo semestre
Docente
Settore scientifico disciplinare
Informatica (INF/01)
Field
Discipline informatiche
Tipologia attività formativa
Caratterizzante
52 ore
di attività frontali
6 crediti
sede:
insegnamento
in - - -

Obiettivi formativi

Il corso intende fornire le nozioni di base sulla programmazione dichiarativa, illustrandone alcuni degli aspetti fondamentali tramite la presentazione e l'applicazione pratica del linguaggio di programmazione logica Prolog.

Prerequisiti

Le nozioni e le tecniche di base della programmazione convenzionale (ad esempio in C). Le nozioni di base riguardanti strutture dati fondamentali come liste, alberi e grafi. Le nozioni di base su funzioni e insiemi e su connettivi ed espressioni logiche. Familiarietà nell'uso del calcolatore. <br />
<br />

Contenuti dell'insegnamento

<p> Introduzione alla programmazione dichiarativa. Definizione, vantaggi, linguaggi e forme di programmazione dichiarativa - Principali caratteristiche dei linguaggi di programmazione dichiarativa. <br />
Un linguaggio per la programmazione dichiarativa: il Prolog. Cenni allo sviluppo del Prolog. - Variabili e tipi di dato (termini semplici e composti). Clausole e programmi (sintassi) - Semantica. Interpretazione logica e procedurale - Unificazione e sostituzione - Semantica operazionale. Derivazione. Albero di derivazione SLD. Insieme di successo. - Nondeterminismo e strategie di ricerca. Backtracking. Incompletezza. - Strutture dati: liste. Operazioni su liste. Stringhe. - Insieme delle soluzioni ('setof'). Programmazione dichiarativa in Prolog. Variabili logiche e unificazione. Strutture dati parzialmente specificate. Nondeterminismo e ricorsione - Altre possibilita' (non dichiarative) del Prolog. Rappresentazione e manipolazione numeri. Controllo backtracking ("cut"). Negazione per fallimento (cenni) - Input-output: di termini, di caratteri, su file. Modifica dinamica del programma (cenni). Manipolazione di termini (cenni) - L'ambiente di programmazione SWI-Prolog. Sviluppo ed esecuzione di semplici programmi in SWI-Prolog. <br />
Programmazione logica a vincoli. Limitazioni del Prolog (dichiarativita', efficienza) - Nozione di vincolo e di risolutore - Il CLP. Programma, computazione CLP, risoluzione di vincoli (propagazione e controllo di consistenza) - Un esempio di CLP: CLP(FD). Vincoli FD. Risoluzione vincoli FD("arc-consistency"). CLP(FD) in SWI-Prolog. <br />
</p>

Programma esteso

- - -

Bibliografia

L. CONSOLE, E. LAMMA, P. MELLO, M. MILANO: Programmazione logica e Prolog (II edizione), UTET Libreria, 1997, Anno ristampa 2006, pp. 432. <br />
<br />

Metodi didattici

Metodo d'insegnamento <br />
Lezioni frontali in aula (ca. 4 CFU) e esercitazioni assistite in aula attrezzata (ca. 2 CFU).<br />
Metodo di valutazione <br />
Esame orale, piu' svolgimento esercizi assegnati al termine del corso.<br />
<br />

Modalità verifica apprendimento

- - -

Altre informazioni

- - -