Belajar Dasar Kotlin: Perulangan

Dalam membuat program, kita mungkin akan menginginkan untuk mengulangi suatu proses berkali-kali. Dalam pemrograman terdapat Perulangan atau Looping yang bisa digunakan untuk menyelesaikan masalah tadi.

for Looping

Perulangan for merupakan perulangan yang paling sederhana. Sintak if seperti berikut:

for (item in ekspresi) {
    kode dalam perulangan
}

ekspresi ini dapat berupa ekspresi atau variabel. Kode dalam perulangan merupakan kode yang akan dijalankan berkali-kali. item merupakan variabel yang dapat diakses di kode dalam perulangan.

Perulangan for dapat digunakan untuk mengulangi suatu proses/kode berdasarkan item-item pada suatu array, seperti berikut:

val array = arrayOf("Kotlin", "Java", "C++", "Rust", "Go")

for (item in array) {
    println(item)
}

// Output:
// Kotlin
// Java
// C++
// Rust
// Go

Kode dalam perulangan akan dijalankan pertama kali dengan variabel item merupakan item ke-1 dari array yaitu Kotlin, kemudian di jalankan kembali dengan item merupakan item ke-2 dari array yaitu Java, kemudian di jalankan kembali dengan item merupakan item ke-3 dari array yaitu C++ dan seterusnya sampai dengan item merupakan item terakhir dari array yaitu Go.

Perulangan for juga dapat digunakan dengan Range seperti berikut:

for (angka in 1..10) {
    println(angka)
}

// Output:
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
// 10

Kode dalam perulangan akan dijalankan pertama kali dengan variabel angka berisi 1, kemudian dijalankan lagi dengan angka berisi 2, kemudian dijalankan lagi dengan angka berisi 3 dan seterusnya sampai dengan angka berisi 10.

while Looping

Perulangan ini dapat digunakan untuk mengulangi suatu proses berdasarkan suatu kondisi. Sintaknya seperti di bawah ini:

while (kondisi) {
    kode dalam perulangan
}

Kondisi harus berupa ekspresi/variabel yang bertipe data Boolean.

Contoh:

var i = 1
while (i <= 10) {
    println(i)
    i++
}

// Output:
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
// 10

Perulangan akan di awali dengan pengecekan kondisi i <= 10, karena i = 1, maka kondisi bernilai True sehingga kode dalam perulangan di jalankan. Kemudian pengecekan kondisi dijalankan lagi, karena i = 2, maka kondisi bernilai True dan kode dijalankan lagi. Kemudian pengecekan kondisi dijalankan lagi, karena i = 3, maka kondisi bernilai True dan kode dijalankan lagi. Dan seterusnya, sampai pada saat i = 11, maka kode tidak dijalankan karena kondisi tidak terpenuhi (bernilai False) dan perulangan selesai.

Setiap kali kode dijalankan variabel i bertambah satu karena ada kode i++.

Secara lebih umum, kode dalam perulangan akan terus di jalankan jika kondisi bernilai True dan akan berhenti jika kondisi bernilai False.

do while Looping

Sama seperti perulangan while, perulangan ini dapat digunakan untuk mengulangi suatu proses berdasarkan suatu kondisi. Sintaknya seperti di bawah ini:

do {
    kode dalam perulangan
} while (kondisi)

Kondisi harus berupa ekspresi/variabel yang bertipe data Boolean.

Contoh:

var i = 1
do {
    println(i)
    i++
} while (i <= 10)

// Output:
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
// 10

Perulangan akan di awali dengan menjalankan kode dalam perulangan. Kemudian dilakukan pengecekan kondisi i <= 0, karena i = 1, maka kode di jalankan kembali. Kemudian dilakukan pengecekan kondisi lagi, karena i = 2, maka kode di jalankan kembali. Kemudian dilakukan pengecekan kondisi lagi, karena i = 3, maka kode di jalankan kembali. Dan seterusnya, sampai saat i = 11, maka kode tidak dijalankan kembali karena kondisi tidak terpenuhi dan perulangan selesai.

Setiap kali kode dijalankan variabel i bertambah satu karena ada kode i++.

Secara lebih umum, perulangan ini hampir mirip dengan perulangan while. Lalu, Apa perbedaan perulangan while dan do while ?. Perbedaannya cukup sederhana, yaitu:

  • Pada perulangan while, pengecekan kondisi dilakukan dahulu baru kemudian kode dalam perulangan dijalankan. Sehingga kode dalam perulangan bisa tidak dijalankan sama sekali.
  • Pada perulangan do while, kode dalam perulangan dijalankan dahulu baru pengecekan kondisi. Sehingga kode dalam perulangan jelas dijalankan minimal 1 kali.

break

Keyword break dapat digunakan untuk menghentikan perulangan saat di dalam perulangan.

Misalkan kita ingin mencari angka yang dapat dibagi 5 dari 1 sampai 10. Kita bisa melakukan perulangan dari 1 sampai 10, kemudian mencetak apakah angka saat perulangan bisa dibagi dengan 5.

for (i in 1..10) {
    if (i % 5 == 0) {
        println("$i dapat dibagi 5")
    } else {
        println("$i tidak dapat dibagi 5")
    }
}

// Output:
// 1 tidak dapat dibagi 5
// 2 tidak dapat dibagi 5
// 3 tidak dapat dibagi 5
// 4 tidak dapat dibagi 5
// 5 dapat dibagi 5
// 6 tidak dapat dibagi 5
// 7 tidak dapat dibagi 5
// 8 tidak dapat dibagi 5
// 9 tidak dapat dibagi 5
// 10 dapat dibagi 5

Kode berjalan sesuai keinginan. Misalkan jika kita hanya ingin mencari angka pertama yang bisa dibagi dengan 5 dan setelah menemukannya kita ingin menghentikan perulangan, maka kita bisa menggunakan break setelah menemukannya agar perulangan langsung berhenti.

for (i in 1..10) {
    if (i % 5 == 0) {
        println("$i dapat dibagi 5")
        break
    } else {
        println("$i tidak dapat dibagi 5")
    }
}

// Output:
// 1 tidak dapat dibagi 5
// 2 tidak dapat dibagi 5
// 3 tidak dapat dibagi 5
// 4 tidak dapat dibagi 5
// 5 dapat dibagi 5

break dapat digunakan pada while dan do while juga.

Semua kode setelah break akan diloncati.

continue

Keyword continue akan meloncati semua kode setelah itu, namun tetap melanjutkan perulangan.

Misalkan kita ingin melakukan operasi pada angka antara 1 sampai 10 yang bisa dibagi oleh 5.

for (i in 1..10) {
    if (i % 5 == 0) {
        println("Operasi pada $i")
    }
}

// Output:
// Operasi pada 5
// Operasi pada 10

Kode berjalan sesuai harapan, namun jika operasi membutuhkan banyak kode, maka kode akan menjadi kurang rapi. Agar lebih rapi, kita menjalankan continue jika angka tidak bisa dibagi 5 agar kode setelah continue diloncati dan perulangan dilanjutkan.

for (i in 1..10) {
    if (i % 5 != 0)
        continue

    println("Operasi pada $i")
}

// Output:
// Operasi pada 5
// Operasi pada 10