Ekskul CSSE · SMAS St. John — BINUSPertemuan 8
08
Proyek · Sesi 08 — Mini Project 1: Decision Making
Mini Project 1:
Decision Making

Tidak ada materi baru — empat bekal 4 minggu terakhir digabung jadi proyek pertamamu.

TUJUAN 01
Integrasikan variabel, input(), operator, if/elif/else — satu program utuh
TUJUAN 02
Rancang flowchart di kertas SEBELUM nulis kode
TUJUAN 03
Uji beberapa skenario — kriteria lulus proyek
Target Hari Ini

Hari ini kamu lahir jadi pembuat program

Tujuan Pembelajaran
  • Menyatukan variabel, input, operator, kondisi dalam satu program
  • Membangun program pengambil keputusan interaktif sesuai pilihan proyek
  • Menguji dengan beberapa skenario input — bukan satu
  • Mendemonstrasikan & menjelaskan logikanya dengan kalimat sendiri
integrasi 04-07flowchart duluuji skenariodemo & feedback

* baseline = level wajib yang harus utuh · menengah/challenge = bonus untuk yang baseline-nya sudah jalan.

!
Kenapa sesi ini spesial?

Empat minggu terakhir kamu latihan terpisah. Hari ini keempatnya jadi SATU program buatanmu.

Analogi hari ini

Naik mobil jauh: buka peta dulu, bukan nyalakan mesin lalu bingung di lampu merah pertama.

Flowchart = peta · coding = menyetir. Kurikulum menegaskan: rancang dulu, baru koding.

Sebelum gas — periksa isi tas kemu dulu

Rekap Sesi 07 · Conditional Programming

Yang sudah kamu pegang — tas lengkap 4 sesi
  • Sesi 04-05 — variabel, tipe data, input() + konversi
  • Sesi 06 — 7 operator, and/or/not, prioritas
  • Sesi 07 — if/elif/else, urutan sempit → longgar, indentasi = sintaks

Tidak ada yang baru hari ini — dan itu harus diucapkan dengan bangga: semua sudah di tasmu, tinggal dirakit.

Kuis kilat — coba jawab dulu!
AUrutan cabang yang benar: sempit → longgar atau longgar → sempit?
BCabang pertama yang bernilai apa yang menang?
jawabannya A = sempit → longgar · B = cabang pertama yang True. Kalau dua ini lancar, kamu siap proyek. Kalau belum — wajar, guru dampingi individual hari ini.
!

Peta perjalanan: kamu di barisan ke-8 dari 17 — sudah 47% perjalanan! Titik jawab semester.

Tiga level, satu aturan main — baseline dulu, utuh

Pilih proyekmu — tiga level

Wajib bisaLevel 1
Sistem Penilaian Siswa

Input nama, nilai angka, kehadiran → keluarkan predikat A/B/C/D/E + status LULUS/TIDAK. Semua bekal 04-07 dipakai.

Kriteria lulus proyek: jalan tanpa error & menangani beberapa kasus.

MenengahLevel 2
Cek Tiket Bioskop

Input umur + rating film → boleh tidaknya nonton. Logikanya nested if: umur cukup? cek lagi ratingnya.

Hanya untuk yang baseline-nya sudah jalan utuh.

ChallengeLevel 3
Chatbot Jurusan BINUS

Tanya calon mahasiswa, jawab sesuai minatnya — banyak cabang elif + .lower() biar "Informatika", "INFORMATIKA", "informatika" dicocokkan sama rata.

Bonus kelas — jangan kejar sebelum baseline utuh.

Aturan pilihannya satu kalimat: baseline harus dulu selesai utuh — level lain hanya untuk yang baseline-nya sudah jalan. Ini bukan hukuman; itu urutan yang aman.

Sebelum flowchart — program dimulai dari kalimat, bukan kode

Tulis syarat keputusan sebagai kalimat

Baseline — syaratnya versi bahasa manusia

