Istruzioni if-else nidificate

17 marzo 2006

Quando si utilizzano più costrutti if-else nidificati, occorre sempre essere sicuri dell’azione else che verrà associata ad un determinato if. Vediamo cosa accade nell’esempio seguente:

if(temperatura < 20)
if(temperatura < 10) cout << "Metti il cappotto!n";
else cout << " Basta mettere una felpa";

Come si vede, il codice non è allineato in maniera ben leggibile ed è facile che il programmatore poco esperto possa confonderne il flusso di esecuzione, non capendo bene a quale istruzione if fa riferimento l’istruzione else finale.

La regola base, in questi casi, dice che un’istruzione else è sempre riferita all’ultima istruzione if che compare nel codice. Ma, è bene non confondersi troppo le idee utilizzando tale regola, poichè ci sono casi in cui appaiono tante istruzioni if-else annidate con la conseguenza che la lettura del codice sarebbe davvero difficile per chiunque.

Per rendere il codice leggibile e per confondersi il meno possibile, è buona norma fare uso sempre delle parentesi graffe e dell’indentazione del codice.

Indentare il codice significa inserire degli spazi prima della scrittura di una riga in modo da facilitarne la comprensione e la leggibilità. L’esempio precedente, indentato e corretto con l’uso delle parentesi diventa:

if(temperatura < 20)
{
  if(temperatura < 10)
  {
    cout << "Metti il cappotto!";
  }
  else
  {
    cout << " Basta mettere una felpa";
  }
}

Oppure, per chi ama le forme abbreviate (ma più insidiose):

if(temperatura < 20)
  if(temperatura < 10) cout << "Metti il cappotto!";
  else cout << "Basta mettere una felpa";

Ora è decisamente più comprensibile. Adesso, infatti, diventa chiaro che l’istruzione else è riferita alla istruzione if(temperatura < 10).

Tutte le lezioni

1 ... 42 43 44 ... 64

Se vuoi aggiornamenti su Istruzioni if-else nidificate inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su Istruzioni if-else nidificate

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy