LINGUAGGI DICHIARATIVI

Docente: Prof. G.F. Rossi  (e-mail: gianfranco.rossi at unipr.it)


Programma del corso

Introduzione alla programmazione dichiarativa. Definizione, vantaggi, linguaggi di programmazione dichiarativa, forme di programmazione dichiarativa - Principali caratteristiche dei linguaggi di programmazione dichiarativa.

Un linguaggio per la programmazione dichiarativa: il Prolog. Cenni allo sviluppo del Prolog. - Sintassi: Variabili e tipi di dato (termini semplici e composti). Clausole e programmi. - Semantica: Interpretazione logica. Interpretazione procedurale. Invertibilita' predicati. - Unificazione e sostituzione. - Semantica operazionale: Derivazione. Albero di derivazione SLD. Insieme di successo. - Nondeterminismo e strategie di ricerca. Backtracking. Incompletezza. - Strutture dati: Liste. Rappresentazione e manipolazione liste. Stringhe. - Rappresentazione e manipolazione numeri. - Controllo backtracking ("cut"). Negazione per fallimento (cenni). Insieme delle soluzioni ('setof'). - Valutazione Prolog per Programmazione Dichiarativa: pro e contro. - Predicati built-in (extra-logici). Input-output: di termini, di caratteri, su file. Modifica dinamica del programma (cenni). Manipolazione di termini (cenni). - Sviluppo ed esecuzione di programmi in SWI-Prolog (vedi elenco esercizi svolti).

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.
 
 


Testi consigliati

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

Altre informazioni sul corso