1. Jämföra loopar: for
vswhile
En while
loop kan användas var som helst där en sats eller grupp av satser måste utföras flera gånger. Men bland alla möjliga scenarier är ett värt att lyfta fram.
Vi pratar om situationen när programmeraren (programmets skapare) i förväg vet hur många gånger loopen ska exekveras. Detta hanteras vanligtvis genom att deklarera en speciell räknarvariabel och sedan öka (eller minska) variabeln med 1
varje iteration av loopen.
Allt verkar fungera som det ska, men det är inte särskilt bekvämt. Innan loopen ställer vi in räknarvariabelns initiala värde. Sedan i skicket kontrollerar vi om det redan har nått slutvärdet. Men vi brukar ändra värdet i slutet av loopkroppen.
Och vad händer om slingans kropp är stor? Eller om vi har flera kapslade slingor? I allmänhet är det i dessa fall önskvärt att samla all denna information om räknarvariabler på ett ställe. Och det är därför vi har loopen for
i Java. Det ser inte heller särskilt komplicerat ut:
for (statement 1; condition; statement 2)
{
block of statements
}
En while
loop har bara ett villkor inom parentes, men en for
loop lägger till två satser, separerade med semikolon.
Verkligheten är enklare än den låter: kompilatorn konverterar en for
loop till en vanlig while
loop så här:
statement 1;
while (condition)
{
block of statements
statement 2;
}
Eller ännu bättre, låt oss visa detta med ett exempel. De två kodavsnitten nedan är identiska.
Alternativ 1 | Alternativ 2 |
---|---|
|
|
Vi har precis samlat all kod som hör till räknarvariabeln på ett ställe i
.
I en for
loop exekveras sats 1 bara en gång, innan själva slingan börjar. Detta kan ses tydligt i det andra kodavsnittet
sats 2 exekveras samma antal gånger som slingans kropp, och varje gång den exekveras efter att hela slingans kropp har exekveras
2. Där for
slingan används
Slingan for
är förmodligen den mest använda typen av loop i Java. Det används överallt, för programmerare är det bara tydligare och bekvämare än en while
loop. Praktiskt taget vilken while
loop som helst kan omvandlas till en for
loop.
Exempel:
medan loop | för slinga |
---|---|
|
|
|
|
|
|
|
|
|
|
Var uppmärksam på det sista exemplet. Satserna för att arbeta med loopräknaren saknas. Det finns ingen kontra och inget uttalande.
I en for
loop låter Java dig utelämna "påståendet för att initiera räknaren" och "påståendet för att uppdatera räknaren". Även uttrycket som definierar loopvillkoret kan utelämnas.
3. Nyanser av att använda for
slingan
En viktig punkt om att använda for
loopar och break
och continue
uttalanden.
En break
sats i en for
loop fungerar på samma sätt som i en while
loop – den avslutar loopen omedelbart. En continue
sats hoppar över loopkroppen, men inte statement 2
(vilket ändrar loopräknaren).
Låt oss ta en ny titt på hur for
och while
slingor är relaterade.
for (statement 1; condition; statement 2)
{
block of statements
}
statement 1;
while (condition)
{
block of statements
statement 2;
}
Om en continue
sats exekveras i en for
loop , hoppas resten av blocket av satser över, men sats 2 (den som fungerar med slingans for
räknarvariabel) exekveras fortfarande.
Låt oss återgå till vårt exempel med att hoppa över tal som är delbara med 7.
Den här koden kommer att loopa för alltid | Den här koden kommer att fungera bra |
---|---|
|
|
Koden som använder while
slingan kommer inte att fungera — i kommer aldrig att vara större än 7. Men koden med slingan for
kommer att fungera bra.
4. Jämföra för loopar: Java vs Pascal
Pascal har förresten också en For
slinga. I allmänhet har i princip alla programmeringsspråk ett. Men i Pascal är det supertydligt. Exempel:
Pascal | Java |
---|---|
|
|
|
|
|
|