Note sulla nidificazione e sull'allineamento

In alcuni programmi visti, alcune istruzioni composte come per esempio i cicli contenevano al loro interno altre istruzioni composte come per esempio le istruzioni condizionali. Questo è vero in generale: una istruzione composta può contenere al suo interno altre istruzioni, siano esse semplici o composte a loro volta. Per esempio, all'interno di un ciclo for si può mettere un altro ciclo for che può contenere una istruzione condizionale, ecc. In questi casi, occorre prestare attenzione alla chiusura delle parentesi. Se per esempio abbiamo due istruzioni di ciclo messe l'una dentro l'altra, nel modo seguente:

for(....) {
  ...
  ...
  for(....) {
    ...
    ...
  }
  ...
  ...
}

allora ognuna delle due istruzioni ha la struttura for(....) {istruzioni}. Se una delle istruzioni è ancora un ciclo, questa contiene ancora for(....) {istruzioni}. Per questa ragione, alla fine del blocco occorrono due parentesi graffe chiuse: la prima è l'ultimo carattere del ciclo più interno, mentre la seconda è l'ultimo carattere del ciclo esterno.

In programmi complicati la struttura dei programmi con molte istruzioni composte l'una dentro l'altra può non risultare molto chiara. Questo può portare a degli errori di programmazione.

L'allineamento serve a rendere più chiaro un programma, e permette quindi di individuare errori legati alla struttura del programma. Il metodo generale è molto semplice: ogni volta che si ha una istruzione composta, le sue istruzioni componenti vengono scritte uno o due caratteri più avanti di tutte le altre. Se all'interno di una istruzione composta appare un'altra istruzione composta, le istruzioni che compongono quest'ultima vengono scritte altri due caratteri più avanti, per cui si lasciano quattro spazi prima dell'istruzione.

Dal punto di vista del compilatore, l'allineamento non è necessario, dal momento che tutti gli spazi vengono ignorati. D'altra parte, l'uso di questa tecnica permette di:

  1. capire di quale istruzione composta una istruzione semplice fa parte;
  2. capire se mancano parentesi chiuse, e dove;
  3. capire se le parentesi sono state chiuse nel punto sbagliato.

Nella scrittura di programmi lunghi questi vantaggi risultano immediatamente chiari.