1. Paghahambing ng mga loop: forvswhile

Ang isang whileloop ay maaaring gamitin kahit saan ang isang pahayag o grupo ng mga pahayag ay kailangang isagawa nang maraming beses. Ngunit sa lahat ng posibleng mga sitwasyon, ang isa ay nagkakahalaga ng pag-highlight.

Pinag-uusapan natin ang sitwasyon kung kailan alam ng programmer (tagalikha ng programa) nang maaga kung gaano karaming beses dapat isagawa ang loop. Karaniwan itong pinangangasiwaan sa pamamagitan ng pagdedeklara ng isang espesyal na counter variable, at pagkatapos ay pinapataas (o binabawasan) ang variable sa pamamagitan ng 1bawat pag-ulit ng loop.

Mukhang gumagana ang lahat ayon sa nararapat, ngunit hindi ito masyadong maginhawa. Bago ang loop, itinakda namin ang paunang halaga ng counter variable. Pagkatapos ay sa kondisyon na tinitingnan namin kung naabot na nito ang huling halaga. Ngunit karaniwan naming binabago ang halaga sa pinakadulo ng katawan ng loop.

At paano kung ang katawan ng loop ay malaki? O kung mayroon kaming ilang mga nested na mga loop? Sa pangkalahatan, sa mga kasong ito, kanais-nais na kolektahin ang lahat ng impormasyong ito tungkol sa mga counter variable sa isang lugar. At iyon ang dahilan kung bakit mayroon kaming forloop sa Java. Hindi rin ito mukhang masyadong kumplikado:

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

Ang isang whileloop ay may kundisyon lamang sa mga panaklong, ngunit ang isang forloop ay nagdaragdag ng dalawang pahayag, na pinaghihiwalay ng mga semicolon.

Ang katotohanan ay mas simple kaysa sa tunog: ang compiler ay nagko-convert ng isang forloop sa isang ordinaryong whileloop tulad nito:

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

O mas mabuti pa, ipakita natin ito sa isang halimbawa. Magkapareho ang dalawang snippet ng code sa ibaba.

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

Inipon lang namin sa isang lugar ang lahat ng code na nauugnay sa icounter variable.

Sa isang forloop, ang statement 1 ay isasagawa nang isang beses lang, bago magsimula ang loop mismo. Malinaw itong makikita sa pangalawang snippet ng code

Ang pahayag 2 ay isinagawa sa parehong bilang ng mga beses sa katawan ng loop, at sa bawat oras na ito ay naisakatuparan pagkatapos na ang buong katawan ng loop ay naisakatuparan


2. Kung saan forginagamit ang loop

Ang forloop ay marahil ang pinaka ginagamit na uri ng loop sa Java. Ito ay ginagamit sa lahat ng dako, para sa mga programmer ito ay mas malinaw at mas maginhawa kaysa sa isang whileloop. Halos anumang whileloop ay maaaring ma-convert sa isang forloop.

Mga halimbawa:

habang umiikot para sa loop
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;
}

Bigyang-pansin ang huling halimbawa. Ang mga pahayag para sa pagtatrabaho sa loop counter ay nawawala. Walang kontra at walang pahayag.

Sa isang forloop, hinahayaan ka ng Java na alisin ang "statement para masimulan ang counter" at ang "statement to update the counter". Kahit na ang expression na tumutukoy sa kondisyon ng loop ay maaaring tanggalin.



3. Nuances ng paggamit ng forloop

Isang mahalagang punto tungkol sa paggamit forng mga loop at breakat continuemga pahayag.

Gumagana ang isang breakstatement sa isang forloop tulad ng sa isang whileloop - tinatapos nito kaagad ang loop. Nilaktawan ng continuestatement ang loop body, ngunit hindi statement 2(na nagbabago sa loop counter).

Tingnan natin muli kung paano nauugnay forang mga loop.while

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

Kung ang isang continuepahayag ay naisakatuparan sa isang forloop , ang natitirang bahagi ng bloke ng mga pahayag ay nilaktawan, ngunit ang pahayag 2 (ang isa na gumagana sa forcounter variable ng loop) ay isinasagawa pa rin.

Bumalik tayo sa ating halimbawa sa paglaktaw ng mga numero na nahahati sa 7.

Mag-loop ang code na ito magpakailanman Ang code na ito ay gagana nang maayos
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);
}

Ang code na gumagamit ng whileloop ay hindi gagana — ako ay hindi hihigit sa 7. Ngunit ang code na may forloop ay gagana nang maayos.



4. Paghahambing para sa mga loop: Java vs Pascal

Siyanga pala, may Forloop din si Pascal. Sa pangkalahatan, mahalagang bawat programming language ay may isa. Ngunit sa Pascal ito ay napakalinaw. Mga halimbawa:

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);
}