Ekstrakurikuler CSSE: Computer Science & Software Engineering (Python)
1 22 333, dan kontrol end=" " + print().Segitiga terbalik, piramida terbalik, analisis jumlah iterasi (persegi n×n, segitiga n(n+1)/2), dan pola rapi dengan sep.
"*" * n) dan dengan nested loop."*" * i).str(i) * i — dan menjelaskan kenapa i * i salah.print(..., end=" ") dan print() kosong sebagai alat kontrol baris/kolom.Hari ini siswa menempuh barisan ke-10 dari 17 — 59% perjalanan:
| Waktu | Blok | Aktivitas | Slide |
|---|---|---|---|
| 10' | Pembuka | Cover, tujuan, rekap Sesi 09 + kuis kilat tebak output | 1–3 |
| 15' | Materi 1 | Anatomi nested loop: luar=baris, dalam=kolom, end=" " & print() | 4 |
| 15' | Tugas 1 | Persegi 4×4 (2 cara) + segitiga siku | 5–6 |
| 15' | Materi 2 | Piramida (spasi+ganjil) & pola angka str(i)*i | 7 |
| 10' | Tugas 2 | Tabel perkalian bertingkat (nested loop bermanfaat) | 8 |
| 10' | Debugging | Kotak masalah: 3 jebakan nested loop + print pemeriksa | 9 |
| 15' | Challenge | Piramida rapi & pola 1 22 333 | 10 |
| 10' | Pembahasan | Kode lengkap + metode "3 pertanyaan pola" | 11 |
| 10' | Penutup | Rangkuman 5 poin, preview Sesi 11, PR opsional | 12–13 |
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.
Semua pola hari ini dijawab dengan metode yang sama:
*, angka, #)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.
print("*", end=" ") — menahan kursor agar tetap satu baris (rem). print() kosong — pindah baris (tombol ENTER). Keduanya pasangan wajib dalam nested loop berbasis kolom.
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.
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."
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.
Tiga level di file pola.py:
print("*" * n) — satu loop cukup. print("*" * i) dengan range(1, n+1). Yang cepat: segitiga terbalik (n-i).
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).
Ini nested loop yang bermanfaat nyata — kaitkan dengan jadwal kelas, denah meja kafe, data Excel.
Bahas tiga gejala klasik (kode salah → benar ada di deck & kode.py BAGIAN 5):
print() kosong → semua menumpuk 1 baris.range(4) padahal mau segitiga) → hasilnya persegi.Senjata debug: sisipkan print(f"i={i} j={j}") sesaat, hapus setelah paham.
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).
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))
| 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. |
1 22 333 dan menjelaskan kenapa butuh str().end=" " + print() dengan sengaja (bukan meniru tanpa paham).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.