For, do, switch

Il costrutto for

Completiamo il discorso dei cicli presentando for e do. Essi sono due cicli, equivalenti al while, con delle caratteristiche particolari. Ecco la sintassi per il for, nel caso d’utilizzo di una o più istruzioni da iterare:

 

for (inizializzazione; espr. booleana; aggiornamento)

istruzione;

    for (inizializzazione; espr. booleana; aggiornamento)

    {

        istruzione1;

        ...........;

        istruzionen;

    }

 

Presentiamo un esempio che stampa i primi 10 numeri partendo da 10 e terminando ad 1:

 

class ForDemo

{

    public static void main(String args[])

    {

        for (int n=10; n>0; n--)

                   {

            System.out.println(n);

                   }

    }

}

 

N.B.: in questo caso notiamo che la sintassi è più compatta rispetto a quella relativa al while. Tra le parentesi tonde relative ad un ciclo for, addirittura dichiariamo una variabile locale n (che smetterà di esistere al termine del ciclo). Potevamo comunque anche dichiararla prima del ciclo, nel caso fosse stata nostra intenzione utilizzarla anche al di fuori di esso. In pratica, se nel while utilizzavamo le parentesi tonde solo per l’espressione booleana, nel for le utilizziamo per inserirci rispettivamente, prima l’inizializzazione di una variabile, poi l’espressione booleana, ed infine l’aggiornamento che sarà eseguito ad ogni iterazione. Da notare che questi tre istruzioni possono anche essere completamente indipendenti tra loro.

Questo è il ciclo più utilizzato, vista la sua grande semplicità d’utilizzo. Il ciclo while, è molto utilizzato quando non si conosce il numero delle volte che le istruzioni devono essere eseguite, e soprattutto nei cicli infiniti, dove la sintassi è banale:

 

while (true)

         {

        . . .

        . . .

         }

 

- Il costrutto do

Nel caso in cui si desideri la garanzia, che le istruzioni da iterare siano eseguite almeno una volta, dobbiamo utilizzare il ciclo do, eccone la sintassi:

 

[inizializzazione;]

    do {

        corpo;

        [iterazione;]

    } while (terminazione);

 

in questo caso viene eseguito prima il blocco di codice, e poi, viene valutata l’espressione booleana che si trova a destra della parola chiave while. Ovviamente se l’espressione booleana è verificata, viene rieseguito il blocco di codice, altrimenti termina. Notare il punto e virgola situato alla fine del costrutto.

- Il costrutto switch

Il costrutto switch, si presenta come alternativa al costrutto if. A differenza di if, non è possibile utilizzarlo in ogni situazione in cui c’è bisogno di scegliere tra l’esecuzione di parti di codice diverse. Di seguito vi presentiamo la sintassi:

 

switch (variabile di test) {

        case valore1:

            istruzione1;

        break;

        case valore2: {

            istruzione2;

            ...........;

            istruzionek;

        }

        break;

        case valore3:

        case valore4: {  //blocchi di codice opzionale

            istruzionek+1;

            ...........;

            istruzionej;

        }

        break;

        [default: {    //clausola default opzionale

            istruzionej+1;

            ...........;

            istruzionen;    

        }]

    }

 

In pratica, a seconda del valore intero che assume la variabile di test, vengono eseguite determinate espressioni. La variabile di test, deve essere di un tipo di dato compatibile con un intero, ovvero un byte, uno short, un char, oppure, ovviamente un int. Inoltre valore1...valoren devono essere espressioni costanti e diverse tra loro. Notare che la parola chiave break, provoca l’immediata uscita dal costrutto. Se infatti, dopo aver eseguito tutte le istruzioni che seguono un’istruzione di tipo case, non è presente un’istruzione break, verranno eseguite tutti gli statement che seguono gli altri case, sino a quando non si arriverà ad un break. Di seguito viene presentato un esempio:

 

class SwitchStagione {

    public static void main(String args[]) {

    int mese=4;

    String stagione;

    switch (mese) {

        case 12:

        case 1:

        case 2:

            stagione="inverno";

        break;

        case 3:

        case 4:

        case 5:

            stagione="primavera";

        break; //senza questo break si ha estate

        case 6:

        case 7:

        case 8:

            stagione="estate";

        break;

        case 9:

        case 10:

        case 11:

        stagione="autunno";

        break;

        default: //la clausola default è opzionale

            stagione="non identificabile";

        }    

        System.out.println("La stagione e’ " +stagione+ ".");

    }

}

 

- Due importanti parole chiave: break e continue

La parola chiave break, è stata appena presentata come comando capace di fare terminare il costrutto switch. Ma break, è utilizzabile anche per far terminare un qualsiasi ciclo. Il seguente frammento di codice, provoca la stampa dei primi dieci numeri interi:

 

int i=0;

    while (true) //ciclo infinito

        {

        if (i>10)

        break;

        System.out.println(i);

        i++;

         }

 

Oltre al break, esiste la parola chiave continue, che fa terminare non l’intero ciclo, ma solo l’iterazione corrente. Il seguente frammento di codice provoca la stampa dei primi dieci numeri, escluso il cinque:

 

int i=0;

    do

        {

        i++;    

        if (i==5)

        continue;

        System.out.println(i);

         }

    while(i<=10);

 

Sia break sia continue, possono utilizzare etichette (label) per specificare, solo nel caso di cicli annidati, su quale ciclo devono essere applicati. Il seguente frammento di codice stampa una sola volta, i soliti primi dieci numeri interi:

 

int j=0;

    pippo: //possiamo dare un qualsiasi nome ad una //label

    while (true)

         {

        while (true)

                  {

            if (j>10)

            break pippo;

            System.out.println(j);

            j++;

                 }

         }

 

 



 

 



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Redazione
Condividi le tue opinioni su questo articolo!