Java ile For - Foreach Döngüleri

Java ile For - Foreach Döngüleri

Bir çok programda döngüler kullanılır. For döngüsü sayı sayarak çalışan bir döngüdür. Programların hepsinde kullanılan bir döngüdür. Ve eğer yapacağımız işin mesafesi belli ise yani kaç defa yapacağımızı biliyorsak veya biyerden alıyorsak For döngüsü kullanılır.

Foreach Sorgusu :

Javada foreach sorgusu bulunmamaktadır. Bunun yerine for döngüsü ile bütün nesnelerin üzerinde işlem yapılır. Bunun yapılabilmesi için herhangi bir indexe gerek yoktur.


For Ve Foreach Farkı :
For döngüsünde bir index değeri ile her nesnenin üzerinde ayrı ayrı işlem yapılır...
Foreach ile bütün nesnelerin üzerinde tek seferde aynı işlem yapılır...

Aşağıda vereceğim örnekte program basit bir for döngüsü kullanacak ve bu döngüde anlık hangi sayı değerinde ise onu ekrana yazdıracak. Bu yazdıracağı değerleri bir 'i' değişkeninden alacak ve bu 'i' değerleri 0 ile 5 arasında olacak.

İlk olarak for döngüsünün döneceği aralığı belirleyeceğiz. Yani nerde başlayacağını ve nerde biteceğini belirleyeceğiz. Ve daha sonra hangi değerde ne yapacağını belirleyeceğiz.

Şimdi örneğimize geçelim...

public class Program {
    public static void main(String[] args) {

	// Sıfırdan başlayıp 5'e kadar say fakat 5'i sayma anlamına gelen döngümüz.
	for (int i = 0; i < 5; i++) {
	    System.out.println(i);
	}
    }
}
 

Program Çıktısı :
0
1
2
3
4
Gördüğünüz gibi for içindeki o anda hangi 'i' değeri varsa onu ekrana yazdırdık.

Önemli Not : For döngüsünün özelliği bitiş değerini bildiğimiz işlemlerde işe yaramasıdır. Eğer bitiş noktasını bilmiyorsak while döngüsünü kullanmak bizim için daha avantajlı olacaktır. Ve istenilen değere gelince break; ifadesiyle durdurulur.

Foreach Döngüsü Nasıl Kullanılır : Aşağıda basit bir örnek bulunmaktadır. Eğer bir foreach döngüsü kullanıyorsak index değil onun tamamını kolon olarak alırız ve bu şekilde hepsinin üstünde işlem yapılmış olur. Bu şekildeki kullanımda dizi içerisindeki nesneleri birer birer saymış olup öyle işlem yapar.

 

public class Program {
    public static void main(String[] args) {

	//Üzerinde işlem yapılacak olan diziyi hazırlıyoruz
	String[] dizi = new String[3];
	values[0] = "The";
	values[1] = "Kod";
	values[2] = "Program";

	//Dizi içerisindeki değerleri 'deger' adındaki bir değişkene atıyoruz ve ekrana yazdırıyoruz
	for (String deger : dizi) {
	    System.out.println(deger);
	}
    }
}
 

Program Çıktısı
The
Kod
Program

Break Deyimi : For döngüsü ister işlemini tamamlamış olsun ister olmasın herhangi bir zamanda durdurulabilir. Bunun için 'break;' deyimi kullanılır'. Herhangi buruma ihtiyacı yoktur sadece deyim çalıştığı anda içinde bulunduğu döngüyü durdurur. Fakat unutulmamalıdır ki iç içe döngüler varsa sadece hangi döngünün içindeyse onu durdurur.

Break komutunu kullanılabilmesi için bir işaret belirtmemiz gereklidir. Örnek olarak bir sayma işleminde bir noktaya gelince dur komutu için break kullanabiliriz...

Şimdi aşağıdaki örnekte buna bir örnek yapalım. sayma işlemi esnasında 7 değerine gelince dursun.

public class Program {
    public static void main(String[] args) {

	int[] sayilar = { 1,2,3,5,7,9,11,13,15 };

	// Sayilar dizisinden verileri alıyor ve kontrol ediyor
	for (int i = 0; i < sayilar.length; i++) {
	    if (sayilar[i] == 7) {
		break;
	// gördüğünüz gibi 7 değerine gelince programı durdur diyoruz...
	    }
	    System.out.println(sayilar[i]);
	}
    }
}
 

Program Çıktısı :
1
2
3
5

Gördüğünüz gibi / değerine gelince yazmayı ve saymayı bıraktı... İşte bunu break komutuyla yaptırdık...

Continue Deyimi : Bu deyim döngünün geçerli durumunu es geçerek döngüün en başına dönülmesini sağlar. Yani harhangi bir işlem yaptırmaz sonraki sayma değerine geçilir.

Bu deyimin dikkatli kullanılması gerekir. Çünkü yanlış bir yere konulursa döngünün sonsuz döngüye girmesine sebep olabilir.

Şimdi bu deyim ile ilgili bir örnek yapalım...


public class Program {
    public static void main(String[] args) {

	String[] dizi = { "Isık", "Ilık", "Sut", "Ic" };

	// dizi içerisindeki bütün elemanları kontrol ettiriyoruz
	for (String deger : dizi) {

	    // ve 'S' ile başlayan karakter gelince continue deyimini uygula diyoruz...
	    if (deger.startsWith("S")) {
		continue;
	    }

	    System.out.println(deger);
	}
    }
}
 

Program Çıktısı
Isık
Ilık
Ic

Gördüğünüz gibi burada Sut kelimesi S ile başladığı için program onu atladı yani ekrana yazdırmadı...

