Kotlin ile Çok Boyutlu Diziler

Buraya kadar Kotlin programlama dilinde tek boyutlu diziler ile çalışmayı gösterdik. Ancak isterseniz çok boyutlu diziler ile çalışabilirsiniz. Tek boyutlu diziler tek bir diziden meydana gelir. Bu diziler tek bir satır ve en az bir sütun içerir. Çok boyutlu diziler ise bir veya daha fazla diziden meydana gelen dizilerdir. Çok boyutlu bir dizi satır ve sütunlardan meydana gelir. Böylece bir dizinin daha fazla eleman tutması sağlanır.

Kotlin ile oluşturulan örnek bir çok boyutlu dizi aşağıdaki gibidir.

fun main(args: Array<String>) {
    val evenNumbers = arrayOf(
        arrayOf(0, 2, 4, 6),
        arrayOf(8, 10, 12, 14),
        arrayOf(16, 18, 20, 22),
        arrayOf(24, 26, 28, 30)
    )
}

Yukarıda verilen örnekte dizi toplam 4 eleman içermekte ve her eleman bir dizi tanımlamaktadır. Ayrıca her dizi 4 adet veri içermektedir. Çok boyutlu dizilerde, dizi elemanlarının eşit sayıda olması gerekmiyor. Yani bazıları 1 veya 3 elemanlı da olabilir.

Tek boyutlu diziler üzerinde yaptığımız tüm işlemleri çok boyutlu diziler içinde yapabiliriz. Öncelikle aşağıda verilen kodu inceleyelim:

fun main(args: Array<String>) {
    val evenNumbers = arrayOf(
        arrayOf(0, 2, 4, 6),
        arrayOf(8, 10, 12, 14),
        arrayOf(16, 18, 20, 22),
        arrayOf(24, 26, 28, 30)
    )
    for (row in evenNumbers) {
        println("$row")
    }
}
Çok boyutlu dizilerde veri erişimi

Bu kodlar ile çok boyutlu dizide bulunan tüm verileri ekrana yazdık. Ancak dikkat edilirse bu verilerin anlamsız olduğu görülür. Çok boyutlu dizilerde böyle bir kullanımda sadece içteki dizilerin referansları ekrana yazılır. Eğer içteki dizileri ekrana yazdırmak isterseniz, bu durumda kodu aşağıdaki gibi güncellememiz gerekiyor:

fun main(args: Array<String>) {
    val evenNumbers = arrayOf(
        arrayOf(0, 2, 4, 6),
        arrayOf(8, 10, 12, 14),
        arrayOf(16, 18, 20, 22),
        arrayOf(24, 26, 28, 30)
    )
    for (row in evenNumbers) {
        print("item : ")
        for (item in row) {
            print("$item ")
        }
        println()
    }
}
Çok boyutlu dizilerde verilere erişim

Bu şekilde çok boyutlu bir dizinin içeriğini ekrana yazdırmayı başardık.

Şimdi de çok boyutlu bir dizide belirli bir değere doğrudan nasıl erişebileceğimizi gösterelim.

fun main(args: Array<String>) {
    val evenNumbers = arrayOf(
        arrayOf(0, 2, 4, 6),
        arrayOf(8, 10, 12, 14),
        arrayOf(16, 18, 20, 22),
        arrayOf(24, 26, 28, 30)
    )
    println("evenNumbers[0][0] :"+evenNumbers.get(0).get(0))
    println("evenNumbers[0][1] :"+evenNumbers.get(0).get(1))
    println("evenNumbers[0][2] :"+evenNumbers.get(0).get(2))
    println("evenNumbers[0][3] :"+evenNumbers.get(0).get(3))
}
Çok boyutlu dizilerde belirli bir elemana erişim

Ekran çıktısını incelediğimizde yazdığımız kodun, çok boyutlu dizideki ilk dizinin elemanlarını ekrana yazdığını görebiliriz. Aynı işlevi aşağıda verilen kodlar ile de yapabilirsiniz:

fun main(args: Array<String>) {
    val evenNumbers = arrayOf(
        arrayOf(0, 2, 4, 6),
        arrayOf(8, 10, 12, 14),
        arrayOf(16, 18, 20, 22),
        arrayOf(24, 26, 28, 30)
    )
    println("evenNumbers[0][0] :"+evenNumbers[0][0])
    println("evenNumbers[0][1] :"+evenNumbers[0][1])
    println("evenNumbers[0][2] :"+evenNumbers[0][2])
    println("evenNumbers[0][3] :"+evenNumbers[0][3])
}

Kodu çalıştırdığımızda ekran çıktsının aynı olduğu görülür. Şimde de bu dizide bulunan tüm sayıların ortalamasını nasıl hesaplayacağımızı gösterelim.

fun main(args: Array<String>) {
    val evenNumbers = arrayOf(
        arrayOf(0, 2, 4, 6),
        arrayOf(8, 10, 12, 14),
        arrayOf(16, 18, 20, 22),
        arrayOf(24, 26, 28, 30)
    )
    var avg=0
    var sum=0
    var arrSize=0
    for (row in evenNumbers) {
        //Her dizinin eleman sayısı arrSize değişkenine eklenir.
        arrSize += row.size
        for (item in row) {
            sum += item
        }
    }
    avg=sum/arrSize
    println("Avg : $avg")
}

Yukarıda dizinin elemanlarına erişim sağlanmıştır. Her eleman sum değişkenine eklenerek tüm değerlerin toplamı bulunmuştur. Ortalamayı bulmak için sayıların toplamını, toplam eleman sayısına bölüp ekrana yazdırdık. Ekran çıktısı aşağıdaki gibidir.

Elemanların ortalaması

Son olarak çok boyutlu bir dizide belirli bir elemanı güncellemeyi gösterelim.

fun main(args: Array<String>) {
    val evenNumbers = arrayOf(
        arrayOf(0, 2, 4, 6),
        arrayOf(8, 10, 12, 14),
        arrayOf(16, 18, 20, 22),
        arrayOf(24, 26, 28, 30)
    )
    println("First :  "+evenNumbers[3][3])    
    //Dizde bulunan 30 değeri, 60 olarak güncellenir.
    evenNumbers[3][3] = evenNumbers[3][3] * 2
    println("Last :  "+evenNumbers[3][3])
}

Yukarıda önce son dizinin son elemanı ekrana yazılır. Daha sonra son eleman 2 ile çarpılarak son elemanın konumuna atanır. Böylece güncelleme işlemi yapılır. Ekran çıktısı aşağıdaki gibidir.

Çok boyutlu dizilerde eleman güncelleme

Kotlin programlama dilinde dizilerle ilgili bilmeniz gereken temel konular bunlardır. Sonraki yazılarda Kotlin ile temel sıralama algoritmalarını sizlere aktarmaya çalışacağım. Hoşça kalın!

**Bana en büyük desteğiniz yazılarıma yorum yapmanız ve paylaşmanızdır.