Tanpa kontrol alur, kode hanya berjalan lurus dari atas ke bawah. Dengan kontrol alur, Anda bisa buat keputusan dan ulang kode sesuai kebutuhan.
1. If/Else — Keputusan Dasar
umur = 20
if umur >= 17
puts "Dewasa"
else
puts "Anak-anak"
end
If/Elif/Else
nilai = 85
if nilai >= 90
puts "A"
elsif nilai >= 80
puts "B"
elsif nilai >= 70
puts "C"
else
puts "D"
end
# Output: B
If sebagai Modifier
umur = 20
puts "Dewasa" if umur >= 17
Lebih ringkas untuk kondisi satu baris.
Unless — Kebalikan If
aktif = false
unless aktif
puts "Akun tidak aktif"
end
# Output: Akun tidak aktif
unless = “kalau tidak”. Bisa juga sebagai modifier:
puts "Akun tidak aktif" unless aktif
2. Case/When — Multiple Kondisi
hari = "Senin"
case hari
when "Senin"
puts "Mulai kerja"
when "Jumat"
puts "Hari rase"
when "Sabtu", "Minggu"
puts "Libur"
else
puts "Hari biasa"
end
# Output: Mulai kerja
Case dengan Range
nilai = 85
case nilai
when 90..100
puts "A"
when 80..89
puts "B"
when 70..79
puts "C"
else
puts "D"
end
# Output: B
3. Ternary Operator
Kondisi singkat satu baris:
umur = 20
status = umur >= 17 ? "Dewasa" : "Anak-anak"
puts status # Dewasa
Kapan pakai? Kondisi sederhana, satu baris. Kalau terlalu panjang, pakai if/else biasa.
4. While Loop — Ulangi Selama Kondisi True
counter = 1
while counter <= 5
puts counter
counter += 1
end
# Output: 1, 2, 3, 4, 5
Until — Kebalikan While
counter = 1
until counter > 5
puts counter
counter += 1
end
# Output: 1, 2, 3, 4, 5
5. For Loop — Ulangi Collection
for i in 1..5
puts i
end
# Output: 1, 2, 3, 4, 5
Range
# Inclusive (1 sampai 5)
for i in 1..5
puts i
end
# Exclusive (1 sampai 4)
for i in 1...5
puts i
end
6. Each — Iterasi Favorit Ruby
Ruby lebih suka pakai each daripada for loop:
[1, 2, 3, 4, 5].each do |angka|
puts angka
end
Each dengan Index
["Andika", "Budi", "Citra"].each_with_index do |nama, index|
puts "#{index + 1}. #{nama}"
end
# Output:
# 1. Andika
# 2. Budi
# 3. Citra
Map — Transformasi Collection
angka = [1, 2, 3, 4, 5]
kuadrat = angka.map { |n| n ** 2 }
puts kuadrat.inspect # [1, 4, 9, 16, 25]
Select — Filter
angka = [1, 2, 3, 4, 5, 6, 7, 8]
genap = angka.select { |n| n.even? }
puts genap.inspect # [2, 4, 6, 8]
7. Break & Next
Break — Hentikan Loop
[1, 2, 3, 4, 5].each do |n|
break if n == 3
puts n
end
# Output: 1, 2
Next — Skip Iterasi
[1, 2, 3, 4, 5].each do |n|
next if n == 3
puts n
end
# Output: 1, 2, 4, 5
8. Ringkasan
| Konsep | Fungsi | Contoh |
|---|---|---|
if/else |
Keputusan | if kondisi ... end |
unless |
Kebalikan if | unless aktif |
case/when |
Multiple kondisi | case nilai when 90... |
while |
Ulangi selama true | while x < 10 |
until |
Ulangi sampai true | until x > 10 |
for |
Ulangi range | for i in 1..5 |
each |
Iterasi collection | [1,2,3].each |
break |
Hentikan loop | break if selesai |
next |
Skip iterasi | next if skip |
Penutup
Kontrol alur membuat Ruby hidup — kode bisa buat keputusan dan mengulang tugas. Gunakan if/else untuk keputusan sederhana, each untuk iterasi, dan break/next untuk kontrol loop.
Di artikel selanjutnya, kita akan bahas Metode dalam Ruby — cara membuat dan menggunakan fungsi.