Docente: Prof.
G.F. Rossi
PARTE I - LINGUAGGI di PROGRAMMAZIONE LOGICA: il PROLOG [1]
Il linguaggio Prolog. Sintassi: termini, clausole, programma. Semantica
dichiarativa informale. Interpretezione procedurale - Unificazione e sostituzione
- Semantica operazionale. Derivazione. Albero di derivazione SLD. Insieme
di successo - Non-determinismo e strategie di ricerca. Backtracking. Incompletezza
- Rappresentazione e manipolazione di liste - Definizioni ricorsive - Rappresentazione
e manipolazione numeri - Variabili e assegnamento - Dichiarativo vs. procedurale
- Predicati built-in. Controllo backtracking (“cut”). Negazione per fallimento
(cenni). Input-output. Stringhe. Manipolazione di termini (cenni). Modifica
dinamica del programma (cenni) - Sviluppo ed esecuzione programmi in SICStus
Prolog - Le basi logiche del Prolog. Logica dei predicati in forma di clausola.
Dimostrazione automatica di teoremi. Principio di Risoluzione (cenni).
Clausole di Horn. Risoluzione SLD vs. Risoluzione generale. Dalla Programmazione
Logica al Prolog - Semantica dichiarativa (a modelli). Interpretazione
e modello (cenni). Modelli di Herbrand (cenni). Correttezza e completezza
(cenni).
PARTE II - LINGUAGGI IMPERATIVI: il C [2]
Tipi di dato predefiniti - Dichiarazione di variabili - Assegnamento
- Struttura di un programma - Confronti con il linguaggio Pascal - Diagrammi
sintattici - Espressioni - Principali strutture di controllo: if,
while, for, do-while, switch - Input/output
di base - Tipi strutturati: array e struct - Funzioni e procedure:
Definizione. Chiamata e passaggio parametri. Funzioni ricorsive - “Regole
di scope” (cenni) - Puntatori e allocazione dinamica della memoria: Definizione
e uso. Array e puntatori. Liste concatenate - Sviluppo di programmi C.
PARTE III - LINGUAGGI ORIENTATI agli OGGETTI: IL C++ e JAVA
Introduzione alla programmazione orientata agli oggetti.
Il linguaggio C++ [2]
Dal C al C++ - Classi e oggetti - Overloading di funzioni e operatori - Ereditarietà singola e multipla.
Il linguaggio Java [3]
Introduzione al linguaggio - I tipi primitivi. Strutture di controllo
- Definizione di classi - I package - Le eccezioni (cenni) - Applet e applicazioni
“stand-alone” (cenni).
Testi consigliati:
L. CONSOLE, E. LAMMA, P. MELLO: Programmazione logica e Prolog (II edizione), UTET Libreria, 1997.
H. SCHILDT: Guida al linguaggio C++, McGRAW-HILL ITALIA, 1996.
A. GUIDI, M. BERTACCA: Introduzione a Java, McGRAW-HILL ITALIA, 1997.
Altri testi (per consultazione)
G. FIORENTINO, M.R. LAGANà, F. ROMANI, F. TURINI: C. e Java - Laboratorio di programmazione, McGRAW-HILL ITALIA, 1997.
S. SETHI: Linguaggi di programmazione. McGRAW-HILL
ITALIA, 1994.
Prerequisiti:
Il primo modulo del corso di Fondamenti di Informatica.