1. Sammenligning af loops: forvswhile

En whileløkke kan bruges overalt, hvor en sætning eller gruppe af sætninger skal udføres flere gange. Men blandt alle de mulige scenarier er ét værd at fremhæve.

Vi taler om den situation, hvor programmøren (programmets skaber) på forhånd ved, hvor mange gange løkken skal udføres. Dette håndteres normalt ved at erklære en speciel tællervariabel og derefter øge (eller mindske) variablen med 1hver iteration af løkken.

Alt ser ud til at fungere som det skal, men det er ikke særlig praktisk. Før løkken indstiller vi tællervariablens begyndelsesværdi. Så i tilstanden kontrollerer vi, om den allerede har nået den endelige værdi. Men vi ændrer normalt værdien i slutningen af ​​løkkens krop.

Og hvad hvis løkkens krop er stor? Eller hvis vi har flere indlejrede løkker? Generelt er det i disse tilfælde ønskeligt at samle al denne information om tællervariabler ét sted. Og det er derfor, vi har loopet fori Java. Det ser heller ikke særlig kompliceret ud:

for (statement 1; condition; statement 2)
{
   block of statements
}

En whileloop har kun en betingelse i parentes, men en forloop tilføjer to udsagn, adskilt af semikolon.

Virkeligheden er enklere, end den lyder: compileren konverterer en forloop til en almindelig whileloop som denne:

statement 1;
while (condition)
{
   block of statements
   statement 2;
}

Eller endnu bedre, lad os demonstrere dette med et eksempel. De to kodestykker nedenfor er identiske.

Mulighed 1 Mulighed 2
for (int i = 0; i < 20; i++)
{
   System.out.println(i);
}
int i = 0;
while (i < 20)
{
   System.out.println(i);
   i++;
}

Vi har lige samlet al den kode, der vedrører tællervariablen, på ét sted i.

I en forløkke udføres sætning 1 kun én gang, før selve løkken begynder. Dette kan tydeligt ses i det andet kodestykke

sætning 2 udføres det samme antal gange som løkkens krop, og hver gang den udføres efter at hele løkkens krop er udført


2. Hvor forløkken bruges

Sløjfen forer nok den mest brugte type løkke i Java. Det bruges overalt, for programmører er det bare klarere og mere bekvemt end en whileloop. Stort set enhver whileløkke kan konverteres til en forløkke.

Eksempler:

mens loop for sløjfe
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
for (int i = 3; i >= 0; i--)
{
   System.out.println(i);
}
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
for (int i = 0; i < 3; i++)
{
   System.out.println(i);
}
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
for (boolean isExit = false; !isExit; )
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
while (true)
   System.out.println("C");
for (; true; )
   System.out.println("C");
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
      break;
}
for (; true; )
{
   String s = console.nextLine();
   if (s.equals("exit"))
      break;
}

Vær opmærksom på det sidste eksempel. Udtalelserne for at arbejde med loop-tælleren mangler. Der er ingen kontra og ingen udtalelse.

I en forløkke lader Java dig udelade "erklæringen om at initialisere tælleren" og "erklæringen om at opdatere tælleren". Selv det udtryk, der definerer sløjfebetingelsen, kan udelades.



3. Nuancer ved at bruge forløkken

En vigtig pointe om at bruge forloops og breakog continuestatements.

En breaksætning i en forløkke fungerer på samme måde som i en whileløkke - den afslutter løkken med det samme. En continuesætning springer loop-kroppen over, men ikke statement 2(hvilket ændrer loop-tælleren).

Lad os tage et nyt kig på, hvordan forog whilesløjfer hænger sammen.

for (statement 1; condition; statement 2)
{
   block of statements
}
statement 1;
while (condition)
{
   block of statements
   statement 2;
}

Hvis en continuesætning udføres i en forløkke , springes resten af ​​blokken af ​​sætninger over, men sætning 2 (den, der fungerer med forløkkens tællervariabel) udføres stadig.

Lad os vende tilbage til vores eksempel med at springe tal over, der er delelige med 7.

Denne kode vil løkke for evigt Denne kode vil fungere fint
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0) continue;
   System.out.println(i);
   i++;
}
for (int i = 1; i <= 20; i++)
{
   if ( (i % 7) == 0) continue;
   System.out.println(i);
}

Koden, der bruger whileløkken, vil ikke fungere - i vil aldrig være større end 7. Men koden med løkken forvil fungere fint.



4. Sammenligning for loops: Java vs Pascal

Pascal har i øvrigt også en Forloop. Generelt har stort set alle programmeringssprog et. Men i Pascal er det super tydeligt. Eksempler:

Pascal Java
For i := 1 to 10 do
Begin
   Writeln(i);
End;
for (int i = 1; i <= 10; i++)
{
   System.out.println(i);
}
For i := 1 to 10 do step 2
Begin
   Writeln(i);
End;
for (int i = 1; i <= 10; i = i + 2)
{
   System.out.println(i);
}
For i := 10 downto 0 do step 2
Begin
   Writeln(i);
End;
for (int i = 10; i >= 0; i = i - 2)
{
   System.out.println(i);
}