Döngü (Loop)
Programlarımızda yazdığımız bazı kodların belirli şartlar sağlandığı sürece tekrar tekrar çalışmasına ihtiyaç duyarız. Bu noktada döngülerden yararlanırız çünkü döngüler, aynı kod bloğunu defalarca çalıştırabilmemizi sağlayan yapılardır.
Örneğin 1’den 10’a kadar olan sayıları ekrana yazdırmak istediğimizi düşünelim. Sayıları ekrana yazmaya yarayan bir kod satırını 10 kez artarda yazmak yerine, 10 kez tekraren çalışacak şekilde tasarladığımız bir döngüye 1 kez yazmamız yeterli olacaktır. Yine aynı şekilde codePointAt konulu yazımda verdiğim örnekte; 10 karakterden oluşan bir String nesnesinin her karakteri ile ilgili çıktı veren programın kodlarını 10 ayrı kod satırında alt alta yazmıştım. Hâlbuki aynı işlemi 10 turluk bir döngü içerisine yazacağımız tek satır kod ile kolayca gerçekleştirebiliriz. Bahsettiğim codePointAt konulu yazımdaki örneği incelemek isterseniz lütfen buraya tıklayınız…
For Döngüsü (For Loop)
Programlama dillerinde for döngüsü, temel olarak belirli kodları, belirli sayıda ve üst üste çalıştırmak için kullanılan bir döngü türüdür. Neredeyse tüm programlama dillerinde mevcut olan bu yapı, farklı dillerde farklı yazım şekillerine (syntax) sahip olsa da, çalışma mantığı hepsinde aynıdır.
Java programlama dili özelinde hazırladığım alttaki şemada görüldüğü üzere, for döngüsü parantezinde birbirlerinden noktalı virgül ( ; ) ile ayrılmış olan 3 alan ve kod bloğu kısmı olan diğer alan vardır. (for(A alanı; B alanı; D alanı) { C Alanı })
Bu alanlardan ilkinde (A) bir başlangıç değişkeni tanımlanır. Örneğin int i = 0; gibi. Genel kullanımda veri tipi “int” olarak tanımlansa da bu bir zorunluluk değildir. Yani siz koşul ve artırma/azaltma özelliklerini uygulayabileceğiniz herhangi bir veri tipini kullanabilirsiniz. Özetle başlangıç değişkeni ihtiyacınıza göre “byte”, “short”, “int”, “long”, “float”, “double” veya “char” olabilir. Hatta boolean bile olabilir fakat boolean kullanmak tahmin edeceğiniz üzere mantıksız olacaktır.
İkinci alanda (B) ise koşul belirlenir. Yani belirlediğimiz başlangıç değerinin, başka bir değerle mantıksal karşılaştırması yapılır. Örneğin i < 10 ( i değeri 10’dan küçük mü?) gibi. Mantıksal karşılaştırmanın sonucu döngünün devam edip etmeyeceğini belirler.
Eğer koşulumuz true (doğru) ise program kod bloğuna (C) girer ve yazdığımız kodları çalıştırır.
Program kod bloğunda yazdığımız kodları çalıştırdıktan sonra 1. alanda (A) belirlediğimiz başlangıç değerini, 3. alanda (D) belirlediğimiz şekilde artırır veya azaltır. Oluşan yeni değerin koşulu sağlayıp sağlamadığını kontrol etmek üzere tekrar koşul kontrolüne (B) gider.
Program, artırılan veya azaltılan başlangıç değeri koşulu sağladığı sürece aynı işlemleri tekrar eder. Koşul sağlanmadığı anda ise kod bloğuna (C) girmeden for döngüsünden çıkar.
Başlangıç değeri, koşul ve değerin artış veya azalışı konusunda dikkatli davranmalıyız. Eğer başlangıç değerini sabit bırakacak ya da koşuldan uzaklaştıracak bir kodlama yaparsak, program sonsuz döngüye girebilir. Ya da tekrarlanmasını istediğimiz kodlarımıza uymayacak bir değere ulaşarak programımızın hata vermesine sebep olabilir. Her ikisi de kesinlikle istemeyeceğimiz durumlardır.
Gelin bir örnek yapalım.
Programımız çalıştırıldığında verilen String nesnesinin her karakteri için dizin numarasını (indeks), o indeksteki karakteri ve o karaktere ait Unicode kod noktasını ekrana yazdırsın. Her yazdırma işleminden sonra bir alt satıra geçsin. Aynı işlemi String nesnesinin tüm karakterleri için yapsın ve sonunda döngüden çıkarak “Program Sonlandı!” yazsın.
Bu işlemleri yaparken;
- İlgili indexteki karakteri bulmak için charAt() metodunu,
- String nesnesinin karakter adedini bulmak için length() metodunu,
- İlgili karakterin Unicode kod noktası değerini bulmak için codePointAt() metodunu,
- Tüm kod bloğu işlemlerini String nesnesinin her karakteri için 1 kez tekrarlayacak olan for döngüsünü kullanacağız.
Hadi kodlayalım 🙂
public class ForLoopExample {
public static void main(String[] args) {
String dize = "Tam Weblik";
for(int i = 0 ; i < dize.length(); i++)
{
System.out.println
(
"indeks: " + i
+ " - Karakter: " + dize.charAt(i)
+ " - Unicode kod noktası: " + dize.codePointAt(i)
);
}
System.out.println("Program Sonlandı!");
/*
Program Çıktısı:
indeks: 0 - Karakter: T - Unicode kod noktası: 84
indeks: 1 - Karakter: a - Unicode kod noktası: 97
indeks: 2 - Karakter: m - Unicode kod noktası: 109
indeks: 3 - Karakter: - Unicode kod noktası: 32
indeks: 4 - Karakter: W - Unicode kod noktası: 87
indeks: 5 - Karakter: e - Unicode kod noktası: 101
indeks: 6 - Karakter: b - Unicode kod noktası: 98
indeks: 7 - Karakter: l - Unicode kod noktası: 108
indeks: 8 - Karakter: i - Unicode kod noktası: 105
indeks: 9 - Karakter: k - Unicode kod noktası: 107
Program Sonlandı!
*/
}
}
Örnekte görüldüğü üzere döngü bloğundaki kodlar, 10 karakterli “Tam Weblik” dizesi için 10 kez tekrarlanmaktadır. Her tekrarda o turun “i” değerine göre istediğimiz çıktıyı vermektedir. Başlangıçta 0 olan “i” değeri 10’a ulaştığında artık koşulu sağlamadığından program for döngüsünden çıkarak sonlanmaktadır. Aynı kodları alttaki görselden de inceleyebiliriz.
Umarım ilk for döngüsü örneği için açıklayıcı olmuştur. Zaman ayırdığınız için teşekkürler…