Strutture di Controllo Condizionali in C++

Guida completa a if, else if, else e switch-case

Le strutture di controllo condizionali sono fondamentali per dirigere il flusso dell’esecuzione del programma in base al verificarsi di determinate condizioni. Scopriamo come utilizzarle efficacemente.

1

L’istruzione if

L’istruzione if è la forma più semplice di controllo condizionale. Permette di eseguire un blocco di codice solo se una condizione risulta vera.

if

(condizione) {

// blocco di codice da eseguire se la condizione è vera
}

📋 Esempio Pratico

Verificare se un numero è positivo:

#include <iostream>
using namespace std;
int main() {
int

numero = 5;

if

(numero > 0) {

cout << “Il numero è positivo.” << endl;
}
return

0;

}

💡 Spiegazione: Se numero è maggiore di 0, il messaggio “Il numero è positivo.” verrà stampato. Se la condizione non fosse verificata, il blocco interno verrebbe saltato.

2

if-else e else if

🔄 L’istruzione if-else

Quando si desidera eseguire un blocco di codice se la condizione è vera e un altro blocco se la condizione è falsa, si utilizza if-else.

if

(condizione) {

// blocco di codice se la condizione è vera
}
else

{

// blocco di codice se la condizione è falsa
}

📝 Esempio Pratico

Verifichiamo se un numero è positivo oppure negativo (o zero):

#include <iostream>
using namespace std;
int main() {
int

numero = -3;

if

(numero > 0) {

cout << “Il numero è positivo.” << endl;
}
else

{

cout << “Il numero non è positivo.” << endl;
}
return

0;

}

💡 Spiegazione: Se numero è maggiore di 0, viene eseguito il blocco dell’if; altrimenti, viene eseguito il blocco dell’else.

📊 L’istruzione else if

Quando si hanno più condizioni da verificare in sequenza, si possono concatenare più blocchi con else if.

if

(condizione1) {

// blocco se condizione1 è vera
}
else if

(condizione2) {

// blocco se condizione2 è vera
}
else

{

// blocco se nessuna condizione precedente è vera
}

📝 Esempio Pratico

Verifichiamo se un numero è positivo, negativo oppure zero:

#include <iostream>
using namespace std;
int main() {
int

numero = 0;

if

(numero > 0) {

cout << “Il numero è positivo.” << endl;
}
else if

(numero < 0) {

cout << “Il numero è negativo.” << endl;
}
else

{

cout << “Il numero è zero.” << endl;
}
return

0;

}

💡 Spiegazione: Se numero è maggiore di 0, verrà eseguito il primo blocco. Se è minore di 0, verrà eseguito il blocco dell’else if. Se nessuna delle due condizioni è vera (il numero è zero), verrà eseguito il blocco dell’else.

3

L’istruzione switch-case

La struttura switch-case è particolarmente utile quando si deve scegliere tra più opzioni basate su un’unica variabile (tipicamente di tipo intero o enum). Risulta più leggibile rispetto a una lunga serie di if-else if.

switch

(espressione) {

case

valore1:

// blocco per valore1
break

;

case

valore2:

// blocco per valore2
break

;

default

:

// blocco se nessun case corrisponde
break

;

}

📋 Esempio Pratico: Menu Interattivo

#include <iostream>
using namespace std;
int main() {
int

scelta;

cout << “Menu:” << endl;
cout << “1. Aggiungi elemento” << endl;
cout << “2. Elimina elemento” << endl;
cout << “3. Visualizza elementi” << endl;
cout << “Inserisci la tua scelta: “;
cin >> scelta;
switch

(scelta) {

case

1:

cout << “Hai scelto di aggiungere un elemento.” << endl;
break

;

case

2:

cout << “Hai scelto di eliminare un elemento.” << endl;
break

;

case

3:

cout << “Hai scelto di visualizzare gli elementi.” << endl;
break

;

default

:

cout << “Scelta non valida. Riprova.” << endl;
break

;

}
return

0;

}

💡 Spiegazione: La variabile scelta viene confrontata con i valori specificati nei vari case. Il break è fondamentale per uscire dallo switch una volta eseguito il blocco corrispondente. Il default viene eseguito se nessun case corrisponde.

⚖️ Confronto tra if-else e switch-case

🎯 Quando usare if-else

  • Condizioni complesse: Espressioni multiple, intervalli, operazioni su variabili di tipo diverso
  • Condizioni non discrete: Valori non interi o non enumerabili
  • Flessibilità: Maggiore controllo su condizioni articolate

🚀 Quando usare switch-case

  • Valori discreti: Confronto con costanti discrete (interi, enumerazioni)
  • Leggibilità: Codice più pulito con molti valori possibili
  • Ottimizzazione: Potenziale ottimizzazione del compilatore

🎓 Conclusioni

if

Esegue un blocco di codice se una condizione è verificata

else

Fornisce una logica di scelta più articolata con diverse condizioni

switch

Ideale per selezioni basate su valori specifici discreti

Scegliere la struttura giusta dipende sempre dal contesto applicativo. Per condizioni complesse o basate su intervalli, if-else è più adatto; per selezioni basate su valori specifici, il switch-case semplifica notevolmente la gestione del flusso.

🎯 Cosa Imparerai Nelle Prossime Lezioni

I cicli
Gli array
Funzioni
Programmazione OOP
Torna in alto