1. Introduzione al ciclo do-while
Immagina: stai scrivendo un programma che indovina il numero pensato dall'utente. Bisogna almeno una volta chiedere il numero e ripetere la richiesta finché non lo indovini. Se si verifica la condizione in anticipo, il normale while potrebbe non entrare affatto nel ciclo.
Qui aiuta do-while. A differenza di while, esegue sempre il corpo del ciclo almeno una volta — anche se la condizione è subito falsa. È come ricevere una gomma da masticare alla cassa, indipendentemente dall'acquisto.
Sintassi di do-while
È semplice: un'altra “coppia” di parole chiave in Java.
do
{
// Corpo del ciclo: questo codice verrà eseguito almeno una volta
}
while (uslovie);
do-while
Fai attenzione al punto e virgola ; alla fine dopo la parentesi della condizione! Nel normale while non c'è, qui invece sì — una trappola classica per i principianti.
Descrizione dei passaggi del ciclo do-while
- Ingresso nel corpo del ciclo (sempre almeno una volta).
- Verifica della condizione.
- Se la condizione è vera — ripetere il corpo.
- Se la condizione è falsa — uscire dal ciclo.
2. Differenza rispetto al while normale
Ricordiamo lo scenario principale di funzionamento del normale while:
while (uslovie)
{
// Corpo del ciclo
}
Il corpo non verrà eseguito neanche una volta se la condizione è falsa fin dall'inizio!
Ora un esempio con do-while:
do
{
// Corpo del ciclo
}
while (uslovie);
Il corpo del ciclo verrà eseguito almeno una volta, anche se la condizione è subito falsa!
Illustriamo la differenza con il codice:
// while normale
int count = 0;
while (count > 0)
{
System.out.println("count = " + count);
count--;
}
// Non verrà stampato nulla
// do-while
int count2 = 0;
do
{
System.out.println("count2 = " + count2);
count2--;
}
while (count2 > 0);
// Stamperà "count2 = 0", anche se la condizione è falsa!
A volte può sembrare una “stranezza”, ma è esattamente il comportamento necessario con l'input dell'utente e la validazione dei dati.
3. Scenari pratici d'uso di do-while
Dove si incontra più spesso questo ciclo?
Validazione dei dati
Scenario comune: chiediamo all'utente di inserire dati corretti (per esempio, una password di almeno 6 caratteri) e ripetiamo la richiesta finché tutto non è corretto.
String password;
do
{
System.out.print("Inserisci una nuova password (almeno 6 caratteri): ");
password = console.nextLine();
}
while (password.length() < 6);
System.out.println("Password accettata!");
Il corpo del ciclo verrà eseguito almeno una volta — anche se l'utente inserisce subito una password lunga.
Menu nelle applicazioni da console
Pattern frequente: mostrare un menu, attendere un comando e uscire solo con un comando speciale.
String command;
do
{
System.out.println("Menu:");
System.out.println("1. Mostra il saluto");
System.out.println("2. Esci");
System.out.print("Scegli un'azione: ");
command = console.nextLine();
if (command.equals("1"))
{
System.out.println("Ciao, mondo!");
}
else if (!command.equals("2"))
{
System.out.println("Comando sconosciuto.");
}
}
while (!command.equals("2"));
System.out.println("Ciao!");
4. Tabella: confronto tra while e altri cicli
| Tipo di ciclo | Verifica della condizione | Quante volte può essere eseguito il corpo | Quando è opportuno |
|---|---|---|---|
|
Prima | 0 o più volte | Quando il numero di ripetizioni non è noto in anticipo |
|
Dopo | 1 o più volte | Quando è importante eseguire il corpo almeno una volta |
|
Prima | 0 o più volte | Quando è noto il numero di iterazioni |
GO TO FULL VERSION