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.
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
Ö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...
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...
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
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
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
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);
}
}
Kontrol edilen Değer Sayısı: 2147483749String 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...
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
Comments