"Jika nilai minimal 90, tulis A; jika tidak, tapi minimal 75, tulis B; jika tidak, tapi minimal 60, tulis C; jika tidak, tapi minimal 40, tulis D; selain itu tulis E. Dan jika nilai minimal 75 dan kehadiran minimal 80 — tulis LULUS."

Kalimat itu sudah berisi: if/elif/else (urutan tinggi → rendah) + and (dua syarat status). Tinggal diterjemahkan.

Terjemahan pertama — satu keputusan
if nilai >= 60:
    print("Tuntas")
else:
    print("Belum tuntas")

Setiap ketupat di flowchart nanti = satu baris if di sini.

→

Bisa menggambar alurnya = hampir pasti bisa menulis kodenya. Maka: kalimat dulu, peta berikutnya.

20 menit di kertas lebih murah daripada 2 jam bongkar kode

Flowchart dulu — di kertas

Peta baseline — simbol yang kamu kenal dari Sesi 01-02
Mulai
oval
input nama, nilai, kehadiran
jajar genjang
nilai >= 90? / >= 75? / ...
belah ketupat = keputusan
cetak predikat + status
persegi = proses
Mulai → input → ketupat → output → Selesai
Aturan peta yang menghasilkan kode
  • 1 ketupat = 1 baris if — hitung ketupatmu, itu jumlah keputusannya
  • 1 panah keluar = 1 cabang yang dijalankan
  • Guru keliling cek alur tiap siswa sebelum semua pindah ke komputer
⏱

20 menit untuk flowchart. Kenapa serius? Kalau buntu nanti, kamu tinggal lihat: "cabang mana yang belum saya tulis?"

Jangan tulis semua lalu Run sekali — bangun bertahap, uji tiap tahap

Tahap A · Input dulu — uji

Code — 3 data masuk dulu
nama = input("Nama siswa: ")
nilai = int(input("Nilai angka (0-100): "))
hadir = int(input("Kehadiran (%): "))

print(nama, nilai, hadir)   # cek!
Output — tahap A lulus kalau ini muncul
Nama siswa: Budi
Nilai angka (0-100): 82
Kehadiran (%): 85
Budi 82 85
Kenapa uji sekecil ini?

Kalau data belum masuk benar, semua keputusan di atasnya pasti salah. Fondasi dicek sebelum dinding. Lupa int() ketahuan di sini — bukan setelah 40 baris.

Fondasi aman? Tambah satu keputusan — uji lagi

Tahap B · Satu keputusan dulu — uji lagi

Code — tambah di bawah Tahap A
if nilai >= 75 and hadir >= 80:
    print("Tuntas")
else:
    print("Belum tuntas")
Bedah kodenya

Ini ketupat pertama di flowchartmu jadi baris if. and dari Sesi 06: dua-duanya wajib benar — nilai 90 tapi kehadiran 50 tetap belum tuntas.

Uji 2 kasus — bukan satu
82 & 85 → Tuntas
90 & 50 → Belum tuntas

Kasus kedua itu penting — dia membuktikan and-mu benar, bukan kebetulan.

→

Tahap C menyusul di slide 10: lengkapi semua cabang predikat + status, uji 4 kartu kasus.

Giliran kamu — rakit semuanya, satu keputusan demi satu keputusan

Tugas 1 · Baseline: Sistem Penilaian Siswa

Kerjakan berurutan — 3 tahap, uji di tiap tahap
  1. Tahap A — input nama, nilai (int), hadir (int) → cetak ketiganya untuk cek
  2. Tahap B — satu keputusan: if nilai >= 60 → Tuntas / Belum tuntas — uji 2 kasus
  3. Tahap C — lengkapi semua cabang predikat A/B/C/D/E + status LULUS via and — uji 4 kartu kasus
Petunjuk flowchart

Buka peta di kertas tadi: berapa ketupat? Itu jumlah if/elif-mu. Cabang mana yang belum tertulis? Itu pekerjaan berikutnya.

Contoh jalannya program (baseline utuh)
=== SISTEM PENILAIAN SISWA === Nama siswa: Budi Nilai angka (0-100): 82 Kehadiran (%): 85 --- HASIL --- Nama : Budi Nilai : 82 Predikat: B Status : LULUS - pertahankan!
⏱

