Java’da Döngü Kullanimi – For , while ve do-while döngüleri

Döngüler

Yazilan programlarda bazen belli komut parçalarinin birçok kez çalismasi gerekebilir. Yani bazi komut parçalarinin, belli sartlar altinda tekrar tekrar islenmesi gerekebilir. Döngü deyimleri, bahsedilen komut parçalarinin belirtilen sartlar gerçeklestikçe tekrar tekrar islenmesini saglar. 

Java’da üç tür döngü vardir. Bunlar çogu programlama dilinde olan; “for”, “do-while” ve “while” döngüleridir. Bu döngülerden for ve while döngüsünde, kosul sinamasi döngüye girmeden önce yapilirken, do-while döngüsünde kosul sinamasi bir kod parçasi çalistiktan sonra yapilir.

Öncelikle for döngüsünün yapisi su sekildedir:

for ( 1. deger (baslangiç degeri-initialization) ; 2.deger (kosul kontrolü) ; 3.deger (islemler) )
{
. . . . . . . .   // sarta bagli tekrarlanmasini istedigimiz kodlar
. . . . . . . .
}

“for” döngüsü görüldügü gibi üç parçadan olusur. Her parça birbirinden ile ayrilir. Ilk parça, baslangiç degeri (initialization) dir. Burada bulunan islemler, döngü baslamadan önce ve bir kere islenir. Bu 1. degere birden fazla islem yazilabilir, bunlari da birbirinden ',' virgül ile ayirmak gerekir. Ancak bu islemleri az tutmanizi tavsiye ederim.

Ikinci parçada, kosul kontrolü yapilir. for döngüsünün her tekrarinda kontrol edilmesi gereken kodu bu kisima yazmak gerekir. Bu kod dogru oldugu surece, döngü devam eder, eger kosul saglanmiyorsa döngüden çikilir.

Üçüncü parçada yer alan kodlar ise; yine döngünün her turunda, süslü parantezin içindeki kodlar gibi çalisir. Tek fark, üçüncü parçadaki kodlarin baslangici, döngünün içinde yer alan kod parçalarinin çalismasindan sonra olur.

Basit bir örnek vermek gerekirse;

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

Yukaridaki for döngüsünde ilk parçada deger=5 diyerek, degerimizin ilk degerini atamis olduk. Ikinci parça olan deger<10, kosul kismimiz. Döngü her döndügünde “deger” in 10 dan küçük olup olmadigina bakacak. “deger” 10’a esit ya da 10’dan büyük oldugu anda döngü sonlanir. Üçüncü parça olan deger++ kismi ise, System.out.println(deger); çalistiktan sonra döngü döndükçe “deger”in bir artacagini gösteriyor. Sonuç olarak bu kod parçasi ekrana alt alta 5 ten 10 a kadar tüm sayilari yazar. 10 hariçtir. Çünkü deger 9 olarak basildiktan sonra deger++ çalisir. “deger” in degeri 1 artip 10 olur ve döngü kontrolüne girdiginde deger<10 sartini saglamadigi için döngü sonlanir.

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ügü gibi iç içe for döngüsü mevcut. Bu kisa kod parçasi ilkokulda ögrendigimiz çarpim tablosunu olusturuyor. Çiktisi su sekilde:

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 sayilarin 0 dan 9 a kadar olan sayilarla çarpimini verir. Kodu açiklayacak olursak; her i degeri için j nin sahip oldugu degerle çarpar. Yani ilk önce i=0 için, i degerini 0 dan 9 a kadar olan sayilarla çarpar ve ekrana alt alta yazar. i=0 ile isimiz bittiginde bir bosluk birakir. (Bunu ilk for döngüsünün disindaki “System.out.println();” ile yapar.) Daha sonra i=1 için ayni islemi yapar. Bu islemler i=9 a kadar devam eder. En son i=10 için döngüdeki sartimiz ( i<10 ) saglanmadigi için programimiz sonlanir.

Son olarak for döngüsüyle ilgili bilinmesi gereken bir takim sey söyleyip, while ve do while döngüsünü anlatacagim.

  • for döngüsünü kullanirken eger döngü içinde bir sati kod çalistirmayi düsünüyorsaniz süslü parantez {} kullanmaniza gerek yok. Ancak birden fazla sattir döngü içinde çalistirilacaksa kesinlikle süslü parantez{} kullanmaniz gerekir. Benden size tavsiye kodunuzun muntazam görünmesi ve daha okunakli olmasi için süslü parantezi her durum için kullanin. Daha sonra dönüp baktiginizda kodunuzu anlamaniz kolay olur.
  • 3 kisimdan olusan for döngüsünün her bölümüne bir sey yazmak zorunda degiliz. Örnegin hepsini bosta birakabiliriz (bu çok saglikli olmaz ama kodunuz dogru çalisir.) ya da baslangiç degeri kismini bos birakip döngünün disinda baslangiç degeri atayip, ikinci ve üçüncü kisimlari doldurup döngümüzü olusturabiliriz. for döngüsünü kosullara ve nasil bir program yazacagimiza bagli olarak su sekillerde kullanabiliriz:
for( ; ; ){      
	  . . . .
} 
for( ; deger<20; deger--) {
  . . . .
}
for( ; deger<20;) {
  . . . .
}
for(int deger=10 ; deger<20;) {
  . . . .
}

  • for döngüsü döngüyü olusturan degiskenleri tek bir satirda toplar. Dolayisiyla döngü yapisini daha rahat okumak ve degiskenlere deger atanmasi ve güncellenmesi gibi komutlarin unutulmasinda ortaya çikabilecek hatalarin önüne geçebilmek açisindan programciya kolaylik saglar.

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 farklari var. while döngüsünde, while komutu içerisindeki ifade “true” degerini aldigi müddetçe while döngüsünün blogu içerisindeki kod parçalari islenir. Eger while komutu içerisindeki deger “false” degerini alirsa, döngü blogunun çalismasi sonlanir.

while döngüsünün yapisi su sekildedir.

while(expression-ifade){
. . . 
}

Tüm döngülerin mantigi aynidir. Herhangi bir döngüyü anlamaniz, diger döngüleri de rahatlikla anlayabileceginiz anlamina gelir. Sik sik kod yazarak, alistirma yaparak bu konuyu pekistirebilirsiniz. Simdi bu döngüyü daha iyi anlamaniz 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 sayi 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("Girdiginiz sayilarin toplami = "+toplam);
	}
}

Çikti:

	Lütfen 5 sayi giriniz: 
1. sayiyi giriniz: 
5
2. sayiyi giriniz: 
4
3. sayiyi giriniz: 
7
4. sayiyi giriniz: 
6
5. sayiyi giriniz: 
2
Girdiginiz sayilarin toplami = 24

Bu örnekte kullanicidan 5 sayi isteniyor. Kullanicidan deger almayi daha görmedik ancak simdilik Scanner sinifi yardimi ile kullanicidan deger aldigimizi bilmeniz yeterli. “i” degiskenini döngünün 5 kere dönmesi için tanimladik. “i” degiskenini 1 den baslatmamizin sebebi ekrana 1. Degeri giriniz yazmasini saglamak içindir.  while döngüsü içindeki sart saglandigi müddetçe döngünün döndügünü görüyorsunuz. Döngü her döndügünde “toplam” degiskeninde o ana kadar girilen sayilarin toplami bulunur. En son 5. sayi da girildikten sonra, i=6 oldugundan while içindeki komut saglanmaz ve döngü sonlanir. Son olarak “System.out.println("Girdiginiz sayilarin toplami = "+toplam);” çalisir ve program sonlanir. Bu programi for döngüsüyle de söyle yazabilirdik. Asagidaki kodun da yaptigi islem aynidir for döngüsüyle while döngüsünü karsilastirmaniza yardimci olacagini düsünüyorum.

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		int toplam=0;
		System.out.println("Lütfen 5 sayi 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("Girdiginiz sayilarin toplami = "+toplam);
	}
}

do-while döngüsü ise while döngüsüne çok benzer. while döngüsünden farki; do-while döngüsü kosul çalistirilmadan önce kod blogu bir defa çalisir ve sonra kosula girer. Yani kosul dogru olsa da olmasa da kod blogu bir defa çalismis olur. Bu fark aslinda önemli bir farktir.

do{
. . . . //kod blogu
. . . .
}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 sayilar toplami: "+toplam);
	}
}


Çikti:

	(10 dahil)10'a kadar olan çift sayilar toplami: 30

 

2 thoughts on “Java’da Döngü Kullanimi – For , while ve do-while döngüleri

  1. Başlangıç duzeyinde JAVA programlama öğreniyorum. benim sorum şöyle;
    tipik bir random sayı dizisi üreten bir kod parçacığını çalıştırdıktan sonra dönen random sayı dizisinden sonra kullanıcıya tekrar yeni bir farklı sayı dizisi isteyip istemediğini soran ve alınacak EVET ya da HAYIR cevabına göre yeni sayı dizisi üretecek ya da programı sonlandıracak bir kodu nasıl yazabiliriz. özellikle EVET seçeneğinden sonra programın başa dönmesi tarafını yazamadım..

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir