1. Cicli nella nostra vita

Molto spesso la nostra vita ci impone di compiere più volte le stesse azioni. Ad esempio, supponiamo di dover scansionare un documento composto da molte pagine. Che ripetiamo la stessa procedura più e più volte:

  • Metti la prima pagina sullo scanner
  • Premi il pulsante di scansione
  • Metti la pagina successiva sullo scanner

Questo è difficile da fare manualmente. Sarebbe bello se questo processo potesse essere in qualche modo automatizzato.

Oppure considera un altro esempio: diciamo che voglio contrassegnare tutte le email non lette nella mia casella di posta come spam. Una volta dovevo selezionare ciascuna email una alla volta e contrassegnarla come spam.

Ma i programmatori sono pigri, quindi hanno automatizzato questo processo molto tempo fa: ora selezioni semplicemente un elenco di lettere qualsiasi e fai clic su "contrassegna come spam", quindi il tuo client di posta elettronica scorre l'elenco e sposta ogni e-mail nella cartella spam.

Cosa possiamo dire qui? È super conveniente quando un computer o un programma può eseguire centinaia o migliaia di operazioni monotone con un clic. E ora imparerai come fare anche questo.


2. whileciclo

L'istruzione if-else ha notevolmente ampliato le nostre capacità di programmazione, rendendo possibile la scrittura di programmi che eseguono azioni diverse in situazioni diverse. Ma c'è un'altra cosa che renderà i nostri programmi di un ordine di grandezza più potenti: i loop .

Java ha 4 tipi di loop: while, for, for-eache do-while. Ora approfondiremo il primo di questi.

Un whileciclo è molto semplice. Consiste di due sole parti: una condizione e un corpo del ciclo . Il corpo del ciclo viene eseguito più e più volte finché la condizione è true. In generale, un whileciclo ha questo aspetto:

while (condition)
   statement;
Notazione per un whileciclo con una singola istruzione
while (condition)
{
   block of statements
}
Notazione per un whileciclo con un blocco di istruzioni

È molto semplice. L' istruzione o il blocco di istruzioni viene eseguito più e più volte finché la condizione del ciclo è uguale a true.

Ecco come funziona: prima viene verificata la condizione . Se è vero, viene eseguito il corpo del ciclo (l' istruzione o il blocco di istruzioni ). Quindi la condizione viene nuovamente verificata e il corpo del ciclo viene eseguito nuovamente. E così via finché la condizione diventa falsa.

Se la condizione è sempre vera , il programma non smetterà mai di funzionare. Sarà permanentemente bloccato nel ciclo.

Se la condizione è falsa la prima volta che viene verificata , il corpo del ciclo non verrà eseguito nemmeno una volta.


3. Esempi di loop

Ecco alcuni esempi pratici di loop in azione.

Codice Spiegazione
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
5 righe verranno visualizzate sullo schermo:
5
4
3
2
1
Codice Spiegazione
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
Sullo schermo verranno visualizzate 10 linee:
0
1
...
8
9
Codice Spiegazione
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
Il programma legge i numeri dalla tastiera finché i numeri vengono inseriti.
Codice Spiegazione
while (true)
   System.out.println("C");
Il programma stamperà all'infinito la lettera Csullo schermo.
Codice Spiegazione
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Il programma leggerà le righe dalla tastiera

finché non exitviene inserito.

Nell'esempio precedente, il equals()metodo viene utilizzato per confrontare le stringhe. Se le stringhe sono uguali, la funzione restituirà true. Se le stringhe non sono uguali, restituirà false.



4. Loop all'interno di un loop

Quando hai imparato a conoscere le istruzioni condizionali, hai visto che puoi usarle per implementare una logica complessa combinando più istruzioni condizionali. In altre parole, utilizzando un'istruzione ifall'interno di ifun'istruzione.

Puoi fare la stessa cosa con i loop. Per scrivere un loop all'interno di un loop, devi scrivere il secondo loop all'interno del corpo del primo loop. Sarà simile a questo:

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
whileloop (con un blocco di istruzioni ) all'interno di un altro whileloop

Diamo un'occhiata a tre compiti.

Compito 1 . Supponiamo di voler scrivere un programma che visualizzi la parola Momsullo schermo 4 volte. Un loop è esattamente ciò di cui abbiamo bisogno. E il nostro codice sarà simile a questo:

Codice Spiegazione
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
Sullo schermo verranno visualizzate 4 righe:
Mom
Mom
Mom
Mom

Compito 2 . Vogliamo scrivere un programma che mostri 5 lettere Asu una sola riga. Per fare questo, abbiamo bisogno ancora una volta di un ciclo. Ecco come apparirà il codice:

Codice Spiegazione
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
Invece di println(), useremo print(). Altrimenti, ogni lettera A finirebbe su una riga separata.

L'output dello schermo sarà:
AAAAA

Compito 3 . Vogliamo visualizzare un rettangolo composto dalla lettera As. Il rettangolo dovrebbe essere composto da 4 righe per 5 colonne. Per fare ciò, ora abbiamo bisogno di un ciclo annidato. Prenderemo semplicemente il nostro primo esempio (quello in cui emettiamo 4 righe) e sostituiremo il codice per l'output di una riga con il codice del secondo esempio.

Codice Spiegazione
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
L' anello esterno è viola. Utilizza la nvariabile per contare il numero di iterazioni del ciclo.

L' anello interno è verde. Utilizza la mvariabile per contare il numero di iterazioni del ciclo.

Dobbiamo spostare esplicitamente il cursore sulla riga successiva dopo che il ciclo interno è completo. Altrimenti tutte le lettere stampate dal programma finiranno su una riga.

L'output dello schermo sarà:
AAAAA
AAAAA
AAAAA
AAAAA

I cicli esterno e interno devono utilizzare variabili diverse per contare il numero di iterazioni del ciclo. Abbiamo anche dovuto aggiungere il System.out.println()comando dopo il ciclo interno, poiché quel ciclo visualizza la lettera As sulla stessa riga. Una volta visualizzate le lettere su una riga, qualcuno deve spostare il cursore su una nuova riga.



5. Confronto tra loop Java e Pascal

Molti di voi hanno studiato Pascal al liceo. Per facilitare la comprensione del materiale qui, dai un'occhiata a questo confronto di whileloop scritti in Pascal e Java. Se non conosci Pascal, salta questa parte.

Pasquale Giava
i := 3;
While i >= 0 Do
   Begin
      WriteLn(i);
      i := i - 1;
   End;
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
i := 0;
While i < 3 Do
   Begin
      WriteLn(i);
      i := i + 1;
   End;
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
IsExit := False;
While Not isExit Do
   Begin
      ReadLn(s);
      isExit :=  (s = 'exit');
   End;
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
While True Do
   WriteLn('C');
while (true)
   System.out.println("C");
While True Do
   Begin
     ReadLn(s);
     If s = 'exit' Then
       Break;
   End;
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}