Döngüler – II

Döngüler konusuna bir önceki yazımızdan devam ediyoruz. Hatırlayacağınız gibi döngüler belirli bir mantığı tekrar tekrar yürütmek için kullanılan yapılardır. Önceki yazımızda for döngüsü ile çeşitli örnekler yapmıştık. Bu yazıda ise, daha farklı bir anahtar sözcükle hatırlayacağınız, bir döngüden bahsedeceğiz.

While döngüsü

While sözcüğünün anlamını iken olarak belirtirsek yanlış sayılmayız. Bu döngü tipinde kontrol noktası belirli bir şartı sağlar iken döngümüz çalışır.

Öncelikle sözdizime bir göz atalım.

while(şart) {  
   //Çalışacak kod bloğu
}

Bir kitap örneği üzerinden konuşacak olursak; while ve for döngüleri kitap okuma eylemini farklı şekillerde adreslerler. For döngüsü “Kitaptaki her sayfayı tek tek oku” şeklinde bir yaklaşıma sahiptir. While döngüsü ise “Kitapta sayfa kalmayana kadar oku” yaklaşımını kullanır. Yani temel olarak iki döngü ile de kitabı bitirmeniz mümkün. “Bu döngülerden hangisini ne zaman kullanmalıyım?” sorunuza verilecek cevaplar, felsefik tartışmalar yaratmaya müsaittir. Dolayısı ile işinizi hangisi ile halledebiliyorsanız o döngüyü kullanmanızı önereceğim.

Öyleyse ilk while döngüsü örneğimizi yapalım. Hedefimiz 5 adımlı bir iterasyon yaratmak olsun. Bunun için TestClass sınıfımıza yeni bir method ekleyeceğim. Kodu aşağıdaki gibi yazıyorum.

private static void whileLoop() {

	int i = 0;
	
	System.out.println("Loop started");
	
	while (i < 5) {
		
		i++;
		System.out.println("Iteration: " + i);
		
	}
	
	System.out.println("Loop ended");
}

Biraz bu methodun üzerinden inceleme yapalım. Görüleceği gibi, döngünün önünde ve arkasında bulunan ve döngünün başlayıp bitişini gösteren iki adet kod satırı bulunmakta. Bununla beraber döngünün şart kısmında i değişkeninin 5’ten küçük olup olmadığı kontrolü gözümüze çarpmakta. Bu methodu konuşma diline şöyle yaklaştırabiliriz : “i değişkeni 5’ten küçük iken, i’yi 1 arttır ve ekrana kaçıncı iterasyonda olduğumuzu yaz”. Dikkat edilirse i’nin ilk değeri 0 olarak verilmiştir. Bu da döngünün başlangıç şartına uyması anlamına gelmektedir. Böylece döngü başlar. Bu kod çalıştığında ise aşağıdaki gibi bir çıktı verir.

Loop started
Iteration: 1
Iteration: 2
Iteration: 3
Iteration: 4
Iteration: 5
Loop ended

Bu kod parçasındaki değerleri ve operatörleri değiştirerek döngünün çalışma prensibini kendi başınıza da yorumlamaya çalışın.

For döngüsünün farklı tipleri bulunduğu gibi, while döngüsü için de farklı türler mevcuttur. Yukarıdaki döngünün yanısıra bir do-while döngüsü mevcuttur. Gelin sözdizime birlikte göz atalım.

do {
//Çalışacak kod bloğu	
} while (şart);

While döngüsünün aksine, do-while döngüsü bloğun içerisindeki kodu, hiçbir şart aramadan, 1 kere çalıştırır. Şart kontrolünü ise sonradan yapar. Az önce yaptığımız örneği bu döngü ile kodlayalım ve sonrasında bu istisnai durumu da gösterelim. Öncelikle, do-while döngüsü 5 iterasyon yapan bir method yazalım.

