Ana Sayfa » Dersler » Java » Java'da Döngü Kullanımı - For , while ve do-while döngüleri

Java'da Döngü Kullanımı - For , while ve do-while döngüleri

Döngüler

Yazılan programlarda bazen belli komut parçalarının birçok kez çalışması gerekebilir. Yani bazı komut parçalarının, belli şartlar altında tekrar tekrar işlenmesi gerekebilir. Döngü deyimleri, bahsedilen komut parçalarının belirtilen şartlar gerçekleştikçe tekrar tekrar işlenmesini sağlar. 

Java’da üç tür döngü vardır. Bunlar çoğu programlama dilinde olan; “for”, “do-while” ve “while” döngüleridir. Bu döngülerden for ve while döngüsünde, koşul sınaması döngüye girmeden önce yapılırken, do-while döngüsünde koşul sınaması bir kod parçası çalıştıktan sonra yapılır.

Öncelikle for döngüsünün yapısı şu şekildedir:

for ( 1. değer (başlangıç değeri-initialization) ; 2.değer (koşul kontrolü) ; 3.değer (işlemler) )
{
. . . . . . . .   // şarta bağlı tekrarlanmasını istediğimiz kodlar
. . . . . . . .
}

“for” döngüsü görüldüğü gibi üç parçadan oluşur. Her parça birbirinden ile ayrılır. İlk parça, başlangıç değeri (initialization) dir. Burada bulunan işlemler, döngü başlamadan önce ve bir kere işlenir. Bu 1. değere birden fazla islem yazılabilir, bunları da birbirinden ',' virgül ile ayırmak gerekir. Ancak bu işlemleri az tutmanızı tavsiye ederim.

İkinci parçada, koşul kontrolü yapılır. for döngüsünün her tekrarında kontrol edilmesi gereken kodu bu kısıma yazmak gerekir. Bu kod doğru olduğu surece, döngü devam eder, eğer koşul sağlanmıyorsa döngüden çıkılır.

Üçüncü parçada yer alan kodlar ise; yine döngünün her turunda, süslü parantezin içindeki kodlar gibi çalışır. Tek fark, üçüncü parçadaki kodların başlangıcı, döngünün içinde yer alan kod parçalarının çalışmasından sonra olur.

Basit bir örnek vermek gerekirse;

for(int deger=5;deger<10;deger++){
     System.out.println(deger);
}

Yukarıdaki for döngüsünde ilk parçada deger=5 diyerek, değerimizin ilk değerini atamış olduk. İkinci parça olan deger<10, koşul kısmımız. Döngü her döndüğünde “deger” in 10 dan küçük olup olmadığına bakacak. “deger” 10’a eşit ya da 10’dan büyük olduğu anda döngü sonlanır. Üçüncü parça olan deger++ kısmı ise, System.out.println(deger); çalıştıktan sonra döngü döndükçe “deger”in bir artacağını gösteriyor. Sonuç olarak bu kod parçası ekrana alt alta 5 ten 10 a kadar tüm sayıları yazar. 10 hariçtir. Çünkü deger 9 olarak basıldıktan sonra deger++ çalışır. “deger” in değeri 1 artıp 10 olur ve döngü kontrolüne girdiğinde deger<10 şartını sağlamadığı için döngü sonlanır.

Konuyu biraz daha oturtabilmek için bir örnek daha vermek istiyorum.

public class Main {
	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			for (int j = 0; j < 10; j++) {
				System.out.println(i + "*" + j + " = " + i * j);
			}
			System.out.println();
		}
	}
}

Bu örnekte görüldüğü gibi iç içe for döngüsü mevcut. Bu kısa kod parçası ilkokulda öğrendiğimiz çarpım tablosunu oluşturuyor. Çıktısı şu şekilde:

0*0 = 0
0*1 = 0
0*2 = 0
0*3 = 0
0*4 = 0
0*5 = 0
0*6 = 0
0*7 = 0
0*8 = 0
0*9 = 0

. . .
. . .

9*0 = 0
9*1 = 9
9*2 = 18
9*3 = 27
9*4 = 36
9*5 = 45
9*6 = 54
9*7 = 63
9*8 = 72
9*9 = 81

0 dan 9 a kadar sayıların 0 dan 9 a kadar olan sayılarla çarpımını verir. Kodu açıklayacak olursak; her i değeri için j nin sahip olduğu değerle çarpar. Yani ilk önce i=0 için, i değerini 0 dan 9 a kadar olan sayılarla çarpar ve ekrana alt alta yazar. i=0 ile işimiz bittiğinde bir boşluk bırakır. (Bunu ilk for döngüsünün dışındaki “System.out.println();” ile yapar.) Daha sonra i=1 için aynı işlemi yapar. Bu işlemler i=9 a kadar devam eder. En son i=10 için döngüdeki şartımız ( i<10 ) sağlanmadığı için programımız sonlanır.

Son olarak for döngüsüyle ilgili bilinmesi gereken bir takım şey söyleyip, while ve do while döngüsünü anlatacağım.

  • for döngüsünü kullanırken eğer döngü içinde bir satı kod çalıştırmayı düşünüyorsanız süslü parantez {} kullanmanıza gerek yok. Ancak birden fazla sattır döngü içinde çalıştırılacaksa kesinlikle süslü parantez{} kullanmanız gerekir. Benden size tavsiye kodunuzun muntazam görünmesi ve daha okunaklı olması için süslü parantezi her durum için kullanın. Daha sonra dönüp baktığınızda kodunuzu anlamanız kolay olur.
  • 3 kısımdan oluşan for döngüsünün her bölümüne bir şey yazmak zorunda değiliz. Örneğin hepsini boşta bırakabiliriz (bu çok sağlıklı olmaz ama kodunuz doğru çalışır.) ya da başlangıç değeri kısmını boş bırakıp döngünün dışında başlangıç değeri atayıp, ikinci ve üçüncü kısımları doldurup döngümüzü oluşturabiliriz. for döngüsünü koşullara ve nasıl bir program yazacağımıza bağlı olarak şu şekillerde kullanabiliriz:
for( ; ; ){      
	  . . . .
} 
for( ; deger<20; deger--) {
  . . . .
}
for( ; deger<20;) {
  . . . .
}
for(int deger=10 ; deger<20;) {
  . . . .
}

  • for döngüsü döngüyü oluşturan değişkenleri tek bir satırda toplar. Dolayısıyla döngü yapısını daha rahat okumak ve değişkenlere değer atanması ve güncellenmesi gibi komutların unutulmasında ortaya çıkabilecek hataların önüne geçebilmek açısından programcıya kolaylık sağlar.

2. While Ve Do-While Döngüsü

Öncelikle while döngüsünden bahsetmek istiyorum. Zaten iki döngüde birbirine çok benzer çok az farkları var. while döngüsünde, while komutu içerisindeki ifade “true” değerini aldığı müddetçe while döngüsünün bloğu içerisindeki kod parçaları işlenir. Eğer while komutu içerisindeki değer “false” değerini alırsa, döngü bloğunun çalışması sonlanır.

while döngüsünün yapısı şu şekildedir.

while(expression-ifade){
. . . 
}

Tüm döngülerin mantığı aynıdır. Herhangi bir döngüyü anlamanız, diğer döngüleri de rahatlıkla anlayabileceğiniz anlamına gelir. Sık sık kod yazarak, alıştırma yaparak bu konuyu pekiştirebilirsiniz. Şimdi bu döngüyü daha iyi anlamanız için bir örnek verelim.

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		int toplam=0;
		System.out.println("Lütfen 5 sayı giriniz: ");
		Scanner s=new Scanner(System.in);
		int i=1;
		while (i<6) {
			System.out.println(i+". sayiyi giriniz: ");
			int sayi=s.nextInt();
			toplam+=sayi;
			i++;
		}
		System.out.println("Girdiğiniz sayilarin toplami = "+toplam);
	}
}

Çıktı:

	Lütfen 5 sayı giriniz: 
1. sayiyi giriniz: 
5
2. sayiyi giriniz: 
4
3. sayiyi giriniz: 
7
4. sayiyi giriniz: 
6
5. sayiyi giriniz: 
2
Girdiğiniz sayilarin toplami = 24

Bu örnekte kullanıcıdan 5 sayı isteniyor. Kullanıcıdan değer almayı daha görmedik ancak şimdilik Scanner sınıfı yardımı ile kullanıcıdan değer aldığımızı bilmeniz yeterli. “i” değişkenini döngünün 5 kere dönmesi için tanımladık. “i” değişkenini 1 den başlatmamızın sebebi ekrana 1. Değeri giriniz yazmasını sağlamak içindir.  while döngüsü içindeki şart sağlandığı müddetçe döngünün döndüğünü görüyorsunuz. Döngü her döndüğünde “toplam” değişkeninde o ana kadar girilen sayıların toplamı bulunur. En son 5. sayı da girildikten sonra, i=6 olduğundan while içindeki komut sağlanmaz ve döngü sonlanır. Son olarak “System.out.println("Girdiğiniz sayilarin toplami = "+toplam);” çalışır ve program sonlanır. Bu programı for döngüsüyle de şöyle yazabilirdik. Aşağıdaki kodun da yaptığı işlem aynıdır for döngüsüyle while döngüsünü karşılaştırmanıza yardımcı olacağını düşünüyorum.

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		int toplam=0;
		System.out.println("Lütfen 5 sayı giriniz: ");
		Scanner s=new Scanner(System.in);
		for (int i = 1; i < 6; i++) {
			System.out.println(i+". sayiyi giriniz: ");
			int sayi=s.nextInt();
			toplam+=sayi;
		}
		System.out.println("Girdiğiniz sayilarin toplami = "+toplam);
	}
}

do-while döngüsü ise while döngüsüne çok benzer. while döngüsünden farkı; do-while döngüsü koşul çalıştırılmadan önce kod bloğu bir defa çalışır ve sonra koşula girer. Yani koşul doğru olsa da olmasa da kod bloğu bir defa çalışmış olur. Bu fark aslında önemli bir farktır.

do{
. . . . //kod bloğu
. . . .
}while(expression-ifade);

Bir örnekle döngüler konusunu bitiriyorum.

public class Main {
	public static void main(String[] args) {
		int toplam=0;
		int i=0;
		do{
			if(i%2==0){
				toplam+=i;
			}
			i++;
		}while(i<=10);
		System.out.println("(10 dahil)10'a kadar olan çift sayılar toplamı: "+toplam);
	}
}


Çıktı:

	(10 dahil)10'a kadar olan çift sayılar toplamı: 30

 

Yazar Hakkında

Idil Hocaoglu

Makale Sayısı : 6

Java'da Döngü Kullanımı - For , while ve do-while döngüleri

18 yorum