I cicli

In questo articolo vedremo come poter definire delle istruzioni di controllo iterative o cicliche nel nostro codice Java.

I cicli o le strutture di controllo iterative hanno lo scopo di ripetere un’insieme di istruzioni per un numero determinato di volte.
Java mette a disposizione quattro tipi di strutture di controllo di questo tipo i quali fanno parte di una famiglia più ampia denominata control flow statement, ossia istruzioni per il controllo di flusso del programma:

  • for;
  • for-each;
  • while;
  • do-while.

Lo statement for fornisce un modo compatto per iterare su un intervallo di valori. I programmatori spesso si riferiscono ad esso come il “ciclo for” a causa del modo in cui esso cicla più volte fino a che una particolare condizione sia soddisfatta. La forma generale dell’istruzione for può essere espressa come segue:

for (inizializzazione; terminazione; incremento) {
statement (s)
}

Quando si utilizza questa versione del for, bisogna tenere presente che:

  • l’espressione di inizializzazione inizializza il ciclo, è eseguita una sola volta, appena il ciclo inizia;
  • quando l’espressione di terminazione restituisce false, il ciclo termina;
  • l’espressione di incremento viene richiamato dopo ogni iterazione del ciclo, è possibile per questa espressione sia incrementare che decrementare un valore.

Le tre espressioni sono opzionali, infatti è possibile costruire un loop infinito in questo modo:

for ( ; ; ) {
// altro codice
}

Facciamo un piccolo esempio:

class TestFor {
public static void main(String[] args){
for(int i=0; i<10; i++){
System.out.println("Il valore è:  "+ i);
}
}
}

nell’esempio notiamo che la variabile i è stata dichiarata all’interno del for, ciò è lecito e consente di non confondersi con eventuali variabili dichiarate nel nostro programma. Lo scope (visibilità) della variabile i inizia dal punto in cui è dichiarata fino alla chiusura del blocco, in altre parole essa non può essere utilizzata al di fuori del ciclo for.

L’output del programma sarà:

Il valore è: 0
Il valore è: 1
Il valore è: 2
Il valore è: 3
Il valore è: 4
Il valore è: 5
Il valore è: 6
Il valore è: 7
Il valore è: 8
Il valore è: 9

Il costrutto for può essere utilizzato in un’altra forma quando si ha a che fare con oggetti di tipoCollections, ad esempio oggetti di classe ArrayList o List, oppure con array definiti dall’utente, ad esempio i classici vettore[]. Bene in questo caso il costrutto prende il nome di for-each statement ed è disponibile dalla versione 5 di Java ( la versione che ha introdotto i Generics).

La sintassi di questo particolare for è la seguente:

for (valore : array) {

//utilizzo la variabile valore

}

Nella variabile valore viene memorizzato l’elemento dell’array a partire dal primo elemento (alla prima iterazione) fino all’ultimo (all’ultima iterazione), senza utilizzare indici ed incrementi, in questo modo si evitano anche errori nello sforamento dell’array (eccezioni del tipo ArrayIndexOutOfBoundsException). Facciamo un piccolo esempio:

class ForEachTest {
public static void main(String[] args){
int[] numeri={0,2,3,4,5,6,7,8,9};
for (int valore: numeri) {
System.out.println("Il valore è: "+ valore}
}
}

L’output sarà lo stesso dell’esempio precedente.

Il costrutto for-each utilizzato con array di Generics (cioè array di classi a cui  è associato un tipo prestabilito, detto type variable <T>) permette di evitare l’uso degli Iteratori e delle operazioni di Cast.

L’istruzione while esegue ripetutamente un blocco di istruzioni, fin tanto che una particolare condizione risulta true. La sintassi può essere espressa come:

while(espressione){
statement(s)
}

L’istruzione while valuta un’espressione che deve restituire un valore booleano. Se l’espressione restituisce true, l’istruzione while esegue lo statement(s) che si trova nel blocco. L’istruzione prosegue nel testare l’espressione ed esegue lo statement nel blocco finché l’espressione restituisce false. Facciamo un esempio di utilizzo del ciclo while:

class WhileTest {
public static void main(String[] args){
int i= 0;
while (i< 1) {
System.out.println("Il valore è: " + i);
i++;
}
}
}

ed otterremo sempre il medesimo output.

Il ciclo do–while è simile al while standard, la differenza sta nel fatto che mentre nel while, se la condizione di ingresso risulta falsa, le istruzioni all’interno del ciclo non verranno mai eseguite; nel ciclo do-while le istruzioni all’interno del blocco, vengono eseguite almeno una volta.

La sua sintassi è la seguente:

do {
statement(s)
} while (espressione);

riportiamo un esempio di do-while:

class DoWhileDemo {
public static void main(String[] args){
int i= 0;
do {
System.out.println("Il valore è: "+ i);
i++;
} while (i< 10);
}
}
1 Stella2 Stelle3 Stelle4 Stelle5 Stelle (Nessun voto ancora)
Loading...
You can leave a response, or trackback from your own site.

Leave a Reply

*