PROGRAMMAZIONE I E LABORATORIO |
Codice
|
1015912 |
Lingua
|
ITA |
Tipo di attestato
|
Attestato di profitto |
Modulo: PROGRAMMAZIONE I |
Codice
|
1015913 |
Lingua
|
ITA |
Tipo di attestato
|
Attestato di profitto |
Crediti
|
6
|
Settore scientifico disciplinare
|
INF/01
|
Ore Aula
|
24
|
Ore Esercitazioni
|
24
|
Attività formativa
|
Attività formative di base
|
Canale: A - L
Docente
|
MESSINA FABRIZIO
(programma)
Modulo A − Elementi di Programmazione Imperativa ed Orientata agli Oggetti (3CFU)
Introduzione alla programmazione
Problemi; Algoritmi; Diagrammi di flusso. Variabili; Espressioni; Assegnazioni. Notazione lineare strutturata; Teorema di Böhm-Jacopini. Struttura dati array. Linguaggi di programmazione: C++.
Linguaggi di programmazione: macchina, assembly e di alto livello. Problema della traduzione : compilazione ed interpretazione. Installazione del compilatore; Primo programma: Editing, Compiling, Running, Debugging. Costrutti del linguaggio.
Tipi di dato; Operatori predefiniti; Conversioni di tipo; Gestione dell’I/O. Controllo del flusso: costrutti di selezione if-then-else e switch, ed iterativi while e do-while. Introduzione alla Programmazione Orientata agli Oggetti.
Oggetti: stato e comportamento; Classi; Istanziazione di oggetti: costruttori. Messaggi: struttura, parametri, tipi di messaggi. Relazione di composizione/aggregazione per gli oggetti. Struttura dati array e stringhe di caratteri.
Array di tipi predefiniti e di oggetti. Array bidimensionali. Costrutto iterativo for. Sequenze di caratteri: array di char ed oggetti stringa.
Modulo B − Caratteristiche avanzate del linguaggio C++ (3 CFU)
Dichiarazione di classi.
Struttura della classe: attributi ed operazioni; Modificatori di accesso. Implementazione di metodi: valore di ritorno, passaggio di parametri per valore e per riferimento; Categorie di memorizzazione delle variabili; Regole di visibilità. Implementazione del costruttore. Puntatori ed Array.
Puntatori. Operatori di indirizzo e di dereferenziazione. Aritmetica dei puntatori. Puntatori ed array; Puntatori come parametro; Allocazione dinamica della memoria. Puntatori a funzioni. Il puntatore this; Indirizzamento multilivello. Riferimenti; Enumerazioni; Unioni; Campi di bit. Array 2D. Array allocati dinamicamente, Array come parametri, Array frastagliati; Array multidimensionali; Elementi avanzati del linguaggio.
Il modificatore const per i puntatori e per i metodi. Argomenti standard per i parametri di funzioni; Clausola Namespace; Dichiarazioni forward; Funzioni inline. Implementazione della relazione di composizione/aggregazione. Overloading di metodi. Costruttori e distruttori. Costruttore di copia. Funzioni e classi friend. Attributi e metodi statici. Gestione delle chiamate ai metodi mediante stack delle attivazioni.
Modulo C − Progettazione di software orientato agli oggetti (3CFU)
Ereditarietà
Definizione; Relazione ISA; Derivazioni e modalità di accesso: protected. Gerarchie ereditarie di classi. Overriding di metodi. Operatore :: risolutore di scope. Lista di inizializzazione e modalità d’esecuzione di costruttori e distruttori ereditati. Ereditarietà multipla. Classi base virtuali. Polimorfismo e Classi astratte.
Puntatori a classi derivate; Funzioni virtuali; Late-binding. Polimorfismo. Gerarchie ereditarie di classi polimorfe. Funzioni virtuali pure; Classi astratte; Interfacce. RTTI: typeid e dynamic_cast. Principi di progettazione orientata agli oggetti.
Diagrammi UML per le classi. Progettazione ed analisi nel paradigma OOP. Overloading degli operatori.
Tipo di overloading di operatori : non-membro, friend, membro. Operatori prefissi e postfissi “++” e “--”. Cenni ad operatori di assegnamento “=”, di indicizzazione “[ ]” e “( )” e di cast. Operatori di I/O. Programmazione generica.
Funzioni generiche. Classi generiche.
H.M. Deitel, P. J. Deitel, C++ Fondamenti di programmazione – Maggioli Editore (2014). Eckel, Thinking in C++, Vol. I, 2°Ed. (disponibile gratuitamente online) Horstmann, C++ for everyone, 2°Ed. – Wiley Stroustrup, Programming: Principles and Practice Using C++. (Addison-Wesley ISBN 978-0321-992789, http://www.stroustrup.com/programming.html). Stroustrup, The C++ Programming Language - 4th Edition ( Addison-Wesley ISBN 978-0321563842, http://www.stroustrup.com/4th.html )
NOTE:
I testi (1), (2), (3) e (4) sono consigliati ai principianti. Il testo (1) e’ in lingua italiana (per chi la preferisce), tutti gli altri sono in Inglese (e se ne consiglia la fruizione in Inglese).
Il libro (2) e’ un buon testo per principianti ma e’ aggiornato al 2000 (prima versione ANSI/C++), tuttavia rimane un buon testo per principianti.
Il testo (3) e’ fortemente consigliato agli studenti che affrontano un corso di programmazione per la prima volta; il testo contiene una grande quantità di esercizi.
Il testo (4) e’ stato scritto dallo stesso autore del testo (5), ovvero il creatore del linguaggio C++.
Il testo (5) è di livello avanzato. Tuttavia e’ in assoluto il miglior testo in circolazione sul C++. Per chi volesse cimentarsi nell’acquisto, si consiglia di aggiungere un ulteriore supporto didattico, ovvero il testo (4), dello stesso autore, oppure uno tra i testi (1) e (3).
|
Date di inizio e termine delle attività didattiche
|
Dal al |
Modalità di frequenza
|
Non obbligatoria
|
Canale: M - Z
Docente
|
FARINELLA GIOVANNI MARIA
(programma)
Modulo A − Elementi di Programmazione Imperativa ed Orientata agli Oggetti (3CFU)
Introduzione alla programmazione
Problemi; Algoritmi; Diagrammi di flusso. Variabili; Espressioni; Assegnazioni. Notazione lineare strutturata; Teorema di Böhm-Jacopini. Struttura dati array. Linguaggi di programmazione: C++.
Linguaggi di programmazione: macchina, assembly e di alto livello. Problema della traduzione : compilazione ed interpretazione. Installazione del compilatore; Primo programma: Editing, Compiling, Running, Debugging. Costrutti del linguaggio.
Tipi di dato; Operatori predefiniti; Conversioni di tipo; Gestione dell’I/O. Controllo del flusso: costrutti di selezione if-then-else e switch, ed iterativi while e do-while. Introduzione alla Programmazione Orientata agli Oggetti.
Oggetti: stato e comportamento; Classi; Istanziazione di oggetti: costruttori. Messaggi: struttura, parametri, tipi di messaggi. Relazione di composizione/aggregazione per gli oggetti. Struttura dati array e stringhe di caratteri.
Array di tipi predefiniti e di oggetti. Array bidimensionali. Costrutto iterativo for. Sequenze di caratteri: array di char ed oggetti stringa.
Modulo B − Caratteristiche avanzate del linguaggio C++ (3 CFU)
Dichiarazione di classi.
Struttura della classe: attributi ed operazioni; Modificatori di accesso. Implementazione di metodi: valore di ritorno, passaggio di parametri per valore e per riferimento; Categorie di memorizzazione delle variabili; Regole di visibilità. Implementazione del costruttore. Puntatori ed Array.
Puntatori. Operatori di indirizzo e di dereferenziazione. Aritmetica dei puntatori. Puntatori ed array; Puntatori come parametro; Allocazione dinamica della memoria. Puntatori a funzioni. Il puntatore this; Indirizzamento multilivello. Riferimenti; Enumerazioni; Unioni; Campi di bit. Array 2D. Array allocati dinamicamente, Array come parametri, Array frastagliati; Array multidimensionali; Elementi avanzati del linguaggio.
Il modificatore const per i puntatori e per i metodi. Argomenti standard per i parametri di funzioni; Clausola Namespace; Dichiarazioni forward; Funzioni inline. Implementazione della relazione di composizione/aggregazione. Overloading di metodi. Costruttori e distruttori. Costruttore di copia. Funzioni e classi friend. Attributi e metodi statici. Gestione delle chiamate ai metodi mediante stack delle attivazioni.
Modulo C − Progettazione di software orientato agli oggetti (3CFU)
Ereditarietà
Definizione; Relazione ISA; Derivazioni e modalità di accesso: protected. Gerarchie ereditarie di classi. Overriding di metodi. Operatore :: risolutore di scope. Lista di inizializzazione e modalità d’esecuzione di costruttori e distruttori ereditati. Ereditarietà multipla. Classi base virtuali. Polimorfismo e Classi astratte.
Puntatori a classi derivate; Funzioni virtuali; Late-binding. Polimorfismo. Gerarchie ereditarie di classi polimorfe. Funzioni virtuali pure; Classi astratte; Interfacce. RTTI: typeid e dynamic_cast. Principi di progettazione orientata agli oggetti.
Diagrammi UML per le classi. Progettazione ed analisi nel paradigma OOP. Overloading degli operatori.
Tipo di overloading di operatori : non-membro, friend, membro. Operatori prefissi e postfissi “++” e “--”. Cenni ad operatori di assegnamento “=”, di indicizzazione “[ ]” e “( )” e di cast. Operatori di I/O. Programmazione generica.
Funzioni generiche. Classi generiche.
H.M. Deitel, P. J. Deitel, C++ Fondamenti di programmazione – Maggioli Editore (2014). Eckel, Thinking in C++, Vol. I, 2°Ed. (disponibile gratuitamente online) Horstmann, C++ for everyone, 2°Ed. – Wiley Stroustrup, Programming: Principles and Practice Using C++. (Addison-Wesley ISBN 978-0321-992789, http://www.stroustrup.com/programming.html). Stroustrup, The C++ Programming Language - 4th Edition ( Addison-Wesley ISBN 978-0321563842, http://www.stroustrup.com/4th.html )
NOTE:
I testi (1), (2), (3) e (4) sono consigliati ai principianti. Il testo (1) e’ in lingua italiana (per chi la preferisce), tutti gli altri sono in Inglese (e se ne consiglia la fruizione in Inglese).
Il libro (2) e’ un buon testo per principianti ma e’ aggiornato al 2000 (prima versione ANSI/C++), tuttavia rimane un buon testo per principianti.
Il testo (3) e’ fortemente consigliato agli studenti che affrontano un corso di programmazione per la prima volta; il testo contiene una grande quantità di esercizi.
Il testo (4) e’ stato scritto dallo stesso autore del testo (5), ovvero il creatore del linguaggio C++.
Il testo (5) è di livello avanzato. Tuttavia e’ in assoluto il miglior testo in circolazione sul C++. Per chi volesse cimentarsi nell’acquisto, si consiglia di aggiungere un ulteriore supporto didattico, ovvero il testo (4), dello stesso autore, oppure uno tra i testi (1) e (3).
|
Date di inizio e termine delle attività didattiche
|
Dal al |
Modalità di frequenza
|
Non obbligatoria
|
|
|
Modulo: LABORATORIO |
Codice
|
1015914 |
Lingua
|
ITA |
Tipo di attestato
|
Attestato di profitto |
Crediti
|
3
|
Settore scientifico disciplinare
|
INF/01
|
Ore Aula
|
12
|
Ore Laboratorio
|
12
|
Attività formativa
|
Attività formative di base
|
Canale: A - L
Docente
|
MESSINA FABRIZIO
(programma)
Concetti base di programmazione Il linguaggio C++ Costrutti del linguaggio C++ Costrutti per la Programmazione Orientata agli Oggetti in C++ Struttura dati array e stringhe di caratteri in C++ Dichiarazione di classi in C++ Puntatori ed Array in C++ Elementi avanzati del linguaggio C++ Ereditarietà,Polimorfismo e Classi astratte in C++ Overloading degli operatori in C++ Classi Template e Funzioni Template in C++
H.M. Deitel, P. J. Deitel, C++ Fondamenti di programmazione – Maggioli Editore (2014). Eckel, Thinking in C++, Vol. I, 2°Ed. (disponibile gratuitamente online) Horstmann, C++ for everyone, 2°Ed. – Wiley Stroustrup, Programming: Principles and Practice Using C++. (Addison-Wesley ISBN 978-0321-992789,http://www.stroustrup.com/programming.html). Stroustrup, The C++ Programming Language - 4th Edition (Addison-Wesley ISBN 978-0321563842,http://www.stroustrup.com/4th.html)
NOTE:
I testi (1), (2), (3) e (4) sono consigliati ai principianti. Il testo (1) e’ in lingua italiana (per chi la preferisce), tutti gli altri sono in Inglese (e se ne consiglia la fruizione in Inglese).
Il libro (2) e’ un buon testo per principianti ma e’ aggiornato al 2000 (prima versione ANSI/C++), tuttavia rimane un buon testo per principianti.
Il testo (3) e’ fortemente consigliato agli studenti che affrontano un corso di programmazione per la prima volta; il testo contiene una grande quantità di esercizi.
Il testo (4) e’ stato scritto dallo stesso autore del testo (5), ovvero il creatore del linguaggio C++.
Il testo (5) è di livello avanzato. Tuttavia e’ in assoluto il miglior testo in circolazione sul C++. Per chi volesse cimentarsi nell’acquisto, si consiglia di aggiungere un ulteriore supporto didattico, ovvero il testo (4), dello stesso autore, oppure uno tra i testi (1) e (3).
|
Date di inizio e termine delle attività didattiche
|
Dal al |
Modalità di frequenza
|
Non obbligatoria
|
Canale: M - Z
Docente
|
FURNARI ANTONINO
(programma)
Concetti base di programmazione Il linguaggio C++ Costrutti del linguaggio C++ Costrutti per la Programmazione Orientata agli Oggetti in C++ Struttura dati array e stringhe di caratteri in C++ Dichiarazione di classi in C++ Puntatori ed Array in C++ Elementi avanzati del linguaggio C++ Ereditarietà, Polimorfismo e Classi astratte in C++ Overloading degli operatori in C++ Classi Template e Funzioni Template in C++
H.M. Deitel, P. J. Deitel, C++ Fondamenti di programmazione – Maggioli Editore (2014). Eckel, Thinking in C++, Vol. I, 2°Ed. (disponibile gratuitamente online) Horstmann, C++ for everyone, 2°Ed. – Wiley Stroustrup, Programming: Principles and Practice Using C++. (Addison-Wesley ISBN 978-0321-992789, http://www.stroustrup.com/programming.html). Stroustrup, The C++ Programming Language - 4th Edition ( Addison-Wesley ISBN 978-0321563842, http://www.stroustrup.com/4th.html )
NOTE:
I testi (1), (2), (3) e (4) sono consigliati ai principianti. Il testo (1) e’ in lingua italiana (per chi la preferisce), tutti gli altri sono in Inglese (e se ne consiglia la fruizione in Inglese).
Il libro (2) e’ un buon testo per principianti ma e’ aggiornato al 2000 (prima versione ANSI/C++), tuttavia rimane un buon testo per principianti.
Il testo (3) e’ fortemente consigliato agli studenti che affrontano un corso di programmazione per la prima volta; il testo contiene una grande quantità di esercizi.
Il testo (4) e’ stato scritto dallo stesso autore del testo (5), ovvero il creatore del linguaggio C++.
Il testo (5) è di livello avanzato. Tuttavia e’ in assoluto il miglior testo in circolazione sul C++. Per chi volesse cimentarsi nell’acquisto, si consiglia di aggiungere un ulteriore supporto didattico, ovvero il testo (4), dello stesso autore, oppure uno tra i testi (1) e (3).
|
Date di inizio e termine delle attività didattiche
|
Dal al |
Modalità di frequenza
|
Non obbligatoria
|
|
|
|