Programmazione in C
14 Moduli
98 Lezioni
21 Ore

Programmazione in C

Principiante Programmazione C
Effettua il login per accedere

Corso 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

Insegnanti

Prerequisiti

Corsi successivi