NB: LE VIDEOLEZIONI SONO ELENCATE DALLA PIU' RECENTE ALLA MENO RECENTE
I puntatori, gestione dinamica della RAM e strutture dati dinamiche
Prerequisiti: programmazione base in C++, le struct.
NB.
Questa versione della videolezione è quella più difficile da seguire; suggerisco ai miei studenti di prelevate la versione 'semplificata' il cui link è indicato sempre qui appena dopo la versione standard.
Descrizione |
Contenuti:
Prima parte:
- confronto tra gestione statica e dinamica della RAM
- il tipo di dato 'puntatore'; il puntatore NULL
- allocare dinamicamente variabili semplici con malloc()
- allocare una stringa (leggendola con cin e copiandola in un array di char allocato dinamicamente)
- restituire la memoria con free()
- allocare dinamicamente struct; operatore ->
- implementare la struttura (ADT) lista semplice (inserimento in testa, stampa)
---- fine prima parte
Seconda parte:
- distruzione di una lista (restituzione della RAM occupata con free() )
- inserimento in coda ad un lista
- ricerca di un nodo della lista in base ad un campo chiave
- suggerimenti per la realizzazione delle funzioni di eliminazione di un nodo e di inserimento di un nodo in un punto intermedio della lista
|
Formato |
.exe (visualizzatore autoscompattante con
partenza automatica della videolezione)
|
Download
|
PRIMA PARTE (1h 35m / 211 MByte): clic qui
SECONDA PARTE (48m / 70 MByte): clic qui
Progetto dev c++: clic qui
Per i miei studenti (versione semplificata; 1h 31m / 166MB ): clic qui
e relativo progetto c++: clic qui
utenti linux/mac: l'exe è in realtà un file compresso da cui dovreste essere in grado di ricavare l'avi contenuto usando la versione per linux/mac di 7zip (nel caso fatemi sapere)
|
Introduzione al linguaggio C/C++ -
settima parte STRUCT
Prerequisiti: aver visto le parti precedenti
Descrizione |
Contenuti:
- introduzione teorica (breve) sulle struct con il c++
- dichiarazione ed uso di vettori di struct
- impelmentazione di un catalogo di schede con caricamento (vettore di struct), salvataggio su disco e lettura da disco
|
Formato |
.exe (visualizzatore autoscompattante con
partenza automatica della videolezione)
|
Download
|
1h 7m di videolezione click qui 128 MByte
Progetto dev c++: clic qui
utenti linux/mac: l'exe è in realtà un file compresso da cui dovreste essere in grado di ricavare l'avi contenuto (nel caso fatemi sapere)
|
Introduzione al linguaggio C/C++ -
sesta parte ARRAY
Prerequisiti: aver visto le parti precedenti
Descrizione |
Contenuti:
- dichiarazione ed uso di vettori di interi
- le stringhe come vettori di caratteri; il carattere speciale NULL; dualità
char/int
- inizializzazione in fase di dichiarazione degli elementi di un vettore
- le costanti e perchè è importante usarle con le dichiarazioni dei vettori
- problemi di superamento dei limiti di un vettore
- limite fisico e limite logico di un vettore
- trabocchetti con le stringhe tradizionali: assegnamenti, copie e confronti
- il nuovo tipo string del c++
- un vettore di string in realtà è un vettore di puntatori ad oggetti di tipo
string ...
- funzione sizeof()
- caricare un vettore di stringhe con un ciclo for
- una funzione per caricare un vettore di stringhe: uso del ciclo while
- caricamento in parallelo (con il vettore di stringhe) di un vettore di float
(elenco di prodotti con rispettivi costi)
- uso dei prototipi per le dichiarazioni forward delle funzioni
- funzione di ricerca di una stringa all'interno di un vettore
|
Formato |
.exe (visualizzatore autoscompattante con
partenza automatica della videolezione)
|
Download |
1h 27m di videolezione click qui 40 MByte
new: versione avi per utente non Windows click qui |
Introduzione al linguaggio C/C++ -
quinta parte FUNZIONI
Prerequisiti: aver visto le parti precedenti
Descrizione |
Contenuti:
- funzioni: perchè usarle, come si definiscono
- parametri per le funzioni
- variabili locali e globali; vantaggi dell'information hiding; rischi legati
all'uso delle variabili globali anche in riferimenti al riutilizzo del codice
- il valore restituito da una funzione
- parametri di default ed estensibilità del codice
- argomenti della linea di comando passati al programma (argc e argv ...)
- cenni ai vettori di stringhe
- l'espressione condizionale (... ? ... : ...)
- parametri per valore e per indirizzo
- il tipo reference (&)
- funzioni che non restituiscono nulla: il tipo void
- overloading delle funzioni |
Formato |
.exe (visualizzatore autoscompattante con
partenza automatica della videolezione)
|
Download |
1h 6m di videolezione click qui 30 MByte
new: versione avi per utente non Windows click qui |
Introduzione al linguaggio C/C++ -
quarta parte DO ... WHILE += DEBUGGER
Prerequisiti: aver visto le parti precedenti
Descrizione |
Contenuti:
- ciclo indefinito do ... while (simulazione dell'emissione di uno scontrino
alla cassa di un supermercato)
- operatore +=
- cicli annidati: uno esterno per i clienti ed uno interno per i prodotti dello
scontrino
- analisi dell'esecuzione usando il debugger visuale Insight:
. istruire il linker a generare codice contenente le informazioni
richieste dal debugger,
. esecuzione passo passo del programma, tenere sotto osservazione le
variabili (aggiunta di 'watches')
. far avanzare il programma automaticamente fino ad una determinata riga
(breakpoint)
. scegliere il formato di visualizzazione di un watch (binario, ottale,
esadecimale ecc.)
. modificare in tempo reale senza interrompere l'esecuzione del programma
il valore di una variabile
. aggiungere espressioni ai watches
- condizioni di terminazione di un ciclo composte (con operatori && o ||)
- uso della funzione toupper() per convertire caratteri in maiuscolo
- controllo della validità dei dati inseriti con un ciclo |
Formato |
.exe (visualizzatore autoscompattante con
partenza automatica della videolezione)
|
Download |
31m di videolezione click qui 14 MByte
new: versione avi per utente non Windows click qui |
Introduzione al linguaggio C/C++ -
terza parte SCANF CIN IF FOR ++ CHAR
Prerequisiti: aver visto le parti precedenti
Descrizione |
Contenuti:
- leggere dati dalla tastiera con scanf
- i 'trabocchetti' della scanf e del buffer della tastiera
- stream di input ed operatore >> (cenni)
- utilizzo di espressioni (e non di semplici costanti o variabili) come
parametri per l'invocazione di una funzione
- interi come caratteri e caratteri come interi
- la struttura iterativa (ciclo for): stampa della tabella ASCII per individuare
alcuni caratteri semigrafici per il disegno di una bandiera
- operatore ++
- uso della struttura selettiva (if) per fermare la stampa della tabella
ogni 20 caratteri
- condizioni composte
- 'trabocchetti' con: operatori && e & (bit a bit), = e ==, valore numerico zero
e logico false ...
- inserimento di commenti
- disegnare una bandiera sullo schermo con i caratteri semigrafici |
Formato |
.exe (visualizzatore autoscompattante con
partenza automatica della videolezione)
|
Download |
1h di videolezione click qui 25 MByte
new: versione avi per utente non Windows click qui |
Introduzione al linguaggio C/C++ -
seconda parte PRINTF COUT INT FLOAT CAST
Prerequisiti: aver visto la prima parte
Descrizione |
Contenuti:
- visualizzare sul video valori di vario tipo con printf
- specificatori di tipo per printf e 'trabocchetti' classici legati ai tipi
coinvolti: %d, %f, %o, %h; fissare il numero di cifre dopo la virgola)
- il tipo int e float
- dichiarare variabili int e float; inizializzazione delle variabili;
- casting implicito / esplicito dei tipi
- uso dello stream di output cout con l'operatore << (cenni); |
Formato |
.exe (visualizzatore autoscompattante con
partenza automatica della videolezione)
|
Download |
58m minuti di videolezione click qui 24 MByte
new: versione avi per utente non Windows click qui |
Introduzione al linguaggio C/C++ -
prima parte
Prerequisiti: nessuno
Descrizione |
Contenuti:
- Prelevare l'ambiente di sviluppo gratuito Dev c++ (usato a livello mondiale ad
esempio per le Olimpiadi di Informatica) ed un debugger visuale (Insigth 5)
- Installare l'IDE ed il debugger
- Breve panoramica dei tipi di istruzioni disponibili in un linguaggio di
programmazione
- Progetto, file sorgenti e librerie
- Creazione di una applicazione di tipo 'console'
- Primo contatto con l'ambiente di lavoro (IDE): scrittura del codice,
compilazione ed esecuzione
- Concetto intuitivo di tipo, funzione e parametri (che verranno poi
ripresi in successive videolezioni)
- visualizzare sul video valori di vario tipo con printf
- specificatori di tipo per printf e 'trabocchetti' classici legati ai tipi
coinvolti: %d, %f, %o, %h; fissare il numero di cifre dopo la virgola)
- il tipo int e float
- dichiarare variabili int e float; inizializzazione delle variabili;
- casting implicito / esplicito dei tipi
- uso dello stream di output cout con l'operatore << (cenni);
- leggere dati dalla tastiera con scanf
- i 'trabocchetti' della scanf e del buffer della tastiera
- stream di input ed operatore >> (cenni)
- utilizzo di espressioni (e non di semplici costanti o variabili) come
parametri per l'invocazione di una funzione
- interi come caratteri e caratteri come interi
- la struttura iterativa (ciclo for): stampa della tabella ASCII per individuare
alcuni caratteri semigrafici per il disegno di una bandiera
- operatore ++
- uso della struttura selettiva (if) per fermare la stampa della tabella
ogni 20 caratteri
- condizioni composte
- 'trabocchetti' con: operatori && e & (bit a bit), = e ==, valore numerico zero
e logico false ...
- inserimento di commenti
- disegnare una bandiera sullo schermo con i caratteri semigrafici
- ciclo indefinito do ... while (simulazione dell'emissione di uno scontrino
alla cassa di un supermercato)
- operatore +=
- cicli annidati: uno esterno per i clienti ed uno interno per i prodotti dello
scontrino
- analisi dell'esecuzione usando il debugger visuale Insight:
. istruire il linker a generare codice contenente le informazioni
richieste dal debugger,
. esecuzione passo passo del programma, tenere sotto osservazione le
variabili (aggiunta di 'watches')
. far avanzare il programma automaticamente fino ad una determinata riga
(breakpoint)
. scegliere il formato di visualizzazione di un watch (binario, ottale,
esadecimale ecc.)
. modificare in tempo reale senza interrompere l'esecuzione del programma
il valore di una variabile
. aggiungere espressioni ai watches
- condizioni di terminazione di un ciclo composte (con operatori && o ||)
- uso della funzione toupper() per convertire caratteri in maiuscolo
- controllo della validità dei dati inseriti con un ciclo
- funzioni: perchè usarle, come si definiscono
- parametri per le funzioni
- variabili locali e globali; vantaggi dell'information hiding; rischi legati
all'uso delle variabili globali anche in riferimenti al riutilizzo del codice
- il valore restituito da una funzione
- parametri di default ed estensibilità del codice
- argomenti della linea di comando passati al programma (argc e argv ...)
- cenni ai vettori di stringhe
- l'espressione condizionale (... ? ... : ...)
- parametri per valore e per indirizzo
- il tipo reference (&)
- funzioni che non restituiscono nulla: il tipo void
- overloading delle funzioni
- dichiarazione ed uso di vettori di interi
- le stringhe come vettori di caratteri; il carattere speciale NULL; dualità
char/int
- inizializzazione in fase di dichiarazione degli elementi di un vettore
- le costanti e perchè è importante usarle con le dichiarazioni dei vettori
- problemi di superamento dei limiti di un vettore
- limite fisico e limite logico di un vettore
- trabocchetti con le stringhe tradizionali: assegnamenti, copie e confronti
- il nuovo tipo string del c++
- un vettore di string in realtà è un vettore di puntatori ad oggetti di tipo
string ...
- funzione sizeof()
- caricare un vettore di stringhe con un ciclo for
- una funzione per caricare un vettore di stringhe: uso del ciclo while
- caricamento in parallelo (con il vettore di stringhe) di un vettore di float
(elenco di prodotti con rispettivi costi)
- uso dei prototipi per le dichiarazioni forward delle funzioni
- funzione di ricerca di una stringa all'interno di un vettore
- introduzione teorica (breve) sulle struct con il c++
- dichiarazione ed uso di vettori di struct
- impelmentazione di un catalogo di schede con caricamento (vettore di struct), salvataggio su disco e lettura da disco
- confronto tra gestione statica e dinamica della RAM
- il tipo di dato 'puntatore'; il puntatore NULL
- allocare dinamicamente variabili semplici con malloc()
- allocare una stringa (leggendola con cin e copiandola in un array di char allocato dinamicamente)
- restituire la memoria con free()
- allocare dinamicamente struct; operatore ->
- implementare la struttura (ADT) lista semplice (inserimento in testa, stampa)
- distruzione di una lista (restituzione della RAM occupata con free() )
- inserimento in coda ad un lista
- ricerca di un nodo della lista in base ad un campo chiave
- suggerimenti per la realizzazione delle funzioni di eliminazione di un nodo e di inserimento di un nodo in un punto intermedio della lista
ED ALTRO!
|
Formato |
.exe (visualizzatore autoscompattante con
partenza automatica della videolezione)
|
Download |
1h15m minuti di videolezione click qui 42 MByte
new: versione avi per utente non Windows click qui |
- Prelevare l'ambiente di sviluppo gratuito Dev c++ (usato a livello mondiale ad
esempio per le Olimpiadi di Informatica) ed un debugger visuale (Insigth 5)
- Installare l'IDE ed il debugger
- Breve panoramica dei tipi di istruzioni disponibili in un linguaggio di
programmazione
- Progetto, file sorgenti e librerie
- Creazione di una applicazione di tipo 'console'
- Primo contatto con l'ambiente di lavoro (IDE): scrittura del codice,
compilazione ed esecuzione
- Concetto intuitivo di tipo, funzione e parametri (che verranno poi
ripresi in successive videolezioni)
- visualizzare sul video valori di vario tipo con printf
- specificatori di tipo per printf e 'trabocchetti' classici legati ai tipi
coinvolti: %d, %f, %o, %h; fissare il numero di cifre dopo la virgola)
- il tipo int e float
- dichiarare variabili int e float; inizializzazione delle variabili;
- casting implicito / esplicito dei tipi
- uso dello stream di output cout con l'operatore << (cenni);
- leggere dati dalla tastiera con scanf
- i 'trabocchetti' della scanf e del buffer della tastiera
- stream di input ed operatore >> (cenni)
- utilizzo di espressioni (e non di semplici costanti o variabili) come
parametri per l'invocazione di una funzione
- interi come caratteri e caratteri come interi
- la struttura iterativa (ciclo for): stampa della tabella ASCII per individuare
alcuni caratteri semigrafici per il disegno di una bandiera
- operatore ++
- uso della struttura selettiva (if) per fermare la stampa della tabella
ogni 20 caratteri
- condizioni composte
- 'trabocchetti' con: operatori && e & (bit a bit), = e ==, valore numerico zero
e logico false ...
- inserimento di commenti
- disegnare una bandiera sullo schermo con i caratteri semigrafici
- ciclo indefinito do ... while (simulazione dell'emissione di uno scontrino
alla cassa di un supermercato)
- operatore +=
- cicli annidati: uno esterno per i clienti ed uno interno per i prodotti dello
scontrino
- analisi dell'esecuzione usando il debugger visuale Insight:
. istruire il linker a generare codice contenente le informazioni
richieste dal debugger,
. esecuzione passo passo del programma, tenere sotto osservazione le
variabili (aggiunta di 'watches')
. far avanzare il programma automaticamente fino ad una determinata riga
(breakpoint)
. scegliere il formato di visualizzazione di un watch (binario, ottale,
esadecimale ecc.)
. modificare in tempo reale senza interrompere l'esecuzione del programma
il valore di una variabile
. aggiungere espressioni ai watches
- condizioni di terminazione di un ciclo composte (con operatori && o ||)
- uso della funzione toupper() per convertire caratteri in maiuscolo
- controllo della validità dei dati inseriti con un ciclo
- funzioni: perchè usarle, come si definiscono
- parametri per le funzioni
- variabili locali e globali; vantaggi dell'information hiding; rischi legati
all'uso delle variabili globali anche in riferimenti al riutilizzo del codice
- il valore restituito da una funzione
- parametri di default ed estensibilità del codice
- argomenti della linea di comando passati al programma (argc e argv ...)
- cenni ai vettori di stringhe
- l'espressione condizionale (... ? ... : ...)
- parametri per valore e per indirizzo
- il tipo reference (&)
- funzioni che non restituiscono nulla: il tipo void
- overloading delle funzioni
- dichiarazione ed uso di vettori di interi
- le stringhe come vettori di caratteri; il carattere speciale NULL; dualità
char/int
- inizializzazione in fase di dichiarazione degli elementi di un vettore
- le costanti e perchè è importante usarle con le dichiarazioni dei vettori
- problemi di superamento dei limiti di un vettore
- limite fisico e limite logico di un vettore
- trabocchetti con le stringhe tradizionali: assegnamenti, copie e confronti
- il nuovo tipo string del c++
- un vettore di string in realtà è un vettore di puntatori ad oggetti di tipo
string ...
- funzione sizeof()
- caricare un vettore di stringhe con un ciclo for
- una funzione per caricare un vettore di stringhe: uso del ciclo while
- caricamento in parallelo (con il vettore di stringhe) di un vettore di float
(elenco di prodotti con rispettivi costi)
- uso dei prototipi per le dichiarazioni forward delle funzioni
- funzione di ricerca di una stringa all'interno di un vettore
- introduzione teorica (breve) sulle struct con il c++
- dichiarazione ed uso di vettori di struct
- impelmentazione di un catalogo di schede con caricamento (vettore di struct), salvataggio su disco e lettura da disco
- confronto tra gestione statica e dinamica della RAM
- il tipo di dato 'puntatore'; il puntatore NULL
- allocare dinamicamente variabili semplici con malloc()
- allocare una stringa (leggendola con cin e copiandola in un array di char allocato dinamicamente)
- restituire la memoria con free()
- allocare dinamicamente struct; operatore ->
- implementare la struttura (ADT) lista semplice (inserimento in testa, stampa)
- distruzione di una lista (restituzione della RAM occupata con free() )
- inserimento in coda ad un lista
- ricerca di un nodo della lista in base ad un campo chiave
- suggerimenti per la realizzazione delle funzioni di eliminazione di un nodo e di inserimento di un nodo in un punto intermedio della lista
ED ALTRO! |