Ekstrakurikuler CSSE: Computer Science & Software Engineering (Python)
for + range() (3 varian), while dengan kondisi berhenti, break/continue, pola akumulasi, dan game "Tebak Angka".Iterasi di atas string (for huruf in "Python"), variasi solusi challenge tanpa break, dan step negatif untuk hitung mundur.
for loop dengan range() untuk iterasi terhitung (3 varian: range(stop), range(start, stop), range(start, stop, step)).while loop dengan kondisi berhenti yang benar.for dan while dengan alasan yang tepat ("tahu jumlah putaran" vs "tergantung keadaan").break dan continue untuk mengendalikan jalannya loop.total = 0 → total = total + x) untuk menjumlahkan nilai.while + input() + if/elif/else + break menjadi program game "Tebak Angka".Hari ini siswa menempuh barisan ke-9 dari 17 — sudah 53% perjalanan:
| Waktu | Blok | Aktivitas | Slide |
|---|---|---|---|
| 10' | Pembuka | Cover, tujuan sesi, rekap Sesi 08 (Mini Project Decision Making) | 1–3 |
| 25' | Materi 1 | for + range() 3 varian; tugas 1 (cetak & hitung); for vs while | 4, 7–8 |
| 15' | Materi 2 | while; break & continue; jebakan infinite loop | 5–6 |
| 10' | Tugas 2 | Akumulasi: tabungan 7 hari & rata-rata nilai | 9 |
| 20' | Challenge | Game "Tebak Angka" (while + input + break) | 10 |
| 10' | Pembahasan | Kode lengkap challenge + variasi tanpa break | 11 |
| 10' | Penutup | Rangkuman 5 poin, preview Sesi 10, PR opsional | 12–13 |
Loop = fotokopi pintar. Bukan menulis ulang 100×, tapi tekan tombol "ulang 100×". Kita yang mengatur berapa kali dan kapan berhenti — komputer yang kerja. Kaitkan dengan Sesi 01: di sana siswa sadar "capek ngetik 100 baris" — hari ini mereka punya jawabannya.
for = saat jumlah putaran sudah tahu ("cetak 25 nilai ujian", "nabung 12 bulan"). while = saat berhentinya tersyarat ("tebak sampai benar", "isi gayung sampai penuh"). Trik cepat untuk siswa: tahu berapa kali → for · gak tahu, tergantung keadaan → while.
Infinite loop bukan hal menakutkan — itu loop yang lupa jalannya pulang. Selalu ada yang mengubah kondisi di dalam loop (angka += 1) atau jalan keluar (break). Kalau terminal macet: Ctrl+C — nggak ada yang rusak.
total = 0
for x in ...:
total = total + x
Variabel penampung dibuat sebelum loop, di-update di dalam loop, dicetak di luar loop. Pola ini muncul lagi di tabungan, rekap nilai, sampai Final Project.
Minta siswa menulis dan menjalankan:
for i in range(5):
print(i)
Diskusikan output 0 1 2 3 4 — kenapa bukan 1 sampai 5? Tekankan: mulai dari 0, berhenti SEBELUM stop. Lalu eksperimen 3 varian:
range(1, 6) # 1,2,3,4,5
range(0, 10, 2) # 0,2,4,6,8
range(10, 0, -1) # mundur!
Siswa kerjakan 3 level di file tugas1.py:
Lift-off! (pakai step negatif)Yang cepat selesai: tebak dulu output range(1, 11, 2) tanpa run.
Tulis bersama-sama, bedah baris demi baris:
angka = 1
while angka <= 5:
print(angka)
angka += 1 # tanya: kalau baris ini dihapus, apa yang terjadi?
Lalu tunjukkan break/continue dan jebakan ∞ (slide 6).
Program game dengan output seperti:
Tebak angkaku (1-10): 5
kurang!
Tebak angkaku (1-10): 9
kebanyakan!
Tebak angkaku (1-10): 7
BEKU! Kamu menang!
Bahan yang dipakai semuanya relevansi lama: while (Sesi 09), input() + int() (Sesi 05), if/elif/else (Sesi 07). Framing: "ini digabung, bukan dipelajari baru".
Bedah solusi challenge (dua versi: while True + break, dan while tebakan != rahasia tanpa break — tanyakan mana yang lebih elegan dan kenapa). Tutup dengan rangkuman 5 poin + preview Sesi 10.
Kode lengkap per bagian ada di kode.py dengan peta BAGIAN → slide. Inti solusi challenge (versi while True + break):
rahasia = 7
while True:
tebakan = int(input("Tebak angkaku (1-10): "))
if tebakan > rahasia:
print("kebanyakan!")
elif tebakan < rahasia:
print("kurang!")
else:
print("BEKU! Kamu menang!")
break
Versi tanpa break (lebih elegan — loop berhenti karena syarat jadi False):
rahasia = 7
tebakan = 0
while tebakan != rahasia:
tebakan = int(input("Tebak angkaku (1-10): "))
if tebakan > rahasia:
print("kebanyakan!")
elif tebakan < rahasia:
print("kurang!")
print("BEKU! Kamu menang!")
Solusi tugas (tabungan 7 hari):
total = 0
for hari in range(1, 8):
total = total + 2000
print(f"Hari {hari}: total {total}")
print("Total:", total) # 14000
| Masalah | Penyebab | Tindakan Perbaikan |
|---|---|---|
| Loop muter terus, terminal macet | Lupa angka += 1 (atau pengubah kondisi lain) di dalam while. |
Tekan Ctrl+C. Baca ulang loop: "siapa yang mengubah kondisi?" Tidak ada = tambahkan. |
range(1, 5) mencetak 1–4, siswa protes "kok nggak sampai 5?" |
Kesalahpahaman stop bersifat exclusive. | Analogi: "berhenti SEBELUM angka itu" — kayak garis finis yang nggak ikut diinjak. Minta uji range(1, 6). |
| Total salah / cuma tercetak sekali | print(total) ketaruh di dalam loop, atau total = 0 ketaruh di dalam loop (reset terus). |
Cek indentasi: update & cetak progres di dalam, inisialisasi & cetak final di luar. |
| Siswa takut mencoba takutnya infinite loop | Trauma "program nggak berhenti". | Normalisasi: Ctrl+C selalu jalan; dev profesional juga sering kena. Coba dulu dengan rentang kecil sebelum run penuh. |
input() di dalam while tidak berjalan |
input() ketaruh di luar loop — tebakan tidak pernah diperbarui. |
Pastikan input() ada di dalam loop, agar syarat bisa berubah dari True → False. |
for dengan ketiga varian range() tanpa melihat catatan.for vs while dengan kalimat sendiri + satu contoh masing-masing.while mereka punya pengubah kondisi di dalam loop (bisa menjelaskan kenapa).break vs continue pada output.Hari ini siswa bisa mengulang satu hal berkali-kali. Minggu depan: loop di dalam loop — loop luar mengatur baris, loop dalam mengisi kolom — dan dari situ lahir pola bintang: persegi, segitiga, piramida.
for i in range(3):
for j in range(3):
print("*", end=" ")
print()
# → matriks 3×3 bintang
Nested loop adalah bekal langsung untuk Sesi 11 (List — mengolah banyak data) dan intensif dipakai di Final Project.