Corso di Programmazione C++
C++ è linguggio di programmazione polivalente orientato agli oggetti per la realizzazione di applicazioni.
Programma
Introduzione alla programmazione orientata agli oggetti
- Definizione
- Caratteristiche
- Esempi
Caratteristiche generali del linguaggio
- Distinzione tra caratteri maiuscoli e minuscoli
- Moduli funzione
- La funzione main
- Le tre parti di una funzione
- Aree di commento
- Primo programma di esempio
La funzione printf
- Funzione di Input-ouput del C
- Operazioni
- Argomenti
- Scrittura della control string sullo schermo
- Definizione di sequenza di escape
- La funzione printf con più argomenti
- Definizione di specificatore di formato
- Principali specificatori di formato in free-format
- Altri campi degli specificatori di formato
Tipi, Variabili, Costanti
- Tipi delle variabili
- Tipi intrinseci del linguaggio
- Dichiarazione e definizione degli identificatori
- Qualificatori e specificatori di tipo
- Tabella di occupazione della memoria dei vari tipi di dati
- L'operatore sizeof
- Il tipo "booleano"
- Definizione con Inizializzazione
- Le Costanti in C++
- Specificatore const
Operatori e operandi
- Definizione di operatore e regole generali
- Operatore di assegnazione
- Operatori matematici e a livello del bit
- Operatori binari in notazione compatta
- Operatori relazionali e logici
- Operatori di incremento e decremento
- Operatore condizionale
- Conversioni di tipo
- Precedenza fra operatori (tabella)
Introduzione all' input-ouput sui dispositivi standard
- Dispositivi standard di I/O
- Oggetti globali di I/O
- Operatori di flusso di I/O
- Output tramite l'operatore di inserimento
- Input tramite l'operatore di estrazione
- Memorizzazione dei dati introdotti da tastiera
- Comportamento in caso di errore in lettura
Il Compilatore gcc (Linux)
- Un compilatore integrato C/C++
- Quale Versione
- I passi della compilazione
Istruzioni di controllo
- if
- while
- do ... while
- for
- continue, break e goto
- switch ... case
Array
- Cos'è un array ?
- Definizione e inizializzazione di un array
- L'operatore [ ]
- Array multidimensionali
- L'operatore sizeof e gli array
- Gli array in C++
Stringhe di caratteri
- Le stringhe come particolari array di caratteri
- Definizione di variabili stringa
- Inizializzazione di variabili stringa
- Funzioni di libreria gets e puts
- Conversioni fra stringhe e numeri
- Le stringhe in C++
Funzioni
- Definizione e dichiarazione di una funzione
- Istruzione return
- Comunicazioni fra programma chiamante e funzione
- Argomenti di default
- Funzioni con overload
- Funzioni inline
- Trasmissione dei parametri tramite l'area stack
- Ricorsività delle funzioni
- Funzioni con numero variabile di argomenti
- Cenni sulla Run Time Library
Direttive al Preprocessore
- Cos'é il preprocessore ?
- Direttiva #include
- Direttiva #define di una costante
- Confronto fra la direttiva #define e lo specificatore const
- Direttiva #define di una macro
- Confronto fra la direttiva #define e lo specificatore inline
- Direttive condizionali
- Direttiva #undef
Sviluppo delle applicazioni in ambiente Windows
- Definizioni di IDE e di "progetto"
- Gestione di files e progetti
- Editor di testo
- Gestione delle finestre
- Costruzione dell'applicazione eseguibile
- Debug del programma
- Utilizzo dell'help in linea
Indirizzi e Puntatori
- Operatore di indirizzo &
- Cosa sono i puntatori ?
- Dichiarazione di una variabile di tipo puntatore
- Assegnazione di un valore a un puntatore
- Aritmetica dei puntatori
- Operatore di dereferenziazione
- Puntatori ed array
- Puntatori e funzioni
- Puntatori e costanti
Classi e data hiding
- Analogia fra classi e strutture
- Specificatori di accesso
- Data hiding
- Funzioni membro
- Risoluzione della visibilità
- Funzioni-membro di sola lettura
- Classi membro
- Polimorfismo
- Puntatore nascosto this
Membri a livello di classe e accesso "friend"
- Membri di tipo enumerato
- Dati-membro statici
- Funzioni-membro statiche
- Funzioni friend
- Classi friend
Costruttori e distruttori degli oggetti
- Costruzione e distruzione di un oggetto
- Costruttori e conversione implicita
- Distruttori
- Oggetti allocati dinamicamente
- Membri puntatori
- Costruttori di copia
- Liste di inizializzazione
- Membri oggetto
- Array di oggetti
- Oggetti non locali
- Oggetti temporanei
- Utilità dei costruttori e distruttori
Overload degli operatori
- Estendibilità del C++
- Ridefinizione degli operatori
- Metodi della classe o funzioni esterne ?
- Il ruolo del puntatore nascosto this
- Overload degli operatori di flusso di I/O
Eredità
- L'eredità in C++
- Classi base e derivata
- Accesso ai membri della classe base
- Conversioni fra classi base e derivata
- Costruzione della classe base
- Regola della dominanza
- Eredità e overload
- La dichiarazione using
- Eredità multipla e classi basi virtuali
Polimorfismo
- Late binding e polimorfismo
- Ambiguità dei puntatori alla classe base
- Funzioni virtuali
- Tabelle delle funzioni virtuali
- Costruttori e distruttori virtuali
- Scelta fra velocità e polimorfismo
- Classi astratte
Template
- Programmazione generica
- Definizione di una classe template
- Istanza di un template
- Parametri di default
- Funzioni template
- Differenze fra funzioni e classi template
- Template e modularità