Ciclo while in Java

Concetti Chiave
  • Il ciclo while in Java è un'istruzione di iterazione che esegue un blocco di codice finché una condizione specificata risulta vera.
  • La sintassi del ciclo while prevede una condizione che viene valutata all'inizio di ogni iterazione.
  • Se la condizione è falsa all'inizio, il corpo del ciclo non viene eseguito neppure una volta.

Istruzioni di iterazione

Le istruzioni di iterazione di Java sono for, while e do-while.

Queste istruzioni creano ciò che comunemente vengono definiti cicli. Un ciclo esegue ripetutamente lo stesso insieme di istruzioni finché non viene soddisfatta una condizione di terminazione.

Java offre un tipo di ciclo adatto a qualsiasi esigenza di programmazione. In questa lezione vedremo il ciclo while.

Istruzione while

Il ciclo while è l'istruzione di ciclo più fondamentale di Java. Ripete un'istruzione o un blocco finché la relativa espressione di controllo è vera. La forma generale è la seguente:

while(condizione) {
    // corpo del ciclo
}

L'espressione condizione può essere qualsiasi espressione booleana. Il corpo del ciclo viene eseguito finché l'espressione condizionale rimane vera. Quando condizione diventa falsa, il controllo passa alla riga di codice immediatamente successiva al ciclo. Le parentesi graffe non sono necessarie se viene ripetuta una sola istruzione.

Di seguito è mostrato un ciclo while che effettua il conto alla rovescia da 10, stampando esattamente dieci righe di “tic”:

// Dimostrazione del ciclo while.
class Mentre {
    public static void principale(String[] argomenti) {
        int n = 10;

        while(n > 0) {
            System.out.println("tic " + n);
            n--;
        }
    }
}

Quando viene eseguito questo programma, verrà visualizzato “tic” dieci volte:

tic 10
tic 9
tic 8
tic 7
tic 6
tic 5
tic 4
tic 3
tic 2
tic 1

Poiché il ciclo while valuta la propria espressione condizionale all'inizio, il corpo non viene eseguito neppure una volta se la condizione è falsa sin dall'inizio. Nell'esempio seguente la chiamata a println() non viene mai eseguita:

int a = 10, b = 20;

while(a > b)
    System.out.println("Questo non verrà visualizzato");

Il corpo del while (o di qualsiasi altro ciclo di Java) può essere vuoto. Ciò è possibile perché una istruzione nulla (una che consiste soltanto di un punto e virgola) è sintatticamente valida in Java. Si consideri il programma seguente:

// Il bersaglio di un ciclo può essere vuoto.
class NessunCorpo {
    public static void principale(String[] argomenti) {
        int i, j;

        i = 100;
        j = 200;

        // trova il punto medio fra i e j
        while(++i < --j); // nessun corpo in questo ciclo

        System.out.println("Il punto medio è " + i);
    }
}

Questo programma individua il punto medio tra i e j. Produce il seguente output:

Il punto medio è 150

Il ciclo while funziona nel modo seguente: il valore di i viene incrementato e quello di j viene decrementato. Tali valori vengono quindi confrontati. Se il nuovo valore di i è ancora inferiore a quello di j, il ciclo si ripete. Se i è uguale oppure maggiore di j, il ciclo termina. All'uscita dal ciclo, i conterrà un valore a metà strada fra i valori iniziali di i e j.

(Naturalmente, questa procedura funziona solo se i è inizialmente minore di j.) Non è necessario un corpo del ciclo: tutta l'azione si svolge all'interno dell'espressione condizionale stessa. Nel codice Java professionale, i cicli brevi vengono spesso scritti senza corpo quando l'espressione di controllo può gestire da sola tutti i dettagli.