Break ve Continue

Break ve continue sözcükleri döngülerde sık kullanılan anahtar sözcüklerdendir. Break sözcüğünü daha evvel başka bir yazımızda da görmüştük. Bu yazımızda döngülerdeki kullanımına da değineceğiz.

Bu yazımız için her zaman yaptığımız gibi bir proje oluşturuyoruz. Projemizin ismini 06 – BreakAndContinue olacak. Hazırsanız başlayalım.

Break

Break anahtar sözcüğümüzü, karar verme ile ilgili yazımızda “kırmak” olarak çevirmiştik. Anlam olarak da, işlev olarak da break sözcüğü kırıcı bir özelliğe sahiptir. Bir döngüyü kırmak, yani onu ortasında bir yerde sonlandırmak isterseniz break komutu size yardımcı olacaktır.

Break komutu, tıpkı dolabınızda belirli renkteki bir tişörtü aramanız esnasındaki davranışınıza benzer. Diyelim ki kırmızı renkli tişörtünüzü arıyorsunuz ve tüm tişörtlerinizi karıştırmaya başladınız. Kırmızı tişörtü bulduğunuzda ise aramayı bırakırsınız. Kalan tişörtlerin renklerinin bir önemi yoktur ve onları kontrol etmezsiniz. Yani döngünüz kırılır. Gelin bu durumu kod üzerinde görelim. Aşağıdaki gibi bir methodu TestClass sınıfımıza ekliyoruz.

private static void tshirtLoop() {
	
	String[] tshirts = {
            "Blue", 
            "Cyan", 
            "Green", 
            "Lime", 
            "Red",
            "Purple",
            "Yellow"
        };
	
	for (String tshirt : tshirts) {
		
		System.out.println("Color : " + tshirt);
		
		if ("Red".equals(tshirt)) {
			
			System.out.println("Red found!");
			break;
		}
	}
}

Yukarıda gördüğünüz gibi bir foreach döngüsü kullanmaktayız. tshirts ismindeki bir dizide renkleri tutmaktayız. Bunları tişört renklerimiz olarak hayal edelim. Döngü, tüm bu dizi üstünde dolaşıyor ve o an üzerinde bulunduğu indeksi tshirt olarak isimlendirip, bloğun içinde kullanıyor. İdealde bu döngünün tüm renkleri ekrana yazdırmasını bekleriz. Ancak döngü içerisinde bulunan if koşuluna bakarsanız, break kullanımını göreceksiniz. Bu da kırmızı değerine ulaştığımızda döngünün sonlandırılmasına yol açar. Yani ekranda purple ve yellow çıktılarını görmeyiz. Bu kod aşağıdaki gibi bir çıktı üretir.

Color : Blue
Color : Cyan
Color : Green
Color : Lime
Color : Red
Red found!

Bu kod içerisinden break komutunu silip çıktıya tekrar göz atmanızı ve farkı gözlemlemenizi öneriyorum.

Continue

Continue, break sözcüğünün aksine ilk defa karşımıza çıkmaktadır. Bu sözcük döngülerin belirli şartlar altında geçici olarak işlememesi için kullanılır. Anlam olarak baktığımızda, bu sözcük devam etmek ile karşılanabilir.

Durumu yine gerçek hayattan bir örnekle temsil edebiliriz. Gece aracınızla ilerlerken polis çevirmesine denk geldiğinizi varsayalım. Polisler genelde tüm araçları durdurmazlar. Aralarından bazısını durdurken, bazısına ise devam et anonsu geçerler. Yani bazı araçlar denetlemeye tabi olurken, bazılarına ise bu denetleme yapılmaz. Yine bu durumu bir method ile temsil edelim. Method ismimiz trafficLoop() olsun. Senaryomuzda ise bir ihbar üzerine polisin sadece beyaz renkli araçları denetlediğini düşünelim.

private static void trafficLoop() {
	
	 String[] vehicles = new String[10];
	 vehicles[0] = "White";
	 vehicles[1] = "White";
	 vehicles[2] = "Black";
	 vehicles[3] = "Blue";
	 vehicles[4] = "White";
	 vehicles[5] = "White";
	 vehicles[6] = "Gray";
	 vehicles[7] = "Blue";
	 vehicles[8] = "Blue";
	 vehicles[9] = "Blue";
	 
	 for (int i = 0; i < vehicles.length; i++) {
            System.out.println(vehicles[i]);
            
            if (!"White".equals(vehicles[i])) {
            	System.out.println("Continue!");
            	continue;
            }
            
            System.out.println("Inspection on car-" + i );
        }
	
}

Bu kod bloğunu yorumlarsak; özellikle döngüye odaklanmak isteriz. Zira konumuz olan continue sözcüğünün kullanımına burada rastlamaktayız. Bu döngü vehicles dizisinin boyutu kadar devam eden ve beyaz olmayan araçlarda döngünün içindeki kodun tamamı işlemeden, bir sonraki iterasyona devam etmesini sağlayan bir mantık ile yazılmıştır. Dikkatinizi özel olarak if şartının içerisinde bulunan ! operatörüne çekmek istiyorum. Zira bu kontrol aracın rengi beyaz ise şartını tersine çeviriyor. Yani beyaz olmayan araçlarda continue komutunun çalışmasını sağlıyor. Böylece bir alttaki ekrana yazı yazdıran satırın çalışmamasını sağlamış oluyoruz.

Bu kodun çıktısına bakarak akışı daha anlamlı olarak inceleyebiliriz.

White
Inspection on car-0
White
Inspection on car-1
Black
Continue!
Blue
Continue!
White
Inspection on car-4
White
Inspection on car-5
Gray
Continue!
Blue
Continue!
Blue
Continue!
Blue
Continue!

Bu örnekleri while döngüsü ile de yapmanızı öneriyorum. Konunun pekiştirilmesi adına bu tarz pratikler çok işe yarayacaktır. Aşağıda bu yazıya ait kodun tamamını da paylaşıyorum. Bir sonraki konuda görüşene kadar, hoşçakalın.

public class TestClass {

	public static void main(String[] args) {
		
		tshirtLoop();
		trafficLoop();
	}

	private static void tshirtLoop() {
		
		String[] tshirts = {
	            "Blue", 
	            "Cyan", 
	            "Green", 
	            "Lime", 
	            "Red",
	            "Purple",
	            "Yellow"
	        };
		
		for (String tshirt : tshirts) {
			
			System.out.println("Color : " + tshirt);
			
			if ("Red".equals(tshirt)) {
				
				System.out.println("Red found!");
				break;
			}
		}
	}

	private static void trafficLoop() {
		
		 String[] vehicles = new String[10];
		 vehicles[0] = "White";
		 vehicles[1] = "White";
		 vehicles[2] = "Black";
		 vehicles[3] = "Blue";
		 vehicles[4] = "White";
		 vehicles[5] = "White";
		 vehicles[6] = "Gray";
		 vehicles[7] = "Blue";
		 vehicles[8] = "Blue";
		 vehicles[9] = "Blue";
		 
		 for (int i = 0; i < vehicles.length; i++) {
	            System.out.println(vehicles[i]);
	            
	            if (!"White".equals(vehicles[i])) {
	            	System.out.println("Continue!");
	            	continue;
	            }
	            
	            System.out.println("Inspection on car-" + i );
	        }
		
	}
	
}

Leave a Reply

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