1. Loops vergelijken: for
vswhile
Een while
lus kan overal worden gebruikt waar een statement of een groep statements meerdere keren moet worden uitgevoerd. Maar van alle mogelijke scenario's is er één de moeite waard om te benadrukken.
We hebben het over de situatie waarin de programmeur (de maker van het programma) van tevoren weet hoe vaak de lus moet worden uitgevoerd. Dit wordt meestal afgehandeld door een speciale tellervariabele te declareren en vervolgens de variabele te verhogen (of te verlagen) met 1
elke iteratie van de lus.
Alles lijkt te werken zoals het hoort, maar erg handig is het niet. Voor de lus stellen we de beginwaarde van de tellervariabele in. Vervolgens controleren we in de staat of deze de eindwaarde al heeft bereikt. Maar meestal veranderen we de waarde helemaal aan het einde van de lus.
En wat als het lichaam van de lus groot is? Of als we meerdere geneste lussen hebben? Over het algemeen is het in deze gevallen wenselijk om al deze informatie over tellervariabelen op één plek te verzamelen. En daarom hebben we de for
lus in Java. Het ziet er ook niet erg ingewikkeld uit:
for (statement 1; condition; statement 2)
{
block of statements
}
Een while
lus heeft alleen een voorwaarde tussen haakjes, maar een for
lus voegt twee statements toe, gescheiden door puntkomma's.
De realiteit is eenvoudiger dan het klinkt: de compiler zet een for
lus while
als volgt om in een gewone lus:
statement 1;
while (condition)
{
block of statements
statement 2;
}
Of beter nog, laten we dit aantonen met een voorbeeld. De twee onderstaande codefragmenten zijn identiek.
Optie 1 | Optie 2 |
---|---|
|
|
We hebben zojuist alle code verzameld die betrekking heeft op de i
tellervariabele.
In een for
lus wordt instructie 1 slechts één keer uitgevoerd, voordat de lus zelf begint. Dit is duidelijk te zien in het tweede codefragment
instructie 2 wordt hetzelfde aantal keren uitgevoerd als de hoofdtekst van de lus, en elke keer dat deze wordt uitgevoerd nadat de hele hoofdtekst van de lus is uitgevoerd
2. Waar de for
lus wordt gebruikt
De for
lus is waarschijnlijk het meest gebruikte type lus in Java. Het wordt overal gebruikt, voor programmeurs is het gewoon duidelijker en handiger dan een while
lus. Vrijwel elke while
lus kan worden omgezet in een for
lus.
Voorbeelden:
herhalingslus | for loop |
---|---|
|
|
|
|
|
|
|
|
|
|
Let op het laatste voorbeeld. De instructies voor het werken met de lusteller ontbreken. Er is geen teller en geen verklaring.
In een for
lus kunt u met Java de "instructie om de teller te initialiseren" en de "instructie om de teller bij te werken" weglaten. Zelfs de uitdrukking die de lusvoorwaarde definieert, kan worden weggelaten.
3. Nuances van het gebruik van de for
lus
Een belangrijk punt over het gebruik van for
loops en break
en continue
statements.
Een break
instructie in een for
lus werkt hetzelfde als in een while
lus: het beëindigt de lus onmiddellijk. Een continue
instructie slaat de lusbody over, maar niet statement 2
(waardoor de lusteller verandert).
Laten we nog eens kijken hoe for
en while
loops gerelateerd zijn.
for (statement 1; condition; statement 2)
{
block of statements
}
statement 1;
while (condition)
{
block of statements
statement 2;
}
Als een instructie in een continue
for
lus wordt uitgevoerd , wordt de rest van het blok met instructies overgeslagen, maar instructie 2 (degene die werkt met de for
variabele counter van de lus) wordt nog steeds uitgevoerd.
Laten we terugkeren naar ons voorbeeld met het overslaan van getallen die deelbaar zijn door 7.
Deze code wordt voor altijd herhaald | Deze code zal goed werken |
---|---|
|
|
De code die de while
lus gebruikt zal niet werken — ik zal nooit groter zijn dan 7. Maar de code met de for
lus zal prima werken.
4. Loops vergelijken: Java versus Pascal
Overigens heeft Pascal ook een For
lus. Over het algemeen heeft vrijwel elke programmeertaal er een. Maar in Pascal is het super duidelijk. Voorbeelden:
Pascal | Java |
---|---|
|
|
|
|
|
|