Waktu: 30 menit. Guru keliling — ini titik jawab utang konsep, minta bantu tanpa sungkan.

Program yang "selesai" bukan yang sekali jalan — tapi yang jawab benar beberapa kasus

Tahap C · Kartu kasus — uji 4, bukan 1

Empat kartu kasus — centang satu per satu

Budi 95 / 90

→ A, LULUS

Kasus 2

Sinta 75 / 80

→ B, LULUS (tepat di batas, dua-duanya!)

Kasus 3

Rio 60 / 70

→ C, TIDAK LULUS (kehadiran kurang)

Kasus 4

Ani 40 / 90

→ D, TIDAK LULUS

Kenapa harus 4?

Bug paling licik tidak berbunyi — program jalan tanpa error tapi cabangnya salah. Satu percobaan tidak bisa menemukannya; empat bisa.

UJI 1 KASUS
"kayaknya udah bener"
UJI 4 KASUS
"bener untuk kasus nyata"
!

Kebiasaan inilah yang nanti dipakai di Final Project — mulai menempel dari sekarang.

Baseline utuh? Baru naik level — aturan mainnya tetap

Tugas 2 · Bioskop (menengah) & Chatbot (challenge)

Level 2 — Cek Kelayakan Tiket Bioskop
umur = int(input("Umur: "))
rating = input("Rating (SU/13+/R): ")
if umur >= 17:
    print("Boleh semua film")
elif rating == "SU":
    print("Boleh film SU")
elif rating == "13+" and umur >= 13:
    print("Boleh film 13+")
else:
    print("Belum boleh")

Keputusan di dalam keputusan — nested logika dari Sesi 07 dipakai beneran. Uji: 15 & SU, 15 & 13+, 12 & 13+, 20 & R.

Level 3 — Chatbot Jurusan BINUS
minat = input("Minatmu? ").lower()
if "informatika" in minat:
    print("Track software!")
elif "si" in minat:
    print("Sistem Informasi!")
elif "dkv" in minat:
    print("Desain Komunikasi Visual!")
else:
    print("Cek semua jurusan kami!")

Kuncinya satu: .lower() membuat "Informatika", "INFORMATIKA", "informatika" dicocokkan sama rata — banyak elif berlapis untuk tiap jurusan.

Waktu 25 menit · pilih SATU level, kerjakan bertahap seperti baseline: kalimat → flowchart mini → input dulu → keputusan satu-satu → uji kasus.
Demo itu bagian dari proyek — bukan formalitas

Demo & feedback — tunjukkan karyamu

Format presentasi — 2-3 siswa
  1. Masalah — programmu menjawab keputusan apa?
  2. Demo live — jalankan di depan kelas, ketik input langsung
  3. 1 potongan kode dibanggakan — tunjuk baris yang paling kamu pahami, jelaskan logikanya dengan kalimat sendiri
Tanya balik ke kelas

"Kalau inputnya X, hasilnya apa?" — kelas menebak, presenter mengetik, program membuktikan. Ini tes pemahaman paling jujur.

Kenapa memilih sendiri satu potongan?

Kamu memaksa dirimu mengenali bagian yang benar-benar kamu pahami — dan guru dapat sinyal cepat bagian mana yang perlu diperkuat sebelum Mini Project 2.

Aturan feedback

"Apa yang menarik" dulu, saran sesudahnya. Presentasi = latihan Final Project (Sesi 17) — formatnya persis sama.

Ceklis sebelum bilang selesai — dua kotak, wajib centang dua-duanya

Rubrik lulus Mini Project 1

Kriteria 1 — jalan tanpa error
  • Program di-Run dari awal sampai akhir tanpa Traceback
  • Sintaks bersih: titik dua, indentasi 4 spasi konsisten
  • Input dikonversi (int()) sebelum dipakai berhitung
  • Error yang muncul dibaca, bukan dihindari — lalu diperbaiki
