Skip to content

Condizionali, Funzioni e Stampa Formattata

Le istruzioni condizionali e le funzioni rappresentano le fondamenta logiche per manipolare il comportamento del programma.

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 sono blocchi logici riutilizzabili.

  1. Evitano la duplicazione (DRY - Don’t Repeat Yourself): permettono di fissare i bug in un solo punto.
  2. 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.

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);

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.