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

MODUL 10 — Nested Loop & Pattern Programming

Ekstrakurikuler CSSE: Computer Science & Software Engineering (Python)

Jenjang Peserta Siswa SMA (Kelas 10–12)
Alokasi Waktu 100 Menit
Fokus Materi Nested loop, pola */angka, string multiply, end & print()
Target Selesai "Pabrik pola": persegi, segitiga, piramida, 1 22 333, tabel perkalian
Tools VS Code & Python (Run ▶)
Prioritas sesi: Wajib: anatomi nested loop (luar=baris, dalam=kolom), pola persegi & segitiga siku, piramida, pola angka 1 22 333, dan kontrol end=" " + print().
Materi pengayaan (opsional jika waktu cukup)

Segitiga terbalik, piramida terbalik, analisis jumlah iterasi (persegi n×n, segitiga n(n+1)/2), dan pola rapi dengan sep.

1. Tujuan Pembelajaran

  1. Menjelaskan anatomi nested loop: loop luar = baris, loop dalam = kolom, satu putaran luar = satu putaran penuh dalam.
  2. Membaca dan memprediksi output nested loop sebelum dijalankan (menganalisis jumlah iterasi tiap level).
  3. Membuat pola persegi dengan trik string multiply ("*" * n) dan dengan nested loop.
  4. Membuat pola segitiga siku yang jumlah karakternya ikut bertambah per baris ("*" * i).
  5. Membuat piramida dengan kombinasi spasi mengecil + bintang ganjil membesar.
  6. Membuat pola angka (1, 22, 333, 4444) dengan str(i) * i — dan menjelaskan kenapa i * i salah.
  7. Menggunakan print(..., end=" ") dan print() kosong sebagai alat kontrol baris/kolom.
  8. Mendiagnosis 3 jebakan umum nested loop dengan print pemeriksa.

2. Peta Jalan 17 Pertemuan

Hari ini siswa menempuh barisan ke-10 dari 17 — 59% 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 [ 09 ] Looping / Perulangan <-- SUDAH LEWAT [ 10 ] Nested Loop & Pattern Programming <-- HARI INI (100 Menit) [ 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, rekap Sesi 09 + kuis kilat tebak output1–3
15'Materi 1Anatomi nested loop: luar=baris, dalam=kolom, end=" " & print()4
15'Tugas 1Persegi 4×4 (2 cara) + segitiga siku5–6
15'Materi 2Piramida (spasi+ganjil) & pola angka str(i)*i7
10'Tugas 2Tabel perkalian bertingkat (nested loop bermanfaat)8
10'DebuggingKotak masalah: 3 jebakan nested loop + print pemeriksa9
15'ChallengePiramida rapi & pola 1 22 33310
10'PembahasanKode lengkap + metode "3 pertanyaan pola"11
10'PenutupRangkuman 5 poin, preview Sesi 11, PR opsional12–13

4. Pedagogi & Penjelasan Konsep

A. Analogi: Kotak Berisi Kotak / Kursi Kelas

Nested loop = kursi kelas. Loop luar berjalan ke baris berikutnya; loop dalam memeriksa semua kursi di baris itu. Satu baris harus penuh dulu sebelum pindah baris. Alternatif: tabel jadwal — i pilih hari, j isi jam pelajaran. Yang paling sering salah dipahami: 1 putaran luar = 1 putaran PENUH dalam — tunjukkan dengan print pemeriksa.

B. Pola = 3 Pertanyaan

Semua pola hari ini dijawab dengan metode yang sama:

  1. Spasi? (berapa, mengecil atau membesar?)
  2. Apa yang diulang? (*, angka, #)
  3. Berapa kali? (tetap n → persegi; ikut baris i → segitiga; ganjil 2*i+1 → piramida)

Jawab 3 pertanyaan itu → kode polanya ketemu. Siswa bukan menghafal pola, tapi punya pabrik pola.

C. end=" " dan print() Kosong = Rem & Gas Baris

print("*", end=" ") — menahan kursor agar tetap satu baris (rem). print() kosong — pindah baris (tombol ENTER). Keduanya pasangan wajib dalam nested loop berbasis kolom.

D. str(i) * i vs i * i — Kesalahan yang Bernilai Pelajaran

print(i * i) → 1, 4, 9 — perkalian matematika. print(str(i) * i) → "1", "22", "333" — pengulangan teks. Angka harus jadi teks dulu sebelum bisa "dikali" sebagai pengulangan. Minta siswa menjalankan keduanya dan membedah bedanya — momen aha! yang bagus.

5. Panduan Praktik Langkah demi Langkah

Langkah 1: Kuis Kilat — Tebak Output (10 menit, slide 3)

Tampilkan, minta siswa jalanin di kepala dulu:

for i in range(1, 4):
    print("*" * i)

Tebak dulu, baru jalankan: *, **, ***. Jembatani: "loop tunggal bisa bikin baris yang membesar — sekarang kita bikin bentuk yang lebih utuh."

Langkah 2: Anatomi Nested Loop (15 menit, slide 4)

Tulis bersama dan bedah baris demi baris:

n = 3
for i in range(n):        # luar → baris
    for j in range(n):    # dalam → kolom
        print("*", end=" ")
    print()               # pindah baris

Lalu jalankan versi debug — print pemeriksa:

for i in range(2):
    for j in range(2):
        print(f"i={i} j={j}")

Diskusikan urutan keluaran: i=0 j=0, i=0 j=1, i=1 j=0, i=1 j=1 — bukti bahwa 1 putaran luar = 1 putaran penuh dalam. Iterasi total: n × n = 9.

Langkah 3: Tugas 1 — Persegi & Segitiga (15 menit, slide 5-6)

Tiga level di file pola.py:

  1. Persegi 4×4 dengan print("*" * n) — satu loop cukup.
  2. Persegi versi nested — hasil sama, tapi inilah mesin di balik semua pola.
  3. Segitiga siku — petunjuk: persegi yang jumlah bintangnya ikut baris: print("*" * i) dengan range(1, n+1).

Yang cepat: segitiga terbalik (n-i).

Langkah 4: Piramida & Pola Angka (15 menit, slide 7)

Bangun piramida dari pertanyaan 3-pola:

n = 4
for i in range(n):
    spasi   = " " * (n - i - 1)   # mengecil: 3,2,1,0
    bintang = "*" * (2 * i + 1)   # ganjil membesar: 1,3,5,7
    print(spasi + bintang)

Lalu pola angka:

for i in range(1, n + 1):
    print(str(i) * i)   # 1, 22, 333, 4444

Bedah kenapa str() wajib (lihat bagian 4-D).

Langkah 5: Tugas 2 — Tabel Perkalian Bertingkat (10 menit, slide 8)

  1. Tabel perkalian 3 (1–10) dengan f-string.
  2. Tabel 1–3 bertingkat: luar = tabel mana, dalam = dikali berapa (1–5), baris kosong antar tabel.

Ini nested loop yang bermanfaat nyata — kaitkan dengan jadwal kelas, denah meja kafe, data Excel.

Langkah 6: Kotak Masalah — 3 Jebakan (10 menit, slide 9)

Bahas tiga gejala klasik (kode salah → benar ada di deck & kode.py BAGIAN 5):

  1. Tertukar luar-dalam → pola transpose/nyamping.
  2. Lupa print() kosong → semua menumpuk 1 baris.
  3. Loop dalam tidak ikut baris (range(4) padahal mau segitiga) → hasilnya persegi.

Senjata debug: sisipkan print(f"i={i} j={j}") sesaat, hapus setelah paham.

Langkah 7: Challenge & Pembahasan (25 menit, slide 10-11)

Misi A — piramida rapi tinggi 4 dan Misi B — pola 1 22 333 4444. Solusi lengkap + penjelasan "kenapa rumusnya begitu" ada di slide 11 dan kode.py BAGIAN 6. Bonus untuk yang cepat: piramida terbalik. Tutup dengan rangkuman 5 poin + preview Sesi 11 (List).

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

Kode lengkap per bagian ada di kode.py dengan peta BAGIAN → slide. Inti solusi challenge:

# Misi A — piramida
n = 4
for i in range(n):
    spasi   = " " * (n - i - 1)
    bintang = "*" * (2 * i + 1)
    print(spasi + bintang)

# Misi B — 1 22 333 4444
for i in range(1, n + 1):
    print(str(i) * i)

Tabel perkalian bertingkat:

for tabel in range(1, 4):
    for kali in range(1, 6):
        print(f"{tabel} x {kali} = {tabel * kali}")
    print()   # baris kosong antar tabel

Bonus piramida terbalik:

for i in range(n, 0, -1):
    print(" " * (n - i) + "*" * (2 * i - 1))

7. Troubleshooting Guide (Pegangan Guru)

Masalah Penyebab Tindakan Perbaikan
Pola keluar transpose / nyamping Loop luar dan dalam tertukar peran. Ingatkan: luar = baris. Sisipkan print(f"i={i} j={j}") untuk melihat urutan jalan.
Semua bintang menumpuk satu baris Lupa print() kosong setelah loop dalam. print("*", end=" ") menahan baris — harus ditutup print() kosong sebagai ENTER.
Mau segitiga, keluarnya persegi Loop dalam masih range(n) (tetap), bukan ikut baris. Ganti ke range(i) / gunakan "*" * i. Persegi = jumlah tetap; segitiga = jumlah ikut baris.
i * i menghasilkan angka (1, 4, 9), bukan teks Tipe data: int * int = matematika. Konversi dulu: str(i) * i. Minta siswa jalankan keduanya berdampingan.
Piramida tidak simetris Rumus bintang genap atau spasi salah arah. Bintang harus ganjil (2*i+1); spasi mengecil (n-i-1). Debug bertahap: cetak spasi dan bintang terpisah dulu.
Siswa kebingungan jumlah iterasi Belum menghitung level per level. Latih hitung manual: persegi n×n, segitiga n(n+1)/2. Print pemeriksa membuktikannya.

8. Checklist Evaluasi Siswa

9. Jembatan ke Pertemuan Berikutnya (Sesi 11)

Hari ini pola memakai satu variabel n. Minggu depan: List / Array — menyimpan banyak nilai sekaligus dalam satu nama:

nilai = [85, 90, 78]

Dari mencetak bentuk → mengelola kumpulan data: daftar nilai teman sekelas, stok barang, playlist. Loop hari ini adalah alat pengolah list minggu depan — for x in daftar: menunggu di sana.

Jembatan Final Project: tabel perkalian hari ini = struktur data tabular pertama siswa.