Kriteria 2 — menangani beberapa kasus
  • Minimal 3-4 skenario diuji — termasuk nilai tepat di batas
  • Setiap cabang (if/elif/else) terbukti jalan minimal sekali
  • Status LULUS/TIDAK benar untuk 4 kartu kasus
  • Saat demo, bisa menjawab: "kalau inputnya X, hasilnya apa?"
!

Baseline selesai utuh = lulus. Level menengah/challenge = penghargaan tambahan. Satu fitur selesai sempurna lebih berharga daripada tiga fitur setengah jadi — prinsip yang sama dipakai sampai Final Project.

Proyekmu jalan tapi keputusannya aneh? Mungkin kena salah satu ini

Kotak masalah — 4 jebakan proyek

Jebakan 01
Cabang urutan salah → predikat selalu rendah
if nilai >= 60:    # longgar duluan — kena semua!
    grade = "C"
elif nilai >= 90:  # tak pernah dicapai
    grade = "A"

Nilai 95 dapat C tanpa error. Tracing: masuk cabang mana? Perbaiki: tinggi → rendah, else paling bawah.

Jebakan 02
Lupa konversi int → ValueError
nilai = input("Nilai: ")   # tetap str!
if nilai >= 75:            # ValueError: '<' antara str & int

Bekas Sesi 05 yang muncul lagi. Obat: int(input(...)) — dan ketik angka murni saat uji.

Jebakan 03
Lupa uji skenario lain → error senyap lolos
# dicoba sekali: 82 & 85 → LULUS. Selesai? BELUM.
# coba juga: 75/80 (batas!), 60/70, 40/90

Satu input yang benar bisa menyembunyikan tiga cabang yang salah. Kartu kasus — itu bukan formalitas, itu radar bug.

Jebakan 04
and vs or tertukar → status lulus salah
lulus = nilai >= 75 or hadir >= 80   # SALAH — salah satu cukup?
lulus = nilai >= 75 and hadir >= 80  # BENAR — dua-duanya wajib

Uji kartu 60/70: dengan or program bilang LULUS — kelemahannya ketahuan. Ganti and, uji ulang 4 kartu.

Buntu di menit ke-20? Kembali ke Tahap A: input dulu, uji, tambah satu keputusan, uji lagi. Flowchart belum jelas? Buat minimalis 3 kotak, koding versi kecil dulu.

Rangkuman · Yang kita bawa pulang

5 poin hari ini — proyek pertama diraih

01
Alur dulu baru kode — kalimat syarat → flowchart → baris if; satu ketupat = satu keputusan
02
Bangun bertahap, uji tiap tahap — input dulu, satu keputusan, baru semua cabang; bukan tulis-semua-Run-sekali
03
Kartu kasus — uji 3-4 skenario termasuk tepat di batas; radar untuk bug yang tidak berbunyi
04
Urutan & logika yang benar — sempit → longgar; dua syarat wajib = and, bukan or
05
Demo = bukti paham — masalah → demo live → satu potongan kode dibanggakan; latihan resmi Final Project
Pembuat program resmi terdaftar Next → Looping / Perulangan
Next & Referensi — langkah selanjutnya

Minggu depan:
Looping / Perulangan

Sesi 09 — Looping / Perulangan

Programmu bisa memutuskan sekali lalu selesai — minggu depan dia belajar mengulang: satu blok kode, dijalankan berkali-kali.

Cek nilai 5 teman tanpa menulis if 5 kali. Dari situ lahir game Tebak Angka dan pola-pola bintang minggu depannya.

intip:
for i in range(5):
  print("Cek siswa nomor", i + 1)
# 5 baris output, 2 baris kode
for + range()whilebreak · continue
PR iseng (opsional)
  • Polish baseline: tambahkan cetak predikat huruf dalam kalimat f-string
  • Tantangan: biarkan user mengulang input selama nilainya belum 0-100
  • Refleksi lisan: syarat keputusan mana yang paling sulit dirumuskan, dan kenapa?
Sampai jumpa di Sesi 09! flowchart · kartu kasus · demo