Merhabalar, bu dersimizde Java programlama dilinde, döngüler yapısını inceleyeceğiz. Bu yapılar for, while, do-while ve foreach dir. Kullanımı oldukça basit ve hemen hemen her projemizde mutlaka kullandığımız yapılardır. Bu döngüleri kullanmamızın sebebi, kod fazlalığını engelleyerek, zaman tasarrufu sağlamaktır.
İlk olarak for döngüsünü inceleyelim. Anlamamız açısından, basit bir örnekle başlayalım. Aşağıdaki kodları inceleyelim.
[java] public class Donguler {public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 0; i < 5; i++) { // i = 0 dan başlar en son 5 olunca aşağı satıra inmez
System.out.println("For döngüsü : "+ i); // i sayısı 0,1,2,3,4 iken bu satır işlenir
}
}
}
[/java]
Evet ilk örneğimizi gerçekleştirmiş olduk. Burada, i sayısına başlangıçta 0 değerinin atandığını görüyoruz. Ardından bir alt satır okunarak ekrana “For döngüsü : 0” yazısını console ekranına yazdığını görüyoruz. for döngüsünün içindeki komutlar işlenince, tekrar for döngüsüne çıkarak, i sayısını bir(1) arttırdığını görüyoruz. Şimdi ki i değerimizin sayısal karşılığı 1. Aynı şekilde for döngüsünün içindeki komutları işleyeceğinden ekrana bu sefer “For döngüsü : 1” yazması gerekmektedir. Bu işlemler i < 5 koşuluna kadar devam edecek olup, i sayısı 5 olduğu zaman ise i < 5 sağlanamayacağından for döngüsünden çıkacaktır.
Yani sonuç olarak, aşağıdaki konsol görüntüsü ortaya çıkacaktır.
Şimdi ise iç içe for döngüsünü görmek adına, bu yazdığımız kodları biraz değiştirerek aşağıdaki uygulamayı yazalım.
[java] public class Donguler {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 0; i < 5; i++) { // i = 0 dan başlar en son 5 olunca aşağı satıra inmez
for (int j = 0; j < 3; j++) {
System.out.println("i sayısı : "+i);
System.out.println("i sayısı : "+j);
}
}
}
}
[/java]
Üstteki komutları incelediğimizde, for döngüsünün içinde, başka bir for döngüsünün olduğunu görürüz. Burada anlamamız gerek nokta, uygulamamız derlenirken, satırları hangi sırayla işlediğidir. İlk olarak, ilk for döngümüzden derlenme başlayacaktır. i değerini 0 atayacaktır. Ardından ilk for döngümüzün içindeki ikinci for döngümüze girecektir. Bu durumdan sonra;
i sayısı : 0
j sayısı : 0
şeklinde konsola yazılacaktır.
Şimdi ikinci for döngümüzün içindeki komutlar işlenecektir. Artık bu döngü bitmeden, yani ikinci for döngümüzden çıkmadan, ilk for döngüsüne dönme şansımız olmayacaktır.
Yani şuan ki durum da i sayısı = 0 ve j sayısı da 0’dır. Ve bu şekilde ekran çıktılarını konsola yazacaktır. İkinci for döngümüzdeki komutlar işlendikten sonra, ikinci for döngümüzde ki j sayısını 1 arttırma işlemi yapılacaktır. Bu durumdan sonra;
i sayısı : 0
j sayısı : 1
şeklinde konsola yazılacaktır.
Aynı işlemler j üç olana kadar sürecek ve j değeri 3 olduğundan ikinci for döngüsünden çıkılarak, ilk for döngüsüne dönülecektir. Bu zamana kadar konsolda yazılacak olan çıktı görüntüsü aşağıdaki gibidir.
i sayısı : 0
j sayısı : 0
i sayısı : 0
j sayısı : 1
i sayısı : 0
j sayısı : 2
Şimdi ilk for döngümüzdeyiz. i sayısını belirtildiği üzere 1 arttırıyoruz. Bu durumda i sayısı 1 oldu. İkinci for döngümüze giriyoruz. j sayısına 0 ataması yapılıyor. İkinci for döngüsü içindeki komutları işlediğimizde aşağıdaki konsol çıktısını alırız.
i sayısı : 1
j sayısı : 0
Şimdi ikinci for döngümüzdeki j sayısını 1 arttırma işlemini yapacağız. Bu durumda j sayısı 1 oldu. Ve ardından konsola şu çıktı ekranı eklendi.
i sayısı : 1
j sayısı : 1
Daha sonra bir kere daha işlenerek;
i sayısı : 1
j sayısı : 2
konsol çıktısı elde edildi.
j sayısı 3 olduğunda ise, ikinci döngüden çıkarak tekrar ilk for döngüsüne geldik. Artık mantık aynı işlediğinden, geri kalan kod işleyişini anlatmayacağım. Son durumda yani bu komutların tamamı işlendiğinde konsol çıktısının görüntüsünü aşağıdan görebilirsiniz.
for döngüsünü anladığınızı düşünüyorum. For döngüsünü istediklerimizi elde etme konusunda, istediğimiz kadar iç içe biçimde kullanabiliriz. Mantığı da hep aynıdır. Şimdi ise while döngüsüne geçelim. Bunun için aşağıda yazdığım uygulamayı inceleyelim.
[java] public class Donguler {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 5; // i sayısına değer ataması yaptık
while(i > 0){ // i sayısı 0 dan büyük olduğu sürece bu döngü işler
System.out.println("i sayısı : "+i);
i–; // sayısını 1 azaltır.
}
}
}
[/java]
Yukarıdaki komutları incelemeye başlayalım. Aslında mantık for döngüsüne benziyor. Yine bir değişkene sayı ataması yapıyoruz. O sayıyı arttırarak ya da azaltarak, istediğimiz sayıda döngünün gerçekleşmesini sağlıyoruz. Şimdi bu komutların derlenirken işlendiği sıraya göre adım adım inceleyelim.
Gördüğünüz ve bildiğiniz üzere ilk değer ataması olarak i değişkenine 5 değerini atıyoruz. Atama yapıldıktan sonra, while döngüsü satırına inerek koşul sağlandığı takdirde while döngüsünün içerisine gireceğiz. i değişkeninin 0 değerinden büyük olması şartı istendiğinden ve i değişkenimiz 5 değerine sahip olduğu için, while döngüsü içindeki komutları işletebiliriz. Bu durumda konsola aşağıdaki ifade yazılarak, i değişkenini 1 azaltıyoruz ve i değerimiz 5-1 den 4 oluyor.
Bu durumda konsol çıktısı aşağıdaki gibidir.
i sayısı : 5
Şimdi ise tekrar while döngüsü satırına dönerek, koşulun sağlandığını görüyoruz. (4 > 0) Konsola aşağıdaki çıktı ekranı ekleniyor.
i sayısı : 4
i değişkenini yine 1 azaltıyoruz ve bu işlem i sayısı 0 olana kadar devam ediyor. i sayısı 0 olduğunda while döngüsünden çıkılarak işlem sonlanıyor. Uygulamanın çıktısı aşağıdaki gibidir.
while döngüsünü anladığınızı düşünerek, do-while döngüsüne geçiyorum. Aslında aralarında tek bir fark var. Bu fark da do-while döngüsünün en az 1 kez işlenecek olması. Yani while döngüsüne istersek yazacağımız bir şartla hiç girmemesini sağlayabilirken, do-while döngüsünde bunu yapamayız. Çünkü do tarafı en az bir kere işlenecek olup while döngüsündeki şart bozulana kadar döngü tekrar edecektir. Biz de daha iyi anlamak amacıyla sadece 1 kere girilen bir döngü yazalım.
[java] public class Donguler {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 1; // i sayısına değer ataması yaptık
do{ // bir şart olmadığına göre aşağıdaki satır derlenir.
System.out.println("i sayısı : "+i); // ekrana 1 değerini yazar.
}while(i > 10); // şart sağlanmaz ve çıkar.
}
}
[/java]
Üstteki kodları incelediğimizde, mantığını hemen anlayabiliriz. Do döngüsüne while tarafı sağlanmadığında bile her halükarda en az bir kere girileceğini görebiliyoruz.
Konsol çıktısı aşağıdaki gibidir.
for-each döngüsü de kullanılmakta, fakat bunu kullanırken öğrenmediğimiz yapılar kullanacağımdan, bu konuya sonraki yazılarımda değineceğim. Eğer anlamadığınız bir nokta olursa yorum yazarsanız sevinirim. Okuduğunuz için teşekkürler.