1. Karşılaştırma döngüleri: forvswhile

Bir whiledöngü, bir ifadenin veya ifadeler grubunun birkaç kez gerçekleştirilmesi gereken her yerde kullanılabilir. Ancak tüm olası senaryolar arasında biri vurgulanmaya değer.

Programcının (programın yaratıcısı) döngünün kaç kez yürütülmesi gerektiğini önceden bildiği durumdan bahsediyoruz. 1Bu genellikle özel bir sayaç değişkeni bildirerek ve ardından döngünün her yinelemesinde değişkeni artırarak (veya azaltarak) gerçekleştirilir .

Her şey olması gerektiği gibi çalışıyor gibi görünüyor, ancak pek uygun değil. Döngüden önce sayaç değişkeninin başlangıç ​​değerini belirliyoruz. Ardından koşulda, zaten nihai değere ulaşıp ulaşmadığını kontrol ederiz. Ancak genellikle döngü gövdesinin en sonundaki değeri değiştiririz.

Peki ya ilmeğin gövdesi büyükse? Veya birkaç iç içe döngümüz varsa? Genel olarak, bu durumlarda sayaç değişkenleri hakkındaki tüm bu bilgilerin tek bir yerde toplanması tercih edilir. İşte bu yüzden forJava'da döngümüz var. Ayrıca çok karmaşık görünmüyor:

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

Bir whiledöngünün parantez içinde yalnızca bir koşulu vardır, ancak bir fordöngü noktalı virgülle ayrılmış iki ifade ekler.

Gerçek göründüğünden daha basittir: derleyici bir döngüyü şu şekilde forsıradan bir döngüye dönüştürür:while

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

Ya da daha iyisi bunu bir örnekle gösterelim. Aşağıdaki iki kod parçacığı aynıdır.

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

Sayaç değişkenine ait tüm kodu tek bir yerde topladık i.

Bir döngüde for, deyim 1 , döngü başlamadan önce yalnızca bir kez yürütülür. Bu, ikinci kod parçacığında açıkça görülebilir.

deyim 2, döngü gövdesiyle aynı sayıda yürütülür ve her yürütüldüğünde, döngünün tüm gövdesi yürütüldükten sonra yürütülür.


2. forDöngü nerede kullanılır?

Döngü formuhtemelen Java'da en çok kullanılan döngü türüdür. Her yerde kullanılır, programcılar için bir döngüden daha net ve daha kullanışlıdır while. Hemen hemen her whiledöngü bir döngüye dönüştürülebilir for.

Örnekler:

döngü sırasında döngü için
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;
}

Son örneğe dikkat edin. Döngü sayacıyla çalışmaya ilişkin ifadeler eksik. Sayaç ve açıklama yok.

Bir döngüde forJava, "sayacı başlatmak için ifadeyi" ve "sayacı güncellemek için ifadeyi" atlamanıza izin verir. Döngü koşulunu tanımlayan ifade bile atlanabilir.



for3. Döngü kullanmanın nüansları

forDöngüleri ve breakve continueifadeleri kullanmayla ilgili önemli bir nokta .

Döngüdeki bir breakifade, fordöngüdeki ile aynı şekilde çalışır while- döngüyü hemen sonlandırır. Bir continueifade, döngü gövdesini atlar, ancak statement 2(döngü sayacını değiştiren) atlamaz.

forŞimdi ve döngülerin nasıl ilişkili olduğuna bir kez daha göz atalım while.

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

Bir ifade bir continuefordöngüde yürütülürse , ifade bloğunun geri kalanı atlanır, ancak ifade 2 (döngünün sayaç değişkeniyle çalışan for) yine de yürütülür.

7 ile bölünebilen sayıları atladığımız örneğimize dönelim.

Bu kod sonsuza kadar döngüye girecek Bu kod iyi çalışacak
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);
}

Döngüyü kullanan kod whileçalışmaz — i asla 7'den büyük olmaz. Ancak döngülü kod fordüzgün çalışır.



4. Döngüler için karşılaştırma: Java ve Pascal

Bu arada, Pascal'ın da bir Fordöngüsü var. Genel olarak, esasen her programlama dilinde bir tane vardır. Ancak Pascal'da bu çok açık. Örnekler:

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