Debugging ed Esercizi Pratici
La capacità di diagnosticare e risolvere i difetti del software (debugging) è fondamentale. Affidarsi ciecamente all’inserimento di messaggi testuali (il cosiddetto “printf debugging”) è poco scalabile. I moderni IDE offrono debugger professionali.
Configurazione Debug vs Release
Section titled “Configurazione Debug vs Release”- Debug: Il binario include speciali metadati di tracciamento e disabilita le ottimizzazioni. È la configurazione con cui sviluppare e ispezionare fedelmente le variabili.
- Release: Il compilatore applica ottimizzazioni aggressive (es. eliminazione di variabili intermedie) rendendo difficile rintracciare gli stati. Utile per il rilascio finale.
Controlli di base del Debugger
Section titled “Controlli di base del Debugger”- Breakpoint (Punto di arresto): Arresta l’esecuzione quando il programma raggiunge la riga contrassegnata.
- Step Over: Esegue la riga corrente senza “entrare” all’interno delle funzioni chiamate. (F10 in VS, F6 in Xcode,
nextin GDB). - Step Into: “Entra” all’interno del corpo della funzione chiamata. (F11 in VS, F7 in Xcode,
stepin GDB). - Step Out: Completa l’esecuzione della funzione corrente e ritorna al chiamante. (Shift+F11 in VS, F8 in Xcode,
finishin GDB).
Usa le finestre di ispezione (come Autos in VS o info locals in GDB) per intercettare chiaramente l’assenza di inizializzazione della memoria.
Esercizi Progressivi
Section titled “Esercizi Progressivi”Metti in pratica le basi sintattiche che hai appreso. L’editor sottostante compilerà il tuo C++ nel cloud in un container Piston e confronterà il risultato con l’expectedOutput.
Esercizio 1: Valore Assoluto (Guidato)
Section titled “Esercizio 1: Valore Assoluto (Guidato)”Implementa la logica interna per calcolare il valore assoluto di un int:
- Se , restituisci .
- Se , restituisci .
Esercizio 2: Calcolo delle Spedizioni (Avanzato e Realistico)
Section titled “Esercizio 2: Calcolo delle Spedizioni (Avanzato e Realistico)”Combiniamo assieme variabili, condizionali e chiamate di funzione.
Nel sistema backend di un e-commerce, calcoliamo le tariffe di spedizione:
- Importo carrello euro ➔ spedizione gratuita (
0euro). - Importo compreso tra
20e49euro inclusi ➔ spedizione5euro. - Importo euro ➔ spedizione
10euro.
Implementa la funzione calcola_spedizione(int carrello) e stampane il risultato nel main.
Lo Standard C++
Section titled “Lo Standard C++”Il linguaggio è normato da un comitato internazionale ISO (ISO/IEC 14882). La notazione formale nei documenti fa riferimento alle macro-sezioni usando le parentesi quadre (es. [intro.object]). Per gli standard, documentazione ufficiale e bozze, risorse come cppreference.com sono essenziali.