Merhaba Arkadaşlar,
mobilhanem.com üzerinden anlattığımız / yayınladığımız Kotlin Eğitimi yazı serimize bu dersimizde Kotlin break continue komutu ve label kullanımından bahsedeceğiz.
Kotlin Break Continue ve Label
Break continue genel olarak tüm yazılım dillerinde olan bir komuttur ve döngü içinde belli koşullarda döngüden çıkmaya ve ya döngüde belli kosullar da bir step atlamaya yarar. Yani belli bir koşulda döngüyü tamamen sonlandırabilir ve ya o adımı atlayıp bir sonraki adımdan devam etmemize yarar.
Break Komutu
Break komutu döngüyü tamamen sonlandırmak için kullanılır. Yani bir döngü çalışırken break komutu ile karşılaşırsa ondan sonra gelen kodları çalıştırmaz ve döngüyü sonlandırır. Nasıl olduğunu aşağıdaki kodda daha iyi anlayacağınızı düşünüyorum.
Normal bir for döngüsü:
val numbers = 1..10
for(sayi in numbers){
println(sayi)
}
Konsol Çıktısı:
1
2
3
4
5
6
7
8
9
10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
val numbers = 1..10
for(sayi in numbers){ println(sayi) }
Konsol Çıktısı: 1 2 3 4 5 6 7 8 9 10 |
Şimde gelelim Kotlin Break Komutu nasıl kullanılır ve ne işe yarar
val numbers = 1..10
for(sayi in numbers){
println(sayi)
if(sayi == 3){
break
}
}
println(“Döngüden çıktı”)
Konsol Çıktısı:
1
2
3
Döngüden çıktı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
val numbers = 1..10
for(sayi in numbers){ println(sayi) if(sayi == 3){ break } }
println(“Döngüden çıktı”)
Konsol Çıktısı: 1 2 3 Döngüden çıktı |
Yukarıda gördüğünüz gibi kodumuz çalıştı ve sayi değerinin 3 olduğu yerde if içine girdi ve döngüden direk çıktı. break komutu direk döngüden çıkma işlemini yaptı.
Peki println komutumuz break komutundan sonra olsa ne olacaktı.
val numbers = 1..10
for(sayi in numbers){
if(sayi == 3){
break
}
println(sayi)
}
println(“Döngüden çıktı”)
Konsol Çıktısı:
1
2
Döngüden çıktı
val numbers = 1..10
for(sayi in numbers){ if(sayi == 3){ break } println(sayi) } println(“Döngüden çıktı”)
Konsol Çıktısı: 1 2 Döngüden çıktı |
Yukarıda gördüğünüz gibi Break komutuna geldiği zaman döngü içindeki, ama break komutu altındaki kodlar da çalışmıyor.
Break komutunu nerde kullanabiliriz diyorsanız basit bir örnek vereyim. Elinizde uzunluğu 100 olan bir array var ve içinde 1 den 100 e kadar olan sayılar sırasız bir şekilde dizilmiş. İçinde 50 yi bulmaya çalışıyorsunuz. Bulduğunuz an artık daha döngünün dönmesine gerek yok. Bu durumda break komutu ile döngüden çıkıyorsunuz.
Continue Komutu
Continue komutu ile döngünün bir adımını atlayarak sonraki adımına geçme işlemini yapabiliriz. Nasıl yani diyorsanız aşağıdaki örnekte kısaca anlatmaya çalışalım.
val numbers = 1..10
for(sayi in numbers){
if(sayi == 3){
continue
}
println(sayi)
}
println(“Döngüden çıktı”)
Konsol çıktısı:
1
2
4
5
6
7
8
9
10
Döngüden çıktı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
val numbers = 1..10
for(sayi in numbers){ if(sayi == 3){ continue } println(sayi)
} println(“Döngüden çıktı”)
Konsol çıktısı: 1 2 4 5 6 7 8 9 10 Döngüden çıktı |
Ne oldu şimdi diyorsanız, sayi değerimiz 3 olduğu an continue komutu altında ki kodları çalıştırmadı ve döngüye bir adım atlayarak devam etti. Bizim kodumuzda ne yaptı diyorsanız Konsol çıktısına baktığınız zaman 3 değerini yazdırmadı.
Peki bunu nerede kullanabiliriz ki diyorsanız yine basit bir örnek vereyim , döngü içinde bölme işlemi yapıyorsunuz , bölen sayı 0 olduğu zaman hata olacağını biliyoruz. Bunun kontrolünü yapıp bölen sayı 0 gelirse bölme işlemini yapmayıp bir sonraki adıma devam etmesi için continue kullanabiliriz.
Label Kullanımı
Kotlin Break Continue komutları iç içe döngülerde Label yapısı ile birlikte kullanılabilir. İçteki for döngüsünde break kullandığımız zaman aşağıdaki gibi sadece içteki for döngüsünden çıkacak ve dıştaki for döngüsü dönmeye devam edecek.
val numbers = 1..3
val numbers2 = 1..3
for(sayi in numbers){
for(sayi2 in numbers){
println(“Dıştaki döngü : $sayi , İçteki Döngü : $sayi2”)
}
}
Konsol Çıktısı:
Dıştaki döngü : 1 , İçteki Döngü : 1
Dıştaki döngü : 1 , İçteki Döngü : 2
Dıştaki döngü : 1 , İçteki Döngü : 3
Dıştaki döngü : 2 , İçteki Döngü : 1
Dıştaki döngü : 2 , İçteki Döngü : 2
Dıştaki döngü : 2 , İçteki Döngü : 3
Dıştaki döngü : 3 , İçteki Döngü : 1
Dıştaki döngü : 3 , İçteki Döngü : 2
Dıştaki döngü : 3 , İçteki Döngü : 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
val numbers = 1..3 val numbers2 = 1..3
for(sayi in numbers){ for(sayi2 in numbers){ println(“Dıştaki döngü : $sayi , İçteki Döngü : $sayi2”) } }
Konsol Çıktısı: Dıştaki döngü : 1 , İçteki Döngü : 1 Dıştaki döngü : 1 , İçteki Döngü : 2 Dıştaki döngü : 1 , İçteki Döngü : 3 Dıştaki döngü : 2 , İçteki Döngü : 1 Dıştaki döngü : 2 , İçteki Döngü : 2 Dıştaki döngü : 2 , İçteki Döngü : 3 Dıştaki döngü : 3 , İçteki Döngü : 1 Dıştaki döngü : 3 , İçteki Döngü : 2 Dıştaki döngü : 3 , İçteki Döngü : 3 |
Yukarıda normal bir şekilde iç içe döngü kullandık Dıştaki döngü ve İçteki döngünün sayi değerlerini yazdırdık. Ben içteki döngünün değerinin 3 olduğu an tüm döngüden çıkmasını isteyebilirim. Bunuda aşağıdaki gibi break komutu ile yaptığımda istediğimi elde edemediğimi göreceksiniz.
val numbers = 1..3
val numbers2 = 1..3
for(sayi in numbers){
for(sayi2 in numbers){
if(sayi2 == 3){
break
}
println(“Dıştaki döngü : $sayi , İçteki Döngü : $sayi2”)
}
}
Konsol Çıktısı:
Dıştaki döngü : 1 , İçteki Döngü : 1
Dıştaki döngü : 1 , İçteki Döngü : 2
Dıştaki döngü : 2 , İçteki Döngü : 1
Dıştaki döngü : 2 , İçteki Döngü : 2
Dıştaki döngü : 3 , İçteki Döngü : 1
Dıştaki döngü : 3 , İçteki Döngü : 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
val numbers = 1..3 val numbers2 = 1..3
for(sayi in numbers){ for(sayi2 in numbers){ if(sayi2 == 3){ break } println(“Dıştaki döngü : $sayi , İçteki Döngü : $sayi2”) } }
Konsol Çıktısı: Dıştaki döngü : 1 , İçteki Döngü : 1 Dıştaki döngü : 1 , İçteki Döngü : 2 Dıştaki döngü : 2 , İçteki Döngü : 1 Dıştaki döngü : 2 , İçteki Döngü : 2 Dıştaki döngü : 3 , İçteki Döngü : 1 Dıştaki döngü : 3 , İçteki Döngü : 2 |
Break ve Label Kullanımı
Ben sayi2 değerimin 3 olduğu an break komutu ile döngüden çıkmasını istiyorum. Fakat yukarıdaki kod da sadece içerideki döngüden çıkıyor ve kodumuz çalışmaya devam ediyor. peki dıştaki döngüden de çıkmak istersek nasıl yapacağız. İşte bu durumda Label kullanacağız. Aşağıdaki kodda örneklendiriyorum.
val numbers = 1..3
val numbers2 = 1..3
Mobilhanem@for(sayi in numbers){
for(sayi2 in numbers){
if(sayi2 == 3){
break@Mobilhanem
}
println(“Dıştaki döngü : $sayi , İçteki Döngü : $sayi2”)
}
}
Konsol Çıktısı:
Dıştaki döngü : 1 , İçteki Döngü : 1
Dıştaki döngü : 1 , İçteki Döngü : 2
val numbers = 1..3 val numbers2 = 1..3
Mobilhanem@for(sayi in numbers){ for(sayi2 in numbers){ if(sayi2 == 3){ break@Mobilhanem } println(“Dıştaki döngü : $sayi , İçteki Döngü : $sayi2”) } }
Konsol Çıktısı: Dıştaki döngü : 1 , İçteki Döngü : 1 Dıştaki döngü : 1 , İçteki Döngü : 2 |
Evet şuan istediğim gibi çalıştı. Ama nasıl çalıştı 🙂 For döngüsünden önce herhangi bir isimlendirme ile (biz mobilhanem verdik label’ımza siz istediğinizi verebilirsiniz) LabelAdı@ şeklinde for döngüsünün önüne koyduk, sonrasında ise aynı isimlendirme ile @LabelAdı şeklinde hemen break komutunun peşine koyduk , böylelikle kodumuz break komutundan sonraki labelAdı’na göre sonlandıracağı for döndüsünü seçti. Zaten dıştaki for döngüsü sonlandığı an , içteki for döngüsüde çalışmayacaktır.
Continue ve Label Kullanımı
Aynı örneği Continue komutu ile de çalıştıralım.
val numbers = 1..3
val numbers2 = 1..3
Mobilhanem@for(sayi in numbers){
for(sayi2 in numbers){
if(sayi2 == 3){
continue@Mobilhanem
}
println(“Dıştaki döngü : $sayi , İçteki Döngü : $sayi2”)
}
}
Konsol Çıktısı:
Dıştaki döngü : 1 , İçteki Döngü : 1
Dıştaki döngü : 1 , İçteki Döngü : 2
Dıştaki döngü : 2 , İçteki Döngü : 1
Dıştaki döngü : 2 , İçteki Döngü : 2
Dıştaki döngü : 3 , İçteki Döngü : 1
Dıştaki döngü : 3 , İçteki Döngü : 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
val numbers = 1..3 val numbers2 = 1..3
Mobilhanem@for(sayi in numbers){ for(sayi2 in numbers){ if(sayi2 == 3){ continue@Mobilhanem } println(“Dıştaki döngü : $sayi , İçteki Döngü : $sayi2”) } }
Konsol Çıktısı: Dıştaki döngü : 1 , İçteki Döngü : 1 Dıştaki döngü : 1 , İçteki Döngü : 2 Dıştaki döngü : 2 , İçteki Döngü : 1 Dıştaki döngü : 2 , İçteki Döngü : 2 Dıştaki döngü : 3 , İçteki Döngü : 1 Dıştaki döngü : 3 , İçteki Döngü : 2 |
Continue komutu kendinden sonra gelen LabelAdı’na göre döneceği for döngüsünü buluyor. Bizim kodumuzda continue komutu eğer label kullanmasaydık ,içteki döngüye dönecekti ama label kullandığımız için yukarıdaki for döngüsüne dönüyor.
Bu dersimizde Kotlin Break Continue ve Label kullanımından bahsettik. Kotlin Break Continue komutları arasında ki farkıda anladığımızı düşünüyorum. Label konusunu ise sizlerde kod yazarak deneyebilirsiniz. Daha iyi oturacağını düşünüyorum.
Bu konuda anlatmak istediklerim bu kadar konu hakkında soru , görüş ve önerilerinizi alttaki yorum kısmından sorabilirsiniz ayrıca sorularınızı Soru & Cevap sitemizden de çekinmeden sorabilirsiniz.
Kaynak : https://kotlinlang.org/docs/reference/returns.html
Tüm Kotlin Derslerimiz için tıklayınız.
1