14
Moduli
98
Lezioni
21
Ore
Programmazione in C
Effettua il login per accedereCorso completo sulla programmazione in linguaggio C, dalle basi della sintassi fino alla gestione della memoria e ai puntatori. Ideale per chi vuole capire come funziona un computer a basso livello.
Contenuti del corso
1
Introduzione alla Compilazione
- Un primo programma in C
- Il processo di compilazione
- Esempio con objdump
- Linguaggi di Sistema
2
Hello World in C
- Hello World!
- Il ruolo del pre-processore
- Il ruolo di main
- Blocchi e scope
- Chiamata a funzione
- Il valore di ritorno
- Punto e virgola
3
Tipi e Variabili
- Cosa sono le variabili
- Dichiarazione e inizializzazione
- Il tipo int
- Il tipo char
- Tipi floating point: float e double
- L'operatore sizeof
- Signed e unsigned
- Integer Overflow
- Casting e conversioni di tipo
- Le costanti
4
Operatori ed Espressioni
- Operatori aritmetici
- Operatori di confronto
- Operatori logici
- Operatori bitwise
- Assegnamento e side effects
- Precedenza e ordine di valutazione
5
Controllo di Flusso
- Istruzione condizionale
- switch
- Il ciclo while
- Il ciclo for
- Il ciclo do-while
- break e continue
6
Funzioni
- Definire e chiamare una funzione
- Il ruolo del prototipo
- Scope e durata delle variabili
- Passaggio per valore
- Il ruolo del file header
- Ricorsione
7
Array, Stringhe e Puntatori
- Introduzione agli array
- Lavorare con gli array
- Variable Length Arrays (VLA)
- Introduzione alle stringhe
- Lavorare con le stringhe
- Introduzione ai puntatori
- Visualizzare la memoria con GDB
- Lavorare con i puntatori
- Array decay
- Aritmetica dei puntatori
- Segmentation Fault
- Off-by-one: un pattern problematico
8
Strutture in C
- Introduzione alle strutture
- Inizializzare una struct
- Il ruolo del typedef
- Lavorare con le struct
- Struct e puntatori
- Memory layout e padding
- Verso la memoria dinamica
9
Sulla Gestione della Memoria Dinamica
- Stack e heap
- malloc e free
- calloc
- realloc
- Copiare le stringhe
- Ownership e lifetime
- Errori comuni nella gestione della Heap
10
Implementiamo una Linked List
- La struttura di una linked-list
- Linked-list vs Array
- Implementiamo una Linked-list
- Generalizziamo la Linked-list
- Linked-list doppiamente linkata
11
Implementiamo le funzioni della libc
- memset
- memcmp
- memcpy
- memmove
- memchr
- strlen
- strncmp
- strchr
- atoi
12
Implementiamo la funzione printf
- Funzioni variadic
- Format strings
- Dispatcher
- Una primitiva utile
- Stampiamo i numeri
- Stampiamo il resto
- Review finale
13
Implementiamo la funzione get_next_line
- Parte 1 - Intuizione base
- Parte 2 - Implementare array dinamico
- Parte 3 - Bug fixing e testing
14
Algoritmi di ordinamento
- Selection Sort
- Bubble Sort
- Insertion Sort