Benvenuti al corso completo di programmazione C, che copre dalla teoria di base fino alle tecniche avanzate, con confronti con linguaggi moderni e riferimenti alla programmazione a basso livello.
- Glossario Comandi - Guida completa alla compilazione e ai comandi GCC
- Quick Reference - Riferimento rapido della sintassi C
NUOVO! Modulo preparatorio da studiare prima del C
- Pensiero computazionale e problem solving
- Analisi della complessità degli algoritmi
- Algoritmi di ricerca e ordinamento
- Strutture dati fondamentali (array, liste, stack, queue, alberi, hash table)
- Ricorsione e tecniche algoritmiche
- Metodologia di debug sistematico
- Esercizi progressivi con soluzioni guidate
- Storia del linguaggio C
- Evoluzione e standard (K&R, ANSI C, C99, C11, C17, C23)
- Perché imparare C oggi
- Setup ambiente di sviluppo
- Spiegazione dettagliata del primo programma
- Debug con GDB passo-passo
- Sintassi di base
- Tipi di dati e variabili con spiegazioni dettagliate
- Operatori aritmetici con esempi pratici
- Strutture di controllo annotate
- Funzioni con esempi completi
- Array e stringhe con diagrammi di memoria
- Esempi pratici completi e commentati
- Esercizi con soluzioni step-by-step
NUOVO! Modulo avanzato per sviluppare visualizzazione profonda della memoria
- Stack vs Heap: anatomia completa con stack frames
- Allineamento e Padding: ottimizzazione struct e cache line
- Endianness: Little-Endian vs Big-Endian, rappresentazione binaria
- Segmenti di Memoria: .text, .data, .bss, .rodata, protezioni
- Visualizzazioni ASCII dettagliate di ogni concetto
- Tools pratici: gdb, valgrind, objdump, readelf
- Obiettivo: Sviluppare il "sesto senso della memoria"
- Puntatori e riferimenti
- Allocazione dinamica della memoria
- Strutture e union
- Typedef ed enum
- Preprocessore
- File I/O
NUOVO! Guida completa per evitare comportamenti indefiniti
- Catalogo completo: 10+ tipi di UB comuni in C
- Buffer Overflow, Use-After-Free, NULL Dereference
- Signed Integer Overflow, Uninitialized Variables
- Sequence Point Violations, Division by Zero
- Strict Aliasing, Data Races, e altro
- Detection: AddressSanitizer, UBSan, Valgrind, TSan
- Prevenzione: Best practices e pattern difensivi
- Tools: Compiler warnings, static analysis
- Puntatori avanzati (puntatori a funzioni, array di puntatori)
- Manipolazione bit
- Ottimizzazione del codice
- Gestione errori avanzata
- Multi-threading (pthreads)
- Gestione memoria avanzata
- NUOVO! Fil-C Compiler: Memory safety, garbage collection, capabilities
- Relazione tra C e Assembly
- Inline Assembly
- Architettura del processore
- Chiamate di sistema
- Performance e ottimizzazione
- C vs Python
- C vs Java
- C vs Rust
- Quando usare C
- Vantaggi e svantaggi
- Lab 1: Sistema di gestione file
- Lab 2: Implementazione di strutture dati
- Lab 3: Network programming
- Lab 4: Sistema embedded simulato
- Lab 5: Parser e compiler basics
- Esercizi per principianti
- Esercizi intermedi
- Esercizi avanzati
- Progetti finali
NUOVO! Programmazione database con C
- Integrazione SQLite in applicazioni C
- Operazioni CRUD (Create, Read, Update, Delete) complete
- Prepared statements e sicurezza SQL
- Transazioni e gestione errori robusta
- Query avanzate e JOIN
- Ottimizzazione e indici
- Progetti completi: Sistema biblioteca e gestionale negozio
- Debug database: Problemi comuni e soluzioni
Alla fine di questo corso sarai in grado di:
- Scrivere programmi C efficienti e sicuri
- Comprendere la gestione della memoria a basso livello
- Leggere e scrivere codice Assembly basilare
- Scegliere il linguaggio appropriato per diversi scenari
- Debuggare problemi complessi
- Ottimizzare codice per performance
- Computer con Linux, macOS, o Windows (WSL)
- Compilatore GCC o Clang
- Editor di testo o IDE (VS Code, CLion, Vim)
- Conoscenze base di informatica
- Inizia dal Modulo 00 - Preparazione: Costruisci le fondamenta algoritmiche
- Passa al Modulo 01-02 - Impara la sintassi base del C
- Continua con Moduli 03-04 - Approfondisci concetti intermedi e avanzati
- Esplora Moduli 05-06 - Assembly e confronti con altri linguaggi
- Pratica con Moduli 07-08 - Laboratori ed esercizi
- Specializzati con Modulo 09 - Database e applicazioni reali
- Segui i moduli in ordine sequenziale
- Compila ed esegui tutti gli esempi
- Fai debug attivo - Non limitarti a leggere, sperimenta!
- Completa gli esercizi di ogni sezione
- Costruisci i progetti nei mini laboratori
- Sperimenta e modifica il codice
MIT License - vedi LICENSE per dettagli
Contributi, correzioni e suggerimenti sono benvenuti! Apri una issue o una pull request.
Nota: Questo è un corso completo e richiede dedizione. Prenditi il tempo necessario per comprendere ogni concetto prima di procedere.