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à

Esempi ed approfondimenti