Azalan Döngü : Bazende sayma işlemlerini azalan şekilde yaparız.Yani büyükten küçüğe doğru saydırırız.Aşağıdaki örnekte olduğu gibi azalan sayma işlemleri yapılabilir. Bu örnekteki >= işaretinin anlamı 0 değerinide işleme demektir.

 

public class Program {
    public static void main(String[] args) {

	//5'ten 0'a kadar sayma işlemi
	for (int i = 5; i >= 0; i--) {
	    System.out.println(i);
	}
    }
}

Program Çıktısı :
5
4
3
2
1
0

İç İçe Döngüler : Bütün döngü türleri iç içe yapılabilir. Unutmayalım ki iç içe döngülerde break veya continue ifadesi kullanıldığında sadece içinde bulunduğu döngüye etki eder. Bir üstteki döngüye etki etmez. However: Fakat return ifadesi kullanıldığında bütün döngüleri sonlandırır. Bu ifadeleri kullanmak için bir işaretçi koymak daha doğru olur...

Şimdi iç içe döngülerle ilgili bir örnek yapalım...  

public class Program {
    public static void main(String[] args) {

	// Aşağıda iç içe iki tane döngü yazılmıştır
	for (int i = 0; i < 3; i++) {
	    for (int y = 0; y < 3; y++) {
		System.out.println(i + "," + y);
	    }
	}
    }
}
 

Program Çıktısı :
0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2
Görüldüğü üzere 2x3 boyutlarında bir matris oluşturuldu...

Dışarıdan alınan Değişkenler : Bazen sayaç değişkenini dışardan almamız gerekebilir. Bunun için herhangi bir değişkeni kullanabiliriz. Aşağıdaki program örneğinde bunu göreceğiz. Önemli olan girilen döngünün sonsuz olmamasıdır. Sonsuz döngü olmasın ki değişkenimizi döngüden çıkıncada kullanabilelim.


public class Program {
    public static void main(String[] args) {

	int sayac = 0;
	//Dışarıdan alınan herhangi bir sayac değişkeni...
	for (; sayac < 3; sayac++) {
	    System.out.println(sayac);
	}
	System.out.println("Döngü bitti");
    }
}
 

Program Çıktısı :
0
1
2
Döngü bitti
Foreach metodunun Kullanımı :

For döngüsü içinde kullanılabilen bir metodtur. Metod ilk olarak çalıştırılır ve ardından döngünün sayaç değişkeni,ni arttırabiliriz. Bu şekilde string dizisindeki nesnelerin herbirini for döngüsü gibi kullanabiliriz.

Aşağıdaki örnekte fonksiyon üç defa çağrıldığında bize bir değer döndürecektir. Yapıyı incelediğinizde ne demek istediğimi anlayacaksınız...

 

public class Program {

    static int sayac;

    static int[] nesneleriGetir() {
	// Dizinin elemanlarını ayarladık. Bu diziden eleman çekeceğiz
	int[] dizi = new int[3];
	dizi[0] = sayac++;
	dizi[1] = sayac++;
	dizi[2] = sayac++;
	return dizi;
    }

    public static void main(String[] args) {

	// Metod bir kere çalıştırıyor Fakat yukarıdaki return komutuna kadar çalışıyor. Yani döngü sonlanana kadar...
	for (int deger : nesneleriGetir()) {
	    System.out.println(deger);
	}
    }
}
 

Program Çıktısı :
0
1
2
Çok Uzun Döngüler :

Javadaki döngüler bazen birçok şeyi kontrol edebilir. Bu döngüdeki değişkenlerin artmasıyla veya azalmasıyla olabilir. int değişkeni bazen çok büyük değerler alıp sonra negatife düşüp ulaşılmak istenen değere gelebilir. Bunlar olabilir ki şu anda hepimize hayal gibi geliyordur...

Fakat dikkat etmemiz gereken nokta bu türlü hatalar yapılırsa programımızın performansı çok ciddi şekilde düşebilir.

 

public class Program {
    public static void main(String[] args) {

	long sayac = 0;
	// Burda 100den 200e ulaşmak istiyoruz. Fakat gördüğünüz gibi bir hata yaptık ve tersten gidiyoruz.
	//Çıktıda göreceğimiz değer programımızın ne kadar değer saydığı olacaktır...
	//Yani 100 taneişlem yapacakken 2 milyardan fazla kontrol yapmış oldu...
	for (int i = 100; i <= 200; i--) {
	   sayac++;
	}
	System.out.println("Kontrol edilen Değer Sayısı: " +sayac);
    }
}
 
Program Çıktısı
Kontrol edilen Değer Sayısı: 2147483749
String Döngüleri :

Aşağıdaki döngü örneğinde string bir ifadenin üstünde işlem yapacağız. Girilen string ifadenin uzunluğu kadar karakterleri alacağız ve yazdıracağız. Bütün programlama dillerinde ilk karakter 0'dır...

Şimdi bununla ilgili örneğimize geçelim...  

public class Program {
    public static void main(String[] args) {

	String yazi = "TheKodProgram";

	// Döngümüze = dan itibaren başlayalım...
	for (int i = 0; i < yazi.length(); i++) {

	    // charAt metodu ile gelen sıradaki karakterimizi çağıralım...
	    char harf = yazi.charAt(i);
	    System.out.println(harf);
	}
    }
}

Program Çıktısı
T
h
e
K
o
d
P
r
o
g
r
a
m

Bu yazıda bu kadar arkadaşlar.

Java ile For döngüsünü anlatmaya çalıştım. Umarım anlatabilmişimdir...

İyi çalışmalar

Burak Hamdi Tufan


Tags


Share this Post

Send with Whatsapp

Post a Comment

Success! Your comment sent to post. It will be showed after confirmation.
Error! There was an error sending your comment. Check your inputs!

Comments

  • There is no comment. Be the owner of first comment...