Masukkan Password
28 The Complete Kotlin Course #27- Continue Keyword - Kotlin Tutorials for Beginners
Materi kali ini memperkenalkan keyword continue. Konsepnya sangat berkaitan dengan break yang baru saja kamu pelajari, tetapi perilakunya berbeda.
Kalau break berarti:
“Keluar dari loop sekarang.”
maka continue berarti:
“Lewati sisa kode pada putaran ini, lalu lanjut ke putaran berikutnya.”
1. Apa itu continue?
continue digunakan ketika kita ingin melewati satu iterasi tertentu, tetapi tidak ingin menghentikan loop seluruhnya.
Contoh sederhana:
for (i in 1..5) {
if (i == 3) {
continue
}
println(i)
}
Hasil:
1
2
4
5
Kenapa 3 tidak dicetak?
Karena ketika:
i == 3
bernilai true, program menjalankan:
continue
Akibatnya, Kotlin berkata:
“Oke, untuk
i = 3, saya skip sisanya. Langsung lanjut ke iterasi berikutnya.”
Jadi:
i = 1 → print 1
i = 2 → print 2
i = 3 → continue → skip
i = 4 → print 4
i = 5 → print 5
2. Bedanya continue dengan break
Ini wajib benar-benar dibedakan.
break
for (i in 1..5) {
if (i == 3) {
break
}
println(i)
}
Hasil:
1
2
Ketika i = 3, break membuat loop langsung berhenti seluruhnya.
Alurnya:
1 → print
2 → print
3 → BREAK → LOOP SELESAI
continue
for (i in 1..5) {
if (i == 3) {
continue
}
println(i)
}
Hasil:
1
2
4
5
Alurnya:
1 → print
2 → print
3 → CONTINUE → skip 3 → lanjut 4
4 → print
5 → print
Ingat dengan kalimat sederhana:
| Keyword | Artinya |
|---|---|
break | Stop loop |
continue | Skip iterasi sekarang |
Atau:
break
↓
KELUAR DARI LOOP
continue
↓
LEWATI ITERASI INI
↓
LANJUT ITERASI BERIKUTNYA
3. Apa itu iterasi?
Video berkali-kali menyebut iteration.
Iterasi = satu putaran loop.
Contoh:
for (i in 1..5) {
println(i)
}
Ada 5 iterasi:
Iterasi 1 → i = 1
Iterasi 2 → i = 2
Iterasi 3 → i = 3
Iterasi 4 → i = 4
Iterasi 5 → i = 5
Jadi ketika video mengatakan:
“skip an iteration”
artinya:
“lewati satu putaran loop.”
4. Mengapa continue berguna?
Bayangkan kita memiliki:
for (i in 1..10) {
println(i)
}
dan kita ingin mencetak semua angka kecuali angka genap.
Kita bisa menggunakan continue.
for (i in 1..10) {
if (i % 2 == 0) {
continue
}
println(i)
}
Hasil:
1
3
5
7
9
Logikanya:
i = 1 → ganjil → print
i = 2 → genap → continue → skip
i = 3 → ganjil → print
i = 4 → genap → continue → skip
...
5. Kenapa % 2 bisa digunakan untuk mencari angka genap?
Ini juga penting karena video menggunakan konsep modulus.
Operator:
%
disebut remainder/modulo operator dalam konteks ini.
Dia memberikan sisa hasil pembagian.
Contoh:
10 % 2 = 0
Karena:
10 ÷ 2 = 5 sisa 0
Sedangkan:
11 % 2 = 1
Karena:
11 ÷ 2 = 5 sisa 1
Maka:
number % 2 == 0
bisa digunakan untuk mengecek:
Apakah
numberhabis dibagi 2?
Kalau iya, berarti angka tersebut genap.
Contoh:
2 % 2 = 0 → genap
4 % 2 = 0 → genap
6 % 2 = 0 → genap
8 % 2 = 0 → genap
10 % 2 = 0 → genap
Sedangkan:
1 % 2 = 1 → ganjil
3 % 2 = 1 → ganjil
5 % 2 = 1 → ganjil
7 % 2 = 1 → ganjil
6. Sekarang hubungkan dengan multiplication table
Exercise sebelumnya menghasilkan:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
Sekarang kita ingin melewati row genap.
Jadi:
1 2 3 4 5
3 6 9 12 15
5 10 15 20 25
Row:
1 → tampil
2 → skip
3 → tampil
4 → skip
5 → tampil
7. Mengapa continue cocok untuk kasus ini?
Kita memiliki nested loop:
for (row in 1..5) {
for (column in 1..5) {
print("${row * column} ")
}
println()
}
Sekarang kita tambahkan:
if (row % 2 == 0) {
continue
}
menjadi:
for (row in 1..5) {
if (row % 2 == 0) {
continue
}
for (column in 1..5) {
print("${row * column} ")
}
println()
}
Hasil:
1 2 3 4 5
3 6 9 12 15
5 10 15 20 25
8. Mari kita tracing satu per satu
Ini bagian yang sangat bagus untuk memahami cara kerja continue.
Kode:
for (row in 1..5) {
if (row % 2 == 0) {
continue
}
for (column in 1..5) {
print("${row * column} ")
}
println()
}
row = 1
Cek:
1 % 2 == 0
Hasil:
1 == 0 → false
Jadi continue tidak dijalankan.
Masuk ke inner loop:
1×1 = 1
1×2 = 2
1×3 = 3
1×4 = 4
1×5 = 5
Output:
1 2 3 4 5
row = 2
Cek:
2 % 2 == 0
Hasil:
0 == 0 → true
Maka:
continue
dijalankan.
Artinya semua kode setelah continue pada iterasi tersebut dilewati.
Jadi inner loop:
for (column in 1..5)
tidak dijalankan untuk row = 2.
Row 2 dilewati.
row = 3
Cek:
3 % 2 == 0
Hasil:
1 == 0 → false
Jadi lanjut ke inner loop:
3×1 = 3
3×2 = 6
3×3 = 9
3×4 = 12
3×5 = 15
Output:
3 6 9 12 15
row = 4
Cek:
4 % 2 == 0
Hasil:
0 == 0 → true
Maka:
continue
Row 4 dilewati.
row = 5
Cek:
5 % 2 == 0
Hasil:
1 == 0 → false
Maka row 5 dicetak:
5 10 15 20 25
9. Visualisasi lengkap
Cara paling mudah membayangkannya:
row = 1
↓
1 ganjil
↓
JALANKAN inner loop
↓
1 2 3 4 5
row = 2
↓
2 genap
↓
CONTINUE
↓
SKIP
row = 3
↓
3 ganjil
↓
JALANKAN inner loop
↓
3 6 9 12 15
row = 4
↓
4 genap
↓
CONTINUE
↓
SKIP
row = 5
↓
5 ganjil
↓
JALANKAN inner loop
↓
5 10 15 20 25
10. Posisi continue sangat penting
Perhatikan:
for (row in 1..5) {
if (row % 2 == 0) {
continue
}
for (column in 1..5) {
print("${row * column} ")
}
println()
}
continue berada di outer loop, sebelum inner loop.
Ini menyebabkan:
ketika row genap, seluruh proses row tersebut dilewati.
Termasuk:
for (column in 1..5)
dan:
println()
11. Kalau continue diletakkan di inner loop?
Hasilnya akan berbeda.
Contoh:
for (row in 1..5) {
for (column in 1..5) {
if (column % 2 == 0) {
continue
}
print("${row * column} ")
}
println()
}
Sekarang yang kita skip adalah column genap, bukan row genap.
Hasil:
1 3 5
2 6 10
3 9 15
4 12 20
5 15 25
Kenapa?
Untuk setiap row:
column 1 → tampil
column 2 → skip
column 3 → tampil
column 4 → skip
column 5 → tampil
Ini menunjukkan hal yang sangat penting:
continuememengaruhi loop tempat dia berada.
12. continue pada nested loop
Ini salah satu konsep yang perlu kamu pahami baik-baik.
Misalnya:
for (row in 1..5) {
for (column in 1..5) {
if (column == 3) {
continue
}
print("$column ")
}
println()
}
continue berada di inner loop.
Maka yang dilewati hanya:
column = 3
Inner loop tetap berjalan:
1
2
skip 3
4
5
Outer loop tetap lanjut ke row berikutnya.
Jadi:
OUTER LOOP
↓
INNER LOOP
↓
continue
↓
skip inner iteration
↓
inner loop lanjut
↓
outer loop lanjut
13. break pada nested loop juga perlu dibandingkan
Misalnya:
for (row in 1..5) {
for (column in 1..5) {
if (column == 3) {
break
}
print("$column ")
}
println()
}
break berada di inner loop.
Maka ketika:
column = 3
inner loop berhenti.
Tetapi outer loop masih bisa melanjutkan ke row berikutnya.
Jadi break di inner loop:
inner loop → berhenti
outer loop → masih lanjut
Sedangkan continue di inner loop:
inner iteration → dilewati
inner loop → masih lanjut
outer loop → tetap berjalan
14. Analogi sederhana
Bayangkan kamu sedang memeriksa 10 siswa.
for setiap siswa:
periksa siswa
Tiba-tiba kamu menemukan siswa yang sedang tidak hadir.
Dengan continue:
“Siswa ini tidak perlu diproses. Lanjut ke siswa berikutnya.”
Dengan break:
“Sudah, pemeriksaan dihentikan semuanya.”
Jadi:
continue = skip orang ini
break = selesai memeriksa semuanya
15. Contoh lain yang lebih nyata
Misalnya kita ingin mencetak angka 1 sampai 10, tetapi hanya angka yang bukan kelipatan 3.
for (i in 1..10) {
if (i % 3 == 0) {
continue
}
println(i)
}
Hasil:
1
2
4
5
7
8
10
Yang dilewati:
3
6
9
Karena:
3 % 3 = 0
6 % 3 = 0
9 % 3 = 0
16. continue bukan mengurangi nilai loop variable secara manual
Ini bagian yang kadang membingungkan pemula.
Misalnya:
for (i in 1..5) {
if (i == 3) {
continue
}
println(i)
}
Ketika continue terjadi pada i = 3, kamu mungkin berpikir:
“Apakah
iberhenti di 3?”
Tidak.
for akan melanjutkan ke nilai berikutnya:
3 → continue → 4
Jadi:
1 → 2 → 3(skip) → 4 → 5
17. Hubungan continue dengan if
Biasanya continue sangat sering dipakai bersama if.
Pola umumnya:
for (item in items) {
if (kondisiYangHarusDiSkip) {
continue
}
// proses item
}
Artinya:
“Kalau memenuhi kondisi tertentu, jangan proses item ini.”
Contoh:
for (number in 1..10) {
if (number % 2 == 0) {
continue
}
println(number)
}
Baca seperti bahasa manusia:
Untuk setiap angka 1 sampai 10, kalau angka tersebut genap, lewati. Kalau tidak, cetak.
18. Pola berpikir algoritmanya
Ini sebenarnya pelajaran algoritma yang bagus.
Misalnya masalahnya:
“Cetak multiplication table 1–5, tetapi jangan cetak row genap.”
Jangan langsung berpikir syntax.
Pecahkan:
Step 1 — Apa yang berulang?
Ada row:
1, 2, 3, 4, 5
→ gunakan for.
Step 2 — Di setiap row apa yang berulang?
Ada column:
1, 2, 3, 4, 5
→ gunakan nested for.
Step 3 — Apa yang harus di-skip?
Row genap.
2, 4
Step 4 — Bagaimana mengetahui genap?
row % 2 == 0
Step 5 — Kalau genap?
Jangan proses row tersebut.
→ gunakan:
continue
Maka algoritmanya:
FOR setiap row 1..5
JIKA row genap
SKIP row
FOR setiap column 1..5
product = row × column
print product
pindah baris
Dan akhirnya menjadi:
for (row in 1..5) {
if (row % 2 == 0) {
continue
}
for (column in 1..5) {
val product = row * column
print("$product ")
}
println()
}
19. continue bisa digunakan pada for maupun while
Seperti yang dikatakan video, continue tidak hanya untuk for.
Pada for
for (i in 1..5) {
if (i == 3) {
continue
}
println(i)
}
Hasil:
1
2
4
5
Pada while
var i = 0
while (i < 5) {
i++
if (i == 3) {
continue
}
println(i)
}
Hasil:
1
2
4
5
Jadi continue bisa digunakan pada berbagai jenis loop.
20. Hati-hati dengan continue pada while
Ada satu hal penting.
Kalau menggunakan while, pastikan kondisi loop tetap bisa berubah.
Contoh yang bermasalah:
var i = 1
while (i <= 5) {
if (i == 3) {
continue
}
println(i)
i++
}
Ketika i menjadi 3:
i == 3
↓
continue
↓
i++ tidak pernah dijalankan
↓
i tetap 3
↓
continue lagi
↓
selamanya
Ini menyebabkan infinite loop.
Jadi pada while, kamu harus hati-hati terhadap posisi perubahan variable.
Contoh yang lebih aman:
var i = 0
while (i < 5) {
i++
if (i == 3) {
continue
}
println(i)
}
i dinaikkan sebelum continue, sehingga loop tetap bisa maju.
21. Ringkasan break vs continue
Simpan tabel ini:
break | continue | |
|---|---|---|
| Menghentikan loop? | Ya | Tidak |
| Iterasi saat ini dihentikan? | Ya | Ya |
| Iterasi berikutnya berjalan? | Tidak | Ya |
| Tujuan utama | Keluar dari loop | Skip satu iterasi |
Bisa digunakan di for? | Ya | Ya |
Bisa digunakan di while? | Ya | Ya |
Mental model:
LOOP
│
┌─────┴─────┐
│ │
kondisi? normal
│
┌───┴───┐
│ │
break continue
│ │
↓ ↓
KELUAR SKIP
LOOP ITERASI
│
↓
ITERASI BERIKUTNYA
22. Yang paling penting dari exercise ini
Dari exercise sebelumnya kita belajar:
tabel
↓
row + column
↓
nested loop
Sekarang ditambah:
nested loop
↓
periksa kondisi
↓
apakah row harus dilewati?
↓
ya → continue
tidak → proses
Jadi pola besarnya:
NESTED LOOP
↓
cek kondisi
↓
┌─────────┴─────────┐
↓ ↓
harus skip? tidak
↓ ↓
continue jalankan kode
↓ ↓
iterasi berikutnya selesai iterasi
Dan satu kalimat yang wajib kamu ingat:
break= keluar dari loop.continue= lewati sisa iterasi sekarang dan lanjut ke iterasi berikutnya.
Untuk exercise multiplication table:
for (row in 1..5) {
if (row % 2 == 0) {
continue
}
for (column in 1..5) {
val product = row * column
print("$product ")
}
println()
}
hasilnya:
1 2 3 4 5
3 6 9 12 15
5 10 15 20 25
Dan dari sisi algorithmic thinking, yang sebenarnya sedang kamu latih bukan cuma keyword continue, tetapi kemampuan untuk berpikir:
“Kalau suatu data tidak memenuhi syarat untuk diproses, saya tidak perlu menghentikan seluruh program; saya cukup melewati data tersebut dan lanjut ke data berikutnya.”