A. Logika Percabangan (Selection)
Percabangan mengeksekusi blok kode tertentu berdasarkan evaluasi ekspresi kondisi boolean (`True` atau `False`). Di Python, indentasi spasi menentukan kepemilikan blok kode.
nilai = 82
if nilai >= 90:
grade = 'A'
elif nilai >= 80:
grade = 'B' # Kondisi ini terpenuhi (82 >= 80), cabang berikutnya DILEWATI
elif nilai >= 70:
grade = 'C'
else:
grade = 'D'
print(grade) # Output: BAturan Eksekusi: Pada struktur `if - elif - else`, evaluasi berjalan dari atas ke bawah. Begitu SATU kondisi bernilai `True`, blok di dalamnya dieksekusi dan seluruh cabang `elif` serta `else` di bawahnya langsung diabaikan.
B. Struktur Perulangan (Iteration)
1. Perulangan `for`: Digunakan saat jumlah perulangan sudah diketahui pasti atau saat menjelajahi (*traversing*) elemen koleksi data.
# range(start, stop, step)
for i in range(1, 6): # Menghasilkan angka 1, 2, 3, 4, 5 (Batas akhir 6 TIDAK ikut!)
print(i, end=' ') # Output: 1 2 3 4 5
for i in range(0, 10, 2): # Melompat setiap 2 langkah
print(i, end=' ') # Output: 0 2 4 6 82. Perulangan `while`: Mengulang blok kode selama kondisi ekspresi bernilai `True`. Jumlah putaran tidak pasti di muka.
saldo = 100
while saldo > 0:
saldo -= 30 # Putaran: 70 -> 40 -> 10 -> -20 (berhenti)Instruksi Khusus: `break` menghentikan loop secara paksa seketika; `continue` melompati sisa baris kode pada iterasi saat ini dan langsung melompat ke putaran berikutnya.
C. Teknik Melacak Alur Program (Tracing Table)
Untuk menebak output kode yang kompleks tanpa salah, buat tabel nilai variabel pada setiap langkah putaran loop:
nilai = [70, 85, 60, 90]
jumlah_lulus = 0
for n in nilai:
if n >= 75:
jumlah_lulus += 1
print(jumlah_lulus)| Iterasi ke- | Nilai n | Kondisi (n >= 75) | Perubahan jumlah_lulus |
|---|---|---|---|
| 1 | 70 | 70 >= 75 -> Salah (False) | Tetap 0 |
| 2 | 85 | 85 >= 75 -> Benar (True) | 0 + 1 = 1 |
| 3 | 60 | 60 >= 75 -> Salah (False) | Tetap 1 |
| 4 | 90 | 90 >= 75 -> Benar (True) | 1 + 1 = 2 |
Hasil Akhir: Nilai `jumlah_lulus` yang dicetak adalah 2.
D. Evaluasi Efektivitas Struktur Kontrol (Level C5)
| Pola Kode | Karakteristik & Risiko | Tingkat Efektivitas |
|---|---|---|
| Banyak `if` terpisah mandiri | Semua baris `if` tetap diuji satu per satu meskipun kondisi awal sudah terpenuhi; rawan nilai tertimpa. | Kurang Efektif |
| Struktur `if - elif - else` | Kondisi saling lepas dievaluasi secara efisien; berhenti seketika di cabang pertama yang cocok. | Sangat Efektif & Rapi |
| Menulis `print()` manual berulang | Kode kaku, tidak bisa menangani jumlah data yang berubah-ubah secara dinamis. | Tidak Efektif |
| Perulangan `for item in koleksi` | Kode ringkas, fleksibel untuk data berapapun jumlahnya, mudah dipelihara. | Sangat Efektif |