Sepanjang Section ini kita telah mengumpulkan seluruh struktur pengatur alur: if/elif/else, match-case, for, while, range(), break, continue, pass, sampai blok else pada loop. Semuanya sah; masalahnya kini berpindah dari “bagaimana cara memakainya” menjadi “struktur mana yang tepat untuk masalah ini”. Kode yang memilih struktur yang tepat terasa datar dan mudah diikuti; kode yang salah memilih terasa seperti membaca teka-teki. Chapter penutup ini merangkum keputusan tersebut ke dalam tabel dan diagram, lalu menutup dengan prinsip keterbacaan yang berlaku lintas struktur.

Tabel Keputusan #

Tabel berikut memetakan situasi umum ke struktur yang paling menyuarakannya:

SituasiStrukturAlasan singkat
Memilih cabang berdasarkan rentang atau kondisi bebasif/elif/elsekondisi berupa expression apa pun
Mencocokkan satu nilai ke banyak kemungkinan pastimatch-casepola literal lebih ringkas (Python 3.10+)
Membongkar struktur tuple, list, atau dictionarymatch-casepattern matching menggantikan pembongkaran manual
Mengolah setiap elemen koleksiforiterasi langsung, tanpa counter
Deret angka berurutan naik atau turunfor + range()range() menyediakan deretnya
Jumlah iterasi baru diketahui saat berjalanwhileloop dikendalikan kondisi, bukan data
Pola “ulangi sampai valid / berhasil”while + breakbreak menjadi jalan keluarnya
Berhenti lebih awal saat hasil sudah cukupbreaksisa iterasi tidak perlu diproses
Melewati iterasi yang tidak relevancontinueloop tetap berlanjut
Kerangka blok yang isinya menyusulpassblok kosong tidak sah di Python
Pekerjaan setelah pencarian gagalloop else atau flagbaca Chapter else pada Loop untuk trade-off-nya

for vs while #

Kedua loop ini bisa saling menggantikan, tetapi kode yang tepat menyatakan alasan pengulangannya. for menyatakan “sekali untuk setiap elemen”; while menyatakan “selama kondisi ini masih benar”:

python
# for: jumlah pengulangan sudah diketahui dari data
total_for = 0
for angka in [10, 20, 30]:
    total_for += angka
print("Total (for):", total_for)

# while: jumlah pengulangan bergantung pada kondisi
total_while = 0
angka = 10
while angka <= 30:
    total_while += angka
    angka += 10
print("Total (while):", total_while)

Output yang Dihasilkan:

text
Total (for): 60
Total (while): 60

Keduanya menghasilkan angka yang sama, tetapi versi for membaca seperti kalimat: “jumlahkan setiap angka dalam daftar”. Versi while menuntut pembaca memeriksa tiga bagian (inisialisasi angka = 10, kondisi angka <= 30, update angka += 10) untuk memastikan loop berhenti. Bila data pengulangannya sudah ada, pilih for; simpan while untuk kondisi runtime.

if/elif vs match-case #

Pilihan percabangan mengikuti bentuk kondisinya, bukan selera:

python
# if/elif: cocok untuk rentang nilai
nilai = 85
if nilai >= 90:
    grade = "A"
elif nilai >= 80:
    grade = "B"
else:
    grade = "C"
print("Grade:", grade)

# match-case: cocok untuk struktur data
perintah = ("transfer", 150000)
match perintah:
    case ("transfer", jumlah):
        print(f"Transfer Rp{jumlah}")
    case ("cek", _):
        print("Menampilkan saldo")

Output yang Dihasilkan:

text
Grade: B
Transfer Rp150000

Kondisi nilai >= 80 adalah pertanyaan tentang rentang — wilayah if/elif. Sebaliknya, case ("transfer", jumlah) adalah pertanyaan tentang bentuk data — wilayah match-case. Menulis pola case n if n >= 80 untuk kasus pertama tetap sah, tetapi guard yang panjang menghapus keunggulan keterbacaan match.

Diagram Keputusan #

Alur memilih struktur dapat dirangkum menjadi satu diagram:

Diagram ini bukan hukum keras, melainkan titik mulai: keputusan akhir tetap kembali pada struktur yang paling mudah dibaca oleh rekan tim.

Prinsip Keterbacaan #

Struktur yang tepat akan sia-sia bila kondisinya sendiri tidak terbaca. Tiga kebiasaan berikut menjaga cabang dan loop tetap jelas:

  • Beri nama pada kondisi penting. Boolean bernama mengubah baris logika menjadi kalimat yang bisa dibaca tanpa membedah operator:
python
stok = 5
toko_sedang_buka = True

bisa_dipesan = stok > 0 and toko_sedang_buka

if bisa_dipesan:
    print("Pesanan diproses")
else:
    print("Tidak bisa memesan sekarang")

Output yang Dihasilkan:

text
Pesanan diproses
  • Ratakan kondisi berlapis. Kombinasi and/or dan guard clause lebih mudah dibaca daripada if bertingkat — teknik lengkapnya ada pada Chapter Nested Conditions.
  • Jaga loop tetap pendek. Loop yang melebihi satu layar biasanya membawa dua tanggung jawab sekaligus; pisahkan menjadi function dengan nama yang menjelaskan.

Inti dari seluruh Section ini sederhana: control flow yang baik membuat pembaca berhenti memikirkan sintaks dan langsung melihat maksud program. Latih kepekaan tersebut dengan membaca ulang kode sendiri — bila butuh menarik napas panjang untuk memahami satu cabang, itu pertanda strukturnya perlu dipertukarkan.