CodeGym /Corsi /JAVA 25 SELF /Ciclo while: introduzione e particolarità

Ciclo while: introduzione e particolarità

JAVA 25 SELF
Livello 4 , Lezione 1
Disponibile

1. Introduzione

Nella programmazione spesso bisogna eseguire le stesse azioni molte volte di seguito. Ad esempio:

  • Scorrere tutti gli elementi di una lista.
  • Leggere valori da tastiera finché l'utente non inserisce quello richiesto.
  • Calcolare la somma di tutti i numeri da 1 a 100.
  • Richiedere all'utente la password finché non è corretta.

Se si prova a realizzare tutto ciò senza cicli, il risultato sarà prolisso, noioso e non scalabile. Immaginate di scrivere un programma-calcolatrice e decidere di sommare i numeri da 1 a 10 manualmente:

int sum = 0;
sum = sum + 1;
sum = sum + 2;
sum = sum + 3;
// ... e così 10 volte. Eh già.
Ripetizione manuale senza ciclo — scomoda!

Vi annoierete prima di finire! La soluzione — i cicli. Permettono di descrivere la ripetizione delle azioni in modo conciso e chiaro. Oggi conosceremo il ciclo più basilare, ma dannatamente utile — while.

2. Conoscere il ciclo while

Sintassi e schema di base

Il ciclo while è un «pappagallo» nel mondo della programmazione: ripete lo stesso frammento di codice finché una certa condizione è vera. Non appena la condizione smette di essere vera, il pappagallo tace (il ciclo termina).

Sintassi:

while (uslovie)
{
    // Corpo del ciclo
}
Scrittura del ciclo while con un blocco di istruzioni

Diagramma

Ecco un semplice diagramma di flusso per capire come funziona il ciclo while:

uml-while

3. Esempi: il ciclo while in azione

Contatore classico

Scriviamo un semplice programma che conta da 1 a 5 e stampa i numeri:

int i = 1;
while (i <= 5)
{
    System.out.println("Passo n° " + i);
    i++; // Non dimenticate di incrementare il contatore!
}
// Stamperà:
// Passo n° 1
// Passo n° 2
// Passo n° 3
// Passo n° 4
// Passo n° 5

Attenzione: se vi dimenticate di incrementare la variabile i, il ciclo non terminerà mai (il nostro pappagallo diventerà immortale e ripeterà per sempre). Questo si chiama ciclo infinito — una cosa che fa paura.

Input da tastiera fino al valore richiesto

Spesso un ciclo viene usato per «spingere» l'utente fino alla risposta corretta:

String password = "";
while (!password.equals("qwerty"))
{
    System.out.print("Inserisci la password: ");
    password = console.nextLine();
}
System.out.println("Benvenuto!");

Qui il programma chiede di inserire la password finché non digitate la magica "qwerty". Non dimenticate: se rimuovete la riga password = console.nextLine();, il ciclo tornerà a essere infinito (continuerà a chiedere la password ma non leggerà l'input — rimarrà bloccato per sempre, come un robot rotto).

4. Tipi e scenari d'uso del ciclo while

Ciclo while semplice

Questo ciclo, come mostrato sopra, verifica la condizione prima della prima iterazione. Se la condizione è falsa subito — il corpo del ciclo non verrà eseguito nemmeno una volta.

Esempio: condizione falsa fin dall'inizio

int i = 10;
while (i < 5)
{
    System.out.println(i); // Non verrà eseguito mai!
}

Il che, in effetti, è logico. Proprio come è scritto qui.

Cicli while annidati

A volte serve un ciclo dentro un altro ciclo. Ad esempio, scorrere tutte le righe e, in ciascuna di esse, controllare tutti i caratteri. A questo punto è più un'avventura, ma ecco un esempio semplice:

int i = 1;
while (i <= 3)
{
    int j = 1;
    while (j <= 2)
    {
        System.out.println("i = " + i + ", j = " + j);
        j++;
    }
    i++;
}

// i = 1, j = 1
// i = 1, j = 2
// i = 2, j = 1
// i = 2, j = 2
// i = 3, j = 1
// i = 3, j = 2

Approfondiremo i cicli annidati tra un paio di lezioni, volevo solo spaventarvi un po' :)

Ciclo infinito

The while loop in real life: While Barney is in the bar — Moe throws him out. But Barney always returns... The condition never changes = infinite loop!

A volte i cicli finiscono, altre — vivono per sempre.

while (true)
{
    System.out.println("Sono eterno!");
}

Si usa di rado, di solito per qualche processo in background (ad esempio, il lavoro di un server), ma capita anche nella pratica.

5. Come non fare sciocchezze: errori comuni con while

In programmazione un ciclo è come l'elettricità: è fantastico, ma bisogna conoscerne le regole di sicurezza.

Problema 1: ciclo infinito per distrazione

Moltissimi principianti si dimenticano di aggiornare la variabile da cui dipende la condizione. Di conseguenza il ciclo gira «all'infinito» e bisogna interrompere il programma forzatamente (per esempio, con la combinazione Ctrl + C).

int i = 1;
while (i <= 5)
{
    System.out.println(i);
    // i++;  // Ops! Dimenticati di incrementare i
}

Problema 2: condizione impostata in modo errato

A volte lo sviluppatore si scava la fossa da solo: la condizione, al contrario, non è mai vera. Di conseguenza il ciclo non viene eseguito affatto.

int i = 10;
while (i < 5)
{
    System.out.println(i); // Questo codice non verrà mai eseguito.
    i++;
}

Problema 3: errore con i tipi di dati

Nella condizione del ciclo deve sempre esserci un'espressione booleana — cioè il risultato del calcolo deve essere true o false.

int number = 5;
while (number) // Errore! Ci si aspettava un boolean, non un int.
{
    number--;
}
1
Compito
JAVA 25 SELF, livello 4, lezione 1
Bloccato
Conto alla rovescia prima del lancio 🚀
Conto alla rovescia prima del lancio 🚀
1
Compito
JAVA 25 SELF, livello 4, lezione 1
Bloccato
Sblocco dello smartphone 📱
Sblocco dello smartphone 📱
1
Compito
JAVA 25 SELF, livello 4, lezione 1
Bloccato
Elenco dei posti nel cinema 🎞️
Elenco dei posti nel cinema 🎞️
1
Compito
JAVA 25 SELF, livello 4, lezione 1
Bloccato
Registrazione delle spese per il caffè ☕
Registrazione delle spese per il caffè ☕
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION