🐍 📘 Bagian 1 (Fondasi & Kontrol Alur) • Modul 04 100% Standar Industri & Vokasi

Percabangan & Logika Keputusan (If, Elif, Else)

Struktur kontrol alur keputusan kondisional, nested if-else, operator ternary python (conditional expression), dan studi kasus kasir diskon.

Target Pembelajaran:
  • Memahami cara kerja evaluasi kondisi Boolean dalam percabangan.
  • Mampu menulis percabangan tunggal, ganda, dan majemuk (if, elif, else).
  • Memahami percabangan bersarang (Nested If) dan teknik Ternary Operator.
  • Mengenal sintaks match-case untuk pattern matching (Python 3.10+).

1. Struktur If, Elif, dan Else

Flowchart Logika Alur Keputusan Percabangan Berantai If - Elif - Else.
Gambar 4.1: Flowchart Logika Alur Keputusan Percabangan Berantai If - Elif - Else.

Struktur percabangan memungkinkan program menentukan blok kode mana yang akan dieksekusi berdasarkan terpenuhi atau tidaknya suatu kondisi (bernilai True).

python (nilai_ujian.py)
nilai = float(input("Masukkan nilai ujian (0 - 100): "))

if nilai >= 85:
    grade = "A (Sangat Memuaskan)"
elif nilai >= 75:
    grade = "B (Baik)"
elif nilai >= 60:
    grade = "C (Cukup)"
elif nilai >= 50:
    grade = "D (Kurang)"
else:
    grade = "E (Tidak Lulus)"

print(f"Hasil Evaluasi: {grade}")

2. Nested If & Ternary Operator (One-Liner)

Nested If (Kondisi Bersarang)

Percabangan di dalam percabangan lain digunakan saat keputusan kedua bergantung pada hasil keputusan pertama.

python
umur = 19
punya_ktp = True

if umur >= 17:
    if punya_ktp:
        print("Boleh membuat Surat Izin Mengemudi (SIM).")
    else:
        print("Silakan rekam dan buat KTP terlebih dahulu.")
else:
    print("Belum cukup umur untuk membuat SIM.")

Ternary Operator (Conditional Expression)

Sintaks ringkas satu baris untuk memilih nilai berdasarkan kondisi: nilai_jika_true if kondisi else nilai_jika_false.

python
angka = 7
status = "Genap" if angka % 2 == 0 else "Ganjil"
print(f"Angka {angka} adalah bilangan {status}.")

3. Match-Case Statement (Python 3.10+)

Diagram Alur Evaluasi Pola Struktural Match-Case (Python 3.10+).
Gambar 4.2: Diagram Alur Evaluasi Pola Struktural Match-Case (Python 3.10+).

Sejak Python 3.10, Python memperkenalkan fitur match-case (mirip switch-case pada bahasa C/Java, namun jauh lebih fleksibel dengan kemampuan pattern matching).

python (perintah_menu.py)
status_code = 404

match status_code:
    case 200:
        pesan = "OK - Permintaan berhasil"
    case 400:
        pesan = "Bad Request - Format salah"
    case 404:
        pesan = "Not Found - Halaman tidak ditemukan"
    case 500:
        pesan = "Internal Server Error"
    case _:
        pesan = "Kode status tidak dikenali"

print(f"Hasil Status HTTP {status_code}: {pesan}")

4. Latihan Mandiri: Sistem Kasir Diskon

Tantangan 4: Perhitungan Diskon Belanja

Buat program kasir_diskon.py dengan aturan berikut:
• Jika total belanja ≥ Rp 500.000 → Diskon 15%
• Jika total belanja ≥ Rp 200.000 → Diskon 10%
• Jika total belanja ≥ Rp 100.000 → Diskon 5%
• Di bawah Rp 100.000 → Tidak ada diskon (0%)
Hitung dan cetak: Total Awal, Potongan Diskon (Rp), dan Total Akhir yang harus dibayar.

Kriteria Keberhasilan: Program dapat mengkalkulasi nominal potongan rupiah dan mencetak rincian struk dengan akurat.
📋 Cheat Sheet: Percabangan Kondisional (if-elif-else)
Cheat Sheet
Sintaks / Perintah Keterangan Fungsi
if kondisi: Mengeksekusi blok kode jika kondisi bernilai True
elif kondisi_lain: Kondisi alternatif jika kondisi sebelumnya False
else: Blok cadangan yang dieksekusi jika seluruh kondisi False
==, !=, <, <=, >, >= Operator relasional perbandingan kesetaraan dan besar nilai
min <= x <= max Chained comparison (rantai perbandingan matematis linier)
x = A if cond else B Ternary operator (ekspresi penetapan nilai kondisional satu baris)
🛠️ Praktikum Terkait

Jobsheet 02: Kontrol Alur, Percabangan & Perulangan

Bangun sistem kasir supermarket interaktif dengan perhitungan diskon bertingkat dan validasi status keanggotaan.

⚠️ Perangkap Pemula: Operator Assignment (=) vs Equality (==)
Waspada Error

Salah mengetikkan satu tanda sama dengan (=) untuk perbandingan kondisi di dalam if alih-alih dua tanda sama dengan (==).

Kode Salah (Memicu Error)
# SyntaxError: invalid syntax (cannot assign to expression)
status = "member"

if status = "member": # ERROR: ini assignment, bukan cek kesamaan
    print("Dapat diskon khusus")
Solusi Benar & Aman
# Solusi Benar:
status = "member"

if status == "member": # Menggunakan operator pembanding ==
    print("Dapat diskon khusus")
Penyebab & Solusi: Tanda = adalah penugasan nilai (*assignment*), sedangkan == adalah operator pengujian kesetaraan (*equality*). Python melarang = di dalam if untuk mencegah bug logika.
💡 Tips Pythonic: Chained Comparison & Conditional Expression
Standar PEP 8

Python memungkinkan rantai perbandingan matematis dan penugasan nilai satu baris menggunakan ekspresi ternary.

Kurang Pythonic (Hindari)
# Kurang Pythonic (Kondisi bertingkat & 4 baris if-else)
skor = 85

# Perbandingan panjang dengan and
if skor >= 60 and skor <= 100:
    pass

# Penugasan status
if skor >= 75:
    status = "Lulus"
else:
    status = "Remedial"
Pythonic Way (Direkomendasikan)
# Pythonic (Chained Comparison & Ternary Expression)
skor = 85

# Rantai perbandingan ala matematika
if 60 <= skor <= 100:
    pass

# Ekspresi Ternary 1 baris:
status = "Lulus" if skor >= 75 else "Remedial"
Kelebihan: 60 <= skor <= 100 lebih mudah dibaca sekilas. Ekspresi ternary nilai_jika_benar if kondisi else nilai_jika_salah sangat cocok untuk penetapan nilai variabel bersyarat yang sederhana.
🎯

Cek Pemahaman Mandiri

Uji pemahaman Anda terhadap konsep bab ini dengan feedback evaluasi instan.

2 Soal Pilihan Ganda
Q1

Kapan blok kode di dalam else akan dieksekusi pada struktur if-elif-else?

💡 Pembahasan: Blok else merupakan cabang default yang hanya akan dijalankan jika tidak ada satupun kondisi if atau elif di atasnya yang terpenuhi (bernilai True).

Q2

Manakah penulisan Ternary Operator (kondisi satu baris) yang valid di Python?

💡 Pembahasan: Python menggunakan pola nilai_jika_benar if kondisi else nilai_jika_salah untuk ekspresi kondisional satu baris.