{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Percabangan Kondisional (If, Elif, Else, Match-Case)\n",
        "\n",
        "Percabangan memungkinkan program membuat keputusan dan mengeksekusi blok kode tertentu berdasarkan kondisi Boolean."
      ],
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 1. Pernyataan `if`, `elif`, dan `else`\n",
        "- **`if`**: Blok kode pertama yang dievaluasi.\n",
        "- **`elif`**: Kondisi alternatif berikutnya jika kondisi sebelumnya tidak terpenuhi.\n",
        "- **`else`**: Blok kode penutup yang dieksekusi jika seluruh kondisi di atas tidak terpenuhi."
      ],
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {},
      "source": [
        "nilai = 82\n",
        "\n",
        "if nilai >= 85:\n",
        "    grade = \"A (Sangat Baik)\"\n",
        "elif nilai >= 75:\n",
        "    grade = \"B (Baik)\"\n",
        "elif nilai >= 60:\n",
        "    grade = \"C (Cukup)\"\n",
        "else:\n",
        "    grade = \"D (Perlu Perbaikan)\"\n",
        "\n",
        "print(f\"Nilai: {nilai} -> Predikat: {grade}\")"
      ],
      "outputs": [],
      "execution_count": null
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 2. Percabangan Bersarang (Nested If)\n",
        "Anda dapat menempatkan struktur `if` di dalam blok `if` lainnya untuk mengevaluasi kondisi bertingkat."
      ],
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {},
      "source": [
        "member = True\n",
        "total_belanja = 600000\n",
        "\n",
        "if member:\n",
        "    if total_belanja >= 500000:\n",
        "        diskon = 0.20  # Diskon 20%\n",
        "    else:\n",
        "        diskon = 0.10  # Diskon 10%\n",
        "else:\n",
        "    diskon = 0.05      # Diskon 5%\n",
        "\n",
        "total_bayar = total_belanja * (1 - diskon)\n",
        "print(f\"Diskon: {diskon*100}% | Total Bayar: Rp {total_bayar:,.0f}\")"
      ],
      "outputs": [],
      "execution_count": null
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 3. Fitur Modern: `match-case` (Python 3.10+)\n",
        "Mirip dengan struktur *switch-case* pada bahasa pemrograman lain, `match-case` mempermudah pencocokan pola nilai secara elegan."
      ],
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {},
      "source": [
        "kode_status = 200\n",
        "\n",
        "match kode_status:\n",
        "    case 200:\n",
        "        pesan = \"200 OK - Permintaan berhasil diproses.\"\n",
        "    case 404:\n",
        "        pesan = \"404 Not Found - Sumber data tidak ditemukan.\"\n",
        "    case 500:\n",
        "        pesan = \"500 Internal Server Error - Terjadi kesalahan server.\"\n",
        "    case _:\n",
        "        pesan = \"Kode status tidak dikenali.\"\n",
        "\n",
        "print(pesan)"
      ],
      "outputs": [],
      "execution_count": null
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "name": "python",
      "version": "3.11.0"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 2
}