private static void doWhileLoop() {

	int i = 0;
	
	System.out.println("Loop started");
	
	do {
		
		i++;
		System.out.println("Iteration: " + i);
		
	} while (i < 5);
	
	System.out.println("Loop ended");
	
}
Loop started
Iteration: 1
Iteration: 2
Iteration: 3
Iteration: 4
Iteration: 5
Loop ended

Gördüğünüz üzere çıktı aynı şekilde oluştu. Bu döngüyü konuşma diliyle ifade etmek istersek, cümlemizi şöyle kurabiliriz: “Yap: i’yi arttır ve ekrana kaçıncı iterasyonda olduğumuzu yaz ve i 5’ten küçük iken(ise) tekrarla”.

Şimdi de bahsettiğimiz istisnai duruma bakalım. Bunun için benzeri bir method daha yazacağız. Bu methodun ismini doWhileLoop2() olarak belirledim. Pratik olması açısından kendiniz yukarıdakine benzer bir methodu yazınız. Sonrasında içerisindeki değerlerle oynayacağız. Nihayetinde şu şekilde bir method göreceğiz.

public static void doWhileLoop2() {
	
	int i = 6;
	
	System.out.println("Loop 2 started");
	
	do {
		
		i++;
		System.out.println("Value: " + i);
		
	} while (i < 5);
	
	System.out.println("Loop 2 ended");
	
}

Dikkat ederseniz döngünün şartında kullandığımız i değişkeninin değeri 6 olarak atanmış. Ayrıca döngünün sonundaki şart bu değerin 5’ten küçük olup olmadığını kontrol ediyor. Ancak kodu çalıştırdığımızda döngü içerisindeki komutun çalıştığını görürüz.

Loop 2 started
Value: 7
Loop 2 ended

Böylece do-while döngüsünün, bloğun içini en az bir kere çalıştırdıktan sonra şartları kontrol ettiğini gözlemlemiş oluyoruz.

Bu yazımızla beraber döngüler konusunu tamamlamış oluyoruz. Bir sonraki yazımızda döngülerin içerisinde kullanılan iki adet anahtar sözcükten bahsedeceğiz. Böylece döngüler konusunu da pekiştirmiş olacağız. Aşağıya döngüler ile ilgili yazdığımız kodun tamamını bırakıyorum. Bir sonraki yazıda görüşmek üzere.

public class TestClass {

	public static void main(String[] args) {

		forLoopCounter();
		forLoopListing();
		forLoopEach();
		whileLoop();
		doWhileLoop();
		doWhileLoop2();
	}

	private static void forLoopCounter() {

		for (int i = 1; i <= 10; i++) {
			System.out.println(i);
		}
	}

	private static void forLoopListing() {

		String[] nameList = {
                "Gloves", 
                "Steering wheel", 
                "Blankets", 
                "Drink", 
                "Iceman"
            };
		
		for (int i = 0; i < nameList.length; i++) {
			System.out.println(nameList[i]);
		}
	}

	private static void forLoopEach() {

		String[] radioMessages = new String[4];
		radioMessages[0] = "Leave me alone! I know what I'm doing.";
		radioMessages[1] = "SMOOOOOOOTH OPPERATOOOOOOOR!";
		radioMessages[2] = "All the time you have to leave the space";
		radioMessages[3] = "You mean like, forever?";

		for (String radioMessage : radioMessages) {
			System.out.println(radioMessage);
		}
	}

	private static void whileLoop() {

		int i = 0;

		System.out.println("Loop started");

		while (i < 5) {

			i++;
			System.out.println("Iteration: " + i);

		}

		System.out.println("Loop ended");
	}

	private static void doWhileLoop() {

		int i = 0;

		System.out.println("Loop started");

		do {

			i++;
			System.out.println("Iteration: " + i);

		} while (i < 5);

		System.out.println("Loop ended");

	}

	public static void doWhileLoop2() {

		int i = 6;

		System.out.println("Loop 2 started");

		do {

			i++;
			System.out.println("Value: " + i);

		} while (i < 5);

		System.out.println("Loop 2 ended");

	}
}

Leave a Reply

Your email address will not be published. Required fields are marked *