LINGUAGGI DI PROGRAMMAZIONE

Docente: Prof. G.F. Rossi
 
 

PARADIGMI DI PROGRAMMAZIONE: imperativo, funzionale, logico, orientato agli ogetti

PARTE I - PROGRAMMAZIONE DICHIARATIVA

Il linguaggio Prolog [1]. Sintassi: termini, clausole, programma. Semantica dichiarativa informale. Interpretazione 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 liste - Definizioni ricorsive - Rappresentazione e manipolazione numeri - Variabili e assegnamento - Dichiarativo vs. procedurale - Predicati built-in. Controllo backtrackig ("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 - PROGRAMMAZIONE "OBJECT-ORIENTED"

Il linguaggio C++ [2]. Dal C al C++ - Tipi di dato semplici- Dichiarazione di variabili - Assegnamento ed espressioni - Struttura di un programma - Principali strutture di controllo: if, while, for, do-while, switch - Tipi strutturati: array e struct. Funzioni. Chiamata e passaggio parametri. Funzioni ricorsive - Puntatori ed array - Classi e oggetti. Campi privati e pubblici. Costruttori. Funzioni proprie ed invocazione di funzioni. "Information hiding" ed "incapsulamento". - Input/output su stream - Overloading di funzioni ed operatori. Passaggio parametri per riferimento. Overloading dell'assegnamento - Classi parametriche - Puntatori e allocazione dinamica della memoria (operatore new). Liste concatenate - Ereditarietà. Dichiarazione di classe derivata. Tipi di derivazione Costruttori di classi derivate. Derivazione di classi parametriche - Regole di "scope" e tempo di vita di un oggetto (cenni). Distruttore di una classe - Gestione delle eccezioni - Sviluppo di programmi in C++.
 
 

Testi consigliati:

[1] L. CONSOLE, E. LAMMA, P. MELLO: Programmazione logica e Prolog (II edizione), UTET Libreria, 1997.

[2] J.P. COHOON, J.W. DAVIDSON: C++ Program Design - An Introduction to Programming and Object-Oriented Design (2nd Edition), McGRAW-HILL, 1999.

Altri testi (per consultazione)

S. SETHI: Linguaggi di programmazione. McGRAW-HILL ITALIA, 1994.
 
 

Prerequisiti:

Le tecniche di programmazione e i concetti sviluppati nel primo modulo del corso di FONDAMENTI DI INFORMATICA. In particolare si assume una buona conoscenza degli elementi di base del linguaggio C e della programmazione in C
 
 

Altre Informazioni sul corso