1. Loops in ons leven

Heel vaak vereist ons leven dat we vele malen dezelfde acties uitvoeren. Stel dat ik een document moet scannen dat uit veel pagina's bestaat. Dat we dezelfde procedure keer op keer herhalen:

  • Leg de eerste pagina op de scanner
  • Druk op de scanknop
  • Leg de volgende pagina op de scanner

Dit is moeilijk handmatig te doen. Het zou mooi zijn als dit proces op de een of andere manier geautomatiseerd zou kunnen worden.

Of neem een ​​ander voorbeeld: stel dat ik alle ongelezen e-mails in mijn inbox als spam wil markeren. Ooit moest ik elke e-mail een voor een selecteren en markeren als spam.

Maar programmeurs zijn lui, dus automatiseerden ze dit proces lang geleden: nu selecteer je gewoon een lijst met letters en klik je op "markeren als spam", en dan doorloopt je e-mailclient de lijst en verplaatst elke e-mail naar de spammap.

Wat kunnen we hier zeggen? Het is superhandig als een computer of programma honderden of duizenden eentonige bewerkingen met één klik kan uitvoeren. En nu leer je ook hoe je dit moet doen.


2. whilelus

De if-els-opdracht breidde onze programmeermogelijkheden aanzienlijk uit, waardoor het mogelijk werd programma's te schrijven die verschillende acties in verschillende situaties uitvoeren. Maar er is nog iets dat onze programma's een orde van grootte krachtiger zal maken: loops .

Java heeft 4 soorten lussen: while, for, for-eachen do-while. We zullen nu ingaan op de allereerste hiervan.

Een whilelus is heel eenvoudig. Het bestaat uit slechts twee delen: een voorwaarde en een luslichaam . De hoofdtekst van de lus wordt keer op keer uitgevoerd zolang de voorwaarde is true. Over het algemeen ziet een whilelus er zo uit:

while (condition)
   statement;
Notatie voor een whilelus met een enkele instructie
while (condition)
{
   block of statements
}
Notatie voor een whilelus met een blok instructies

Het is heel simpel. De instructie of het blok met instructies wordt keer op keer uitgevoerd zolang de lusvoorwaarde gelijk is aan true.

Zo werkt het: eerst wordt de conditie gecontroleerd. Als het waar is, wordt de hoofdtekst van de lus uitgevoerd (de instructie of het blok met instructies ). Vervolgens wordt de voorwaarde opnieuw gecontroleerd en wordt de lus opnieuw uitgevoerd. En zo verder totdat de voorwaarde onwaar wordt.

Als de voorwaarde altijd waar is , zal het programma nooit stoppen met draaien. Het zal permanent in de lus blijven steken.

Als de voorwaarde de eerste keer dat deze wordt gecontroleerd onwaar is, wordt de hoofdtekst van de lus niet één keer uitgevoerd.


3. Voorbeelden van lussen

Hier zijn enkele praktische voorbeelden van loops in actie.

Code Uitleg
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
Er worden 5 regels op het scherm weergegeven:
5
4
3
2
1
Code Uitleg
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
Er worden 10 regels op het scherm weergegeven:
0
1
...
8
9
Code Uitleg
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
Het programma leest getallen van het toetsenbord zolang er cijfers worden ingevoerd.
Code Uitleg
while (true)
   System.out.println("C");
Het programma zal de brief eindeloosC op het scherm afdrukken.
Code Uitleg
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Het programma leest regels van het toetsenbord

totdat exitis ingevoerd.

In het vorige voorbeeld equals()wordt de methode gebruikt om strings te vergelijken. Als de strings gelijk zijn, retourneert de functie true. Als de strings niet gelijk zijn, wordt geretourneerd false.



4. Lus binnen een lus

Toen je leerde over voorwaardelijke uitspraken, zag je dat je ze kunt gebruiken om complexe logica te implementeren door meerdere voorwaardelijke uitspraken te combineren. Met andere woorden, door een ifstatement in een ifstatement te gebruiken.

Je kunt hetzelfde doen met lussen. Om een ​​lus binnen een lus te schrijven, moet u de tweede lus in de hoofdtekst van de eerste lus schrijven. Het zal er ongeveer zo uitzien:

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
whilelus (met een blok instructies ) binnen een andere whilelus

Laten we drie taken bekijken.

Taak 1 . Laten we zeggen dat we een programma willen schrijven dat het woord Mom4 keer op het scherm laat zien. Een lus is precies wat we nodig hebben. En onze code ziet er ongeveer zo uit:

Code Uitleg
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
Er worden 4 regels op het scherm weergegeven:
Mom
Mom
Mom
Mom

Taak 2 . We willen een programma schrijven dat 5 letters As op één regel weergeeft. Om dit te doen, hebben we opnieuw een lus nodig. Dit is hoe de code eruit zal zien:

Code Uitleg
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
In plaats van println()gebruiken we print(). Anders A zou elke letter op een aparte regel terechtkomen.

De schermuitvoer is:
AAAAA

Taak 3 . We willen een rechthoek weergeven die bestaat uit de letter As. De rechthoek moet uit 4 rijen bij 5 kolommen bestaan. Om dit te bereiken, hebben we nu een geneste lus nodig. We nemen gewoon ons eerste voorbeeld (het voorbeeld waarin we 4 regels uitvoeren) en vervangen de code voor het uitvoeren van één regel door de code uit het tweede voorbeeld.

Code Uitleg
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
De buitenste lus is paars. Het gebruikt de nvariabele om het aantal iteraties van de lus te tellen.

De binnenlus is groen. Het gebruikt de mvariabele om het aantal herhalingen van de lus te tellen.

We moeten de cursor expliciet naar de volgende regel verplaatsen nadat de binnenste lus is voltooid. Anders komen alle letters die het programma afdrukt op één regel terecht.

De schermuitvoer is:
AAAAA
AAAAA
AAAAA
AAAAA

De buitenste en binnenste lussen moeten verschillende variabelen gebruiken om het aantal herhalingen van de lus te tellen. We moesten ook het System.out.println()commando toevoegen na de binnenste lus, aangezien die lus de letter As op dezelfde regel weergeeft. Zodra de letters op een regel worden weergegeven, moet iemand de cursor naar een nieuwe regel verplaatsen.



5. Loops Java versus Pascal vergelijken

Velen van jullie hebben Pascal gestudeerd op de middelbare school. Bekijk deze vergelijking van whilelussen geschreven in Pascal en Java om het u gemakkelijker te maken het materiaal hier te begrijpen. Als je Pascal niet kent, sla dit deel dan gewoon over.

Pascal Java
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;
}