1. Hayatımızdaki döngüler

Çoğu zaman hayatımız aynı eylemleri birçok kez gerçekleştirmemizi gerektirir. Örneğin, birçok sayfadan oluşan bir belgeyi taramam gerektiğini varsayalım. Aynı prosedürü defalarca tekrarladığımızı:

  • İlk sayfayı tarayıcıya yerleştirin
  • tarama düğmesine basın
  • Sonraki sayfayı tarayıcıya yerleştirin

Bunu manuel olarak yapmak zordur. Bu sürecin bir şekilde otomatikleştirilmesi iyi olurdu.

Veya başka bir örneği ele alalım: Diyelim ki gelen kutumdaki tüm okunmamış e-postaları spam olarak işaretlemek istiyorum. Bir zamanlar, her e-postayı birer birer seçip spam olarak işaretlemem gerekirdi.

Ancak programcılar tembeldir, bu yüzden bu süreci uzun zaman önce otomatikleştirdiler: şimdi herhangi bir harf listesini seçip "istenmeyen posta olarak işaretle"ye tıkladığınızda, e-posta istemciniz listeyi inceler ve her e-postayı istenmeyen posta klasörüne taşır.

Burada ne söyleyebiliriz? Bir bilgisayar veya program tek bir tıklamayla yüzlerce veya binlerce monoton işlemi yürütebildiğinde bu çok uygundur. Ve şimdi bunu nasıl yapacağınızı da öğreneceksiniz.


2. whiledöngü

if-else ifadesi, programlama yeteneklerimizi önemli ölçüde genişleterek, farklı durumlarda farklı eylemler gerçekleştiren programlar yazmayı mümkün kıldı. Ancak programlarımızı çok daha güçlü hale getirecek bir şey daha var - döngüler .

Java'da 4 çeşit döngü vardır: while, for, for-eachve do-while. Şimdi bunlardan ilkini inceleyeceğiz.

Bir whiledöngü çok basittir. Yalnızca iki bölümden oluşur: bir koşul ve bir döngü gövdesi . Döngü gövdesi, koşul olduğu sürece tekrar tekrar yürütülür true. Genel olarak, bir whiledöngü şöyle görünür:

while (condition)
   statement;
whileTek ifadeli bir döngü için notasyon
while (condition)
{
   block of statements
}
whileİfade bloğu içeren bir döngü için notasyon

Çok basit. İfade veya ifade bloğu, döngü koşulu eşit olduğu sürece tekrar tekrar yürütülür .true

Bu şekilde çalışır: önce koşul kontrol edilir. Doğruysa, döngü gövdesi yürütülür ( deyim veya ifadeler bloğu ). Daha sonra koşul tekrar kontrol edilir ve döngü gövdesi tekrar yürütülür. Ve koşul yanlış olana kadar böyle devam eder.

Koşul her zaman doğruysa , program çalışmayı asla durdurmaz. Kalıcı olarak döngüde sıkışıp kalacaktır.

Koşul ilk kez kontrol edildiğinde yanlışsa , döngü gövdesi bir kez bile çalıştırılmaz.


3. Döngü örnekleri

İşte eylem halindeki döngülerin bazı pratik örnekleri.

kod Açıklama
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
Ekranda 5 satır görüntülenecektir:
5
4
3
2
1
kod Açıklama
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
Ekranda 10 satır görüntülenecektir:
0
1
...
8
9
kod Açıklama
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
Sayı girildiği sürece program klavyeden sayıları okur.
kod Açıklama
while (true)
   System.out.println("C");
Program harfi ekrana sonsuza kadar yazdıracaktır.C
kod Açıklama
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Program klavyeden satırları okuyacak

exitgirilene kadar .

Önceki örnekte, equals()yöntem dizeleri karşılaştırmak için kullanılır. Dizeler eşitse, işlev döndürür true. Dizeler eşit değilse, o zaman döndürür false.



4. Döngü içinde döngü

Koşullu ifadeleri öğrendikçe, birden çok koşullu ifadeyi birleştirerek karmaşık mantığı uygulamak için bunları kullanabileceğinizi gördünüz. Başka bir deyişle, bir ifade ifiçinde bir ifade kullanarak .if

Aynı şeyi döngülerle de yapabilirsiniz. Döngü içinde döngü yazmak için, ikinci döngüyü birinci döngünün gövdesi içine yazmanız gerekir. Bunun gibi bir şey görünecek:

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
whiledöngü (bir ifade bloğu ile ) başka bir whiledöngü içinde

Üç göreve bakalım.

Görev 1 . MomDiyelim ki kelimeyi ekranda 4 kez gösteren bir program yazmak istiyoruz . Bir döngü tam olarak ihtiyacımız olan şey. Ve kodumuz şöyle bir şeye benzeyecek:

kod Açıklama
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
Ekranda 4 satır görüntülenecektir:
Mom
Mom
Mom
Mom

Görev 2 . ATek bir satırda 5 harf gösteren bir program yazmak istiyoruz . Bunu yapmak için tekrar bir döngüye ihtiyacımız var. Bu, kodun nasıl görüneceği:

kod Açıklama
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
yerine println()kullanacağız print(). Aksi takdirde, her harf A ayrı bir satırda biterdi.

Ekran çıktısı şöyle olacaktır:
AAAAA

Görev 3 . S harflerinden oluşan bir dikdörtgen görüntülemek istiyoruz A. Dikdörtgen 4 satır ve 5 sütundan oluşmalıdır. Bunu başarmak için şimdi iç içe bir döngüye ihtiyacımız var. Basitçe ilk örneğimizi (4 satır çıktı aldığımız örnek) alacağız ve tek satırlık çıktı kodunu ikinci örnekteki kodla değiştireceğiz.

kod Açıklama
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
Dış döngü mordur. nDöngünün yineleme sayısını saymak için değişkeni kullanır .

İç döngü yeşildir. mDöngü yinelemelerinin sayısını saymak için değişkeni kullanır . İç döngü tamamlandıktan sonra imleci açıkça bir sonraki satıra taşımamız

gerekiyor . Aksi takdirde, programın yazdırdığı tüm harfler bir satırda bitecektir. Ekran çıktısı şöyle olacaktır:


AAAAA
AAAAA
AAAAA
AAAAA

Dış ve iç döngüler, döngü yinelemelerinin sayısını saymak için farklı değişkenler kullanmalıdır. System.out.println()Ayrıca iç döngüden sonra komutu da eklemek zorunda kaldık , çünkü bu döngü Aaynı satırda s harfini gösteriyor. Bir satırdaki harfler görüntülendiğinde, birinin imleci yeni bir satıra taşıması gerekir.



5. Java ve Pascal döngülerinin karşılaştırılması

Çoğunuz lisede Pascal okudunuz. Buradaki materyali daha kolay anlamanız için, whilePascal ve Java ile yazılmış döngülerin bu karşılaştırmasına bir göz atın. Pascal'ı bilmiyorsanız, o zaman bu kısmı atlayın.

Pascal java
i := 3;
While i >= 0 Do
   Begin
      WriteLn(i);
      i := i - 1;
   End;
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
i := 0;
While i < 3 Do
   Begin
      WriteLn(i);
      i := i + 1;
   End;
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
IsExit := False;
While Not isExit Do
   Begin
      ReadLn(s);
      isExit :=  (s = 'exit');
   End;
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
While True Do
   WriteLn('C');
while (true)
   System.out.println("C");
While True Do
   Begin
     ReadLn(s);
     If s = 'exit' Then
       Break;
   End;
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}