Format Dokumen Pengajaran & Panduan Siswa
BINUS University @ Bekasi SMAS St. John Pertemuan 9 dari 17

MODUL 09 — Looping / Perulangan

Ekstrakurikuler CSSE: Computer Science & Software Engineering (Python)

Jenjang Peserta Siswa SMA (Kelas 10–12)
Alokasi Waktu 100 Menit
Fokus Materi for, range(), while, break/continue, anti infinite loop
Target Selesai Game "Tebak Angka" jalan + pola akumulasi dikuasai
Tools VS Code & Python (Run ▶)
Prioritas sesi: Wajib: for + range() (3 varian), while dengan kondisi berhenti, break/continue, pola akumulasi, dan game "Tebak Angka".
Materi pengayaan (opsional jika waktu cukup)

Iterasi di atas string (for huruf in "Python"), variasi solusi challenge tanpa break, dan step negatif untuk hitung mundur.

1. Tujuan Pembelajaran

  1. Menggunakan for loop dengan range() untuk iterasi terhitung (3 varian: range(stop), range(start, stop), range(start, stop, step)).
  2. Menggunakan while loop dengan kondisi berhenti yang benar.
  3. Memilih antara for dan while dengan alasan yang tepat ("tahu jumlah putaran" vs "tergantung keadaan").
  4. Menggunakan break dan continue untuk mengendalikan jalannya loop.
  5. Menjelaskan penyebab infinite loop dan cara menghentikannya (Ctrl+C).
  6. Menerapkan pola akumulasi (total = 0 → total = total + x) untuk menjumlahkan nilai.
  7. Menggabungkan while + input() + if/elif/else + break menjadi program game "Tebak Angka".

2. Peta Jalan 17 Pertemuan

Hari ini siswa menempuh barisan ke-9 dari 17 — sudah 53% perjalanan:

[ 01-02 ] Fondasi: konsep program, algoritma, flowchart [ 03-05 ] Mulai coding: print, variabel, input/output [ 06-07 ] Operator & percabangan if/elif/else [ 08 ] Mini Project 1: Decision Making <-- SUDAH LEWAT [ 09 ] Looping / Perulangan <-- HARI INI (100 Menit) [ 10 ] Nested Loop & Pattern Programming [ 11-13 ] List, Functions, String [ 14 ] Mini Project 2: Simple App [ 15 ] AI-Assisted Coding [ 16-17 ] Final Project: Development & Presentation

3. Rundown Waktu Terperinci (100 Menit)

WaktuBlokAktivitasSlide
10'PembukaCover, tujuan sesi, rekap Sesi 08 (Mini Project Decision Making)1–3
25'Materi 1for + range() 3 varian; tugas 1 (cetak & hitung); for vs while4, 7–8
15'Materi 2while; break & continue; jebakan infinite loop5–6
10'Tugas 2Akumulasi: tabungan 7 hari & rata-rata nilai9
20'ChallengeGame "Tebak Angka" (while + input + break)10
10'PembahasanKode lengkap challenge + variasi tanpa break11
10'PenutupRangkuman 5 poin, preview Sesi 10, PR opsional12–13

4. Pedagogi & Penjelasan Konsep

A. Analogi Fotokopi Pintar

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.

B. for vs while — Dua Senjata, Satu Misi

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.

C. Error Itu Alarm, Bukan Pembongkar

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.

Catatan pengajar: bahas infinite loop dengan hati-hati agar siswa tak takut mencoba (dari kurikulum resmi). Jangan pernah me-run contoh infinite di depan kelas — cukup dibaca dan dibedah.

D. Pola Akumulasi — Satu-satunya yang Perlu Dihafal

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.

5. Panduan Praktik Langkah demi Langkah

Langkah 1: Pemanasan — for + range (10 menit)

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!

Langkah 2: Tugas 1 — Cetak & Hitung (10 menit)

Siswa kerjakan 3 level di file tugas1.py:

  1. Cetak 1–10
  2. Deret genap 0–20 (step 2)
  3. Hitung mundur 10→1, lalu cetak Lift-off! (pakai step negatif)

Yang cepat selesai: tebak dulu output range(1, 11, 2) tanpa run.

Langkah 3: while & Kendali Loop (15 menit)

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).

Langkah 4: Tugas 2 — Akumulasi (10 menit)

  1. Tabungan 7 hari: cetak progres tiap hari di dalam loop, total final di luar loop (latihan indentasi!).
  2. Rata-rata nilai dari daftar yang di-hardcode.

Langkah 5: Challenge — Tebak Angka (20 menit)

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".

Langkah 6: Pembahasan & Penutup (20 menit)

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.

6. Master Solution Code (kode.py — Sesi 09)

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

7. Troubleshooting Guide (Pegangan Guru)

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.

8. Checklist Evaluasi Siswa

9. Jembatan ke Pertemuan Berikutnya (Sesi 10)

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.