Kotlin’de Kontrol Yapıları ve Döngüler
Merhabalar, Kotlin öğrenmeye devam ediyoruz. Bu yazımda aşağıda listelediğim konulara değineceğiz.
- If-Else
- When
- Range
- For
- While
Hadi hemen başlayalım.
Öncelikle Kontrol Yapısı(Control Flow) ve Döngüler(Loops) diye adlandırdığımız ifadeler nedir açıklayalım.
Kontrol Yapısı(Control Flow): Yapılması istenilen bir işlemin belirli şartlar gerçekleştiğinde yapılmasını sağlayan bir yapıdır.
Döngüler(Loops): Tekrar eden işlemleri gerçekleştirebilmek için kullanılan yapılardır.
If-Else
If else kontrol yapılarından biridir. Koşul sağlanırsa if case’i çalışır, sağlanmazsa else case’i çalışır. Her kullanımda else case olmayabilir. Öyle bir durumda kod satıları if case’inden sonra kaldığı yerden çalışmaya devam eder.
- Kullanımında if else case’lerinden sonra çalışacak kodlar süslü parantez içerisinde yazılır.
- İf ve else’den sonra tek satır kod yazacaksak süslü parantez kullanmak zorunda değiliz.
- İf-else kullanımında statement ve expression olarak 2 kullanım vardır.
Statement kullanımı sadece if else kullanarak şartı kontrol ettirmektir. Yukarıdaki kullanım öreneğidir. Expression kullanımı ise bir value'ya değer olarak if else kodlarını eşitliğin diğer kısmına yazmaktır. Yani if else case'leri için yazılmış parantezlerin son satırı value'ya değer olarak atanır.
Kotlinde exprssion kullanımından ötürü ternary operatörü yoktur.
Ternary operatörü neydi diye düşünüyorsanız hemen hatırlayalım.
koşul ? true : false;Kotrolün if else yerine bu şekilde yapımıdır. Burada soru işaretini(?) if iki noktayı(:) else gibi düşünebiliriz.
- 2 farklı tipteki number değişkenler karşılaştırılacaksa type conversion yapılmalıdır. Çünkü equals fonksiyonu önce değişkenlerin tipini karşılaştırıyor. Eğer tipler uymuyorsa kod çalıştırılmadan ide direk hata verir.
- Birden fazla şartlı durumunuz varsa bunların her birini ayrı ayrı if şeklinde yazmak performans düşüklüğüne yol açar. İf else şeklinde yazmak daha performanslıdır. Çünkü if else kullanımında doğru case bulunduğunda diğer case’ler kontrol edilmez. Ancak diğer durumda doğru case bulunsa bile bütün case’ler kontrol edilir.
When
When diğer programlama dillerindeki switch case’lerin kullanımına karşılık gelmektedir. Pratik bir kullanımı vardır.
//Kullanım formatı when(karşılaştıracak ifade){
value -> {}
value -> {}
value -> {}
}
İf else’lerde olduğu gibi {} arasına tek satır kod yazılacaksa {}’leri kullanmayabilirsiniz.
- Yine if else’lerde olduğu gibi when’lerde de expression kullanımı vardır. Bu kullanım yapıldığında en sona else case’i eklenmelidir. Yoksa ide hata verir.
- When’lerin içerisinde range kullanımı da mevcuttur.
Buna örnek olarak girilen not değerinin karşılık geldiği harf notunu veren range yapısnı da içinde barındıran when kullanımını görelim. Ve hatta çıkan sonucu da expression kullanımı ile bir value’ye değer olarak atayalım.
Range
Liste oluşturmaya yarar. Çeşitli kullanımları mevcuttur. Örnekler üzerinden anlamaya çalışalım.
- Küçükten büyüğe bir liste oluşturmak için “..” veya rangeTo() fonksiyonu kullanılabilir.
- Büyükten küçüğe bir liste oluşturmak için “..” kullanımı yoktur. Bu işlemi downTo() fonksiyonu ile gerçekleştirebiliriz.
- Char’lardan oluşan bir liste de tanımlanabilir. Ancak içerisinde türkçe karakterler yer almaz.
- Until() fonksiyonu kullanılarak da range tanımlanabilir. Fakat bu kullsnımda son değer listeye dahil olmaz.
- step() fonksiyonu ile belli sayıda atlamalar yapılarak liste oluşturabilir.
- charRange, IntRange gibi primitive tipler kullanılarak ta range tanımı yapılabilir. Bu kullanımda first, last, step, count gibi bilgiler alınabilir.
Range’ler ile liste oluşturulur fakat bunları ekranda görmek için bir döngüye alınmalıdır.
For
Programlama dillerinde sıkça kullanılan döngülerden bir tanesidir. Kotlinde for döngüsünün söz dizimi aşağıdaki gibidir.
//Kullanım formatıfor(item in collection){
println(item)
}
Collection yazan yere dizi, liste, range, string gelebilir. Kullanım formatı C#, Java gibi programlama dillerine göre biraz farklı. Kotlindeki for kullanımı C# programlama dilindeki foreach döngüsüne benzemektedir.
Kullanımına birkaç örnek verelim.
- Yukarıda value değerini alabildiğimiz gibi indices ile index değeri de alınabilir.
- withIndex() fonksiyonu ile value ve index değerleri aynı anda da alınabilir.
- Continue kullanımında ilgili şart sağlanırsa, döngü o değeri atlayarak devam eder. Aynı zamanda break, return kullanımları da vardır.
Repeat
Repeat ile herhagi bir listeye ihtiyaç duymadan tekrarlayan işler yapılabilir.
While
While ve do..while da birer döngü yapısıdır. Kotlinde while döngüsü diğer programlama dilleri ile aynıdır. Kullanış amacı olarak aslında for döngüsünden çok farklı olduğunu söyleyemeyiz. İçerideki koşul sağlandığı sürece döngü dönmektedir.
Yukarıda aynı örneği hem while hem de do..while için yaptık. Her ikisi için de koşul sağlanmadığı halde while için herhangi bir number değeri dönmezken do..while için 1 değeri dönecektir. Çünkü do..while kullanımında ilk önce koşula bakılmaksızın do case’sinin içindeki kodlar bir defa çalışır ondan sonra while içindeki koşul çalışır.
Yazımızın sonuna geldik. Daha öğreneceğimiz çok şey var. Bir sonraki yazımda görüşmek üzere.
Bol kodlu ve sabırlı günler dilerim :)