0Pricing
C++ Academy · Lezione

Diramazioni: if-else, ternario, switch-case

Scelga tra catene if-else, espressioni ternarie e istruzioni switch per diramazioni chiare

Diramazioni: if-else, ternario, switch-case è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C++ Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C++ Academy include 4 lezioni in totale.

L'istruzione if

La condizione di base. Il corpo viene eseguito quando la condizione è vera. Le parentesi graffe sono facoltative per una singola istruzione, ma sono sempre consigliate.

int score = 85;
if (score >= 60) {
    std::cout << "Pass\n";
}

Catene if-else

Verifichi le alternative con else if e un else finale. Viene eseguito il primo ramo la cui condizione è vera.

if (score >= 90) std::cout << "A";
else if (score >= 80) std::cout << "B";
else if (score >= 70) std::cout << "C";
else std::cout << "F";

Condizioni booleane

Qualsiasi espressione convertibile in bool è valida. I puntatori risultano falsi quando sono nulli e gli interi quando valgono zero. Sia esplicito per migliorare la chiarezza.

Inizializzare nell'if (C++17)

C++17 consente di dichiarare una variabile all'interno dell'if. La variabile è visibile nell'ambito del corpo dell'if-else.

if (auto it = map.find(key); it != map.end()) {
    std::cout << it->second;
}

L'operatore ternario

condition ? a : b restituisce uno di due valori. È ideale per scelte semplici, ma pessimo per la logica annidata.

int max = (a > b) ? a : b;
std::string msg = (n == 1) ? "item" : "items";

Ternari annidati: da evitare

I ternari annidati sono difficili da leggere. Utilizzi invece if-else o ristrutturi il codice in una funzione di supporto.

// Hard to read
auto label = (n < 0) ? "neg" : (n == 0) ? "zero" : "pos";

// Clearer
std::string label;
if (n < 0) label = "neg";
else if (n == 0) label = "zero";
else label = "pos";

L'istruzione switch

Confronta un valore con diverse costanti. Ogni ramo deve contenere break per evitare il passaggio diretto al case successivo.

switch (day) {
    case 1: std::cout << "Mon"; break;
    case 2: std::cout << "Tue"; break;
    default: std::cout << "?";  break;
}

Fall-through intenzionale

Raggruppi i case che condividono lo stesso codice. C++17 ha aggiunto [[fallthrough]] come indicatore per il compilatore.

switch (c) {
    case 'a': case 'e': case 'i': case 'o': case 'u':
        std::cout << "vowel"; break;
    default:
        std::cout << "consonant";
}

Vincoli di switch

switch funziona solo con tipi interi ed enumerativi. Per le stringhe, utilizzi if-else o una mappa hash.

Inizializzatore in switch (C++17)

Come per if, può dichiarare una variabile all'interno dell'intestazione di switch.

switch (auto value = compute(); value) {
    case 0: ...
    default: ...
}

Pattern: mappa di ricerca

Per i rami indicizzati da stringhe, una std::unordered_map può risultare più chiara di una catena if-else.

std::unordered_map<std::string, std::function<void()>> commands = {
    {"start", []{ start(); }},
    {"stop",  []{ stop();  }}
};
if (auto it = commands.find(cmd); it != commands.end())
    it->second();

Verifica rapida

Che cosa succede se un case in uno switch non contiene break e il case successivo non è vuoto?

Riepilogo

Utilizzi if-else per il branching generale, l'operatore ternario per brevi scelte tra valori e switch quando deve confrontare un valore con molte costanti intere. Le init-statements di C++17 rendono più chiaro l'ambito delle variabili.

Domande Frequenti

La lezione «Diramazioni: if-else, ternario, switch-case» è gratuita?

Sì — il testo completo di «Diramazioni: if-else, ternario, switch-case» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C++ Academy, passa a CoddyKit PRO. Il corso C++ Academy include 4 lezioni in totale.

Cosa imparerò in «Diramazioni: if-else, ternario, switch-case»?

Scelga tra catene if-else, espressioni ternarie e istruzioni switch per diramazioni chiare Eserciti C++ Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C++ Academy?

Non è richiesta alcuna esperienza precedente. C++ Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Diramazioni: if-else, ternario, switch-case»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C++ Academy?

Sì. Ogni lezione C++ Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Diramazioni: if-else, ternario, switch-case
  2. Strutture dei cicli: for, while, do-while
  3. Ciclo for basato su intervallo con i contenitori
  4. Restituzioni anticipate, break, continue e goto
← Torna a C++ Academy