Condizionali, Funzioni e Stampa Formattata
Le istruzioni condizionali e le funzioni rappresentano le fondamenta logiche per manipolare il comportamento del programma.
Istruzioni Condizionali
Section titled “Istruzioni Condizionali”I costrutti condizionali permettono a un programma di prendere decisioni sulla base di espressioni booleane (true o false).
Gli operatori di confronto standard includono == (uguaglianza), != (disuguaglianza), <, <=, >, >=.
L’istruzione if esegue un blocco composto racchiuso tra parentesi graffe { } se la condizione risulta vera. Si possono concatenare rami alternativi e mutuamente esclusivi usando else if e else:
int x = 0;if (x > 0) { // Eseguito se x è positivo} else if (x < 0) { // Eseguito se x è negativo} else { // Caso di ripiego (se le precedenti sono false)}Le Funzioni
Section titled “Le Funzioni”Le funzioni sono blocchi logici riutilizzabili.
- Evitano la duplicazione (DRY - Don’t Repeat Yourself): permettono di fissare i bug in un solo punto.
- Astrazione: donano nomi espliciti a procedure matematiche o di business.
tipo_ritorno nome_funzione(tipo_parametro1 nome1, tipo_parametro2 nome2) { // Corpo della funzione return valore_ritorno;}L’istruzione return trasferisce il valore al chiamante e interrompe istantaneamente l’esecuzione della funzione.
Inoltre, il compilatore C++ procede dall’alto verso il basso (top-to-bottom), richiedendo che le funzioni vengano dichiarate o definite prima di essere chiamate.
Stampa Formattata con printf
Section titled “Stampa Formattata con printf”La funzione printf accetta una stringa di formato (format string) come modello. Inserendo specificatori come %d per i tipi int, informiamo il motore di inserire i parametri successivi nella stringa.
printf("Dieci %d, Venti %d\n", 10, 20);Pedagogia: printf vs std::cout
Section titled “Pedagogia: printf vs std::cout”Nei corsi C++ si incontra spessissimo std::cout << "Testo" << std::endl;.
Iniziare il percorso formativo con printf è una scelta didattica deliberata. std::cout nasconde concetti avanzati quali stream buffer, classi, operatori di overload e distruttori. Affrontare printf prima consente un approccio lineare; introdurremo cout nel dettaglio tecnico più avanti.
Attenzione tuttavia: printf non offre la sicurezza dei tipi (type-safety) e può generare crash silenziosi o vulnerabilità se ci sono discrepanze tra specificatori (%d) e argomenti passati.