Ekskul CSSE · SMAS St. John — BINUSPertemuan 9
09
Logika · Sesi 09 — Looping / Perulangan
Looping /
Perulangan

Komputer tidak pernah capek mengulang — kita suruh cetak 1 sampai 100 tanpa menulis 100 baris print().

TUJUAN 01
Pakai for + range() untuk ulang terhitung
TUJUAN 02
Pakai while untuk ulang bersyarat
TUJUAN 03
Kuasai break / continue & cegah infinite loop
Target Hari Ini

Hari ini komputer yang kerja ulang

Tujuan Pembelajaran
  • Menggunakan for untuk iterasi terhitung
  • Menggunakan while dengan kondisi berhenti
  • Mengenal range(), break, continue
  • Menghindari infinite loop — loop yang tak pernah selesai
forwhilerange()breakanti ∞ loop

* iterasi = satu putaran pengulangan; infinite loop = pengulangan tanpa henti karena kondisi tak pernah False.

∞
Kenapa looping?

Tanpa loop: 100× print().
Dengan loop: 2 baris, komputer yang kerja.

Analogi hari ini

Loop = fotokopi pintar — bukan tulis ulang, tapi tekan tombol “ulang 100×”.

Kita atur berapa kali & kapan berhenti.

Sebelum gas — minggu lalu kamu sudah punya apa?

Rekap Sesi 08 · Mini Project Decision Making

Yang sudah kamu pegang
  • if / elif / else — program bisa memilih jalan
  • input() + int() — program bisa mendengar user
  • Mini Project 1 — penentu kriteria, pemeriksa syarat, kuis bercabang

Programmu sekarang: bisa memutuskan sekali lalu selesai. Hari ini kita tambahkan superpower barunya: memutuskan berkali-kali tanpa capek.

Kuis kilat — coba jawab dulu!
AMau cetak "Selamat!" 100× — pakai apa paling hemat?
jawaban slide berikutnya Tapi kalau kamu kepikiran "aduh capek ngetik 100 baris" — selamat, kamu sudah berpikir seperti programmer yang butuh loop.
!

Peta perjalanan: kamu di barisan ke-9 dari 17 — sudah 53% perjalanan!

Kenapa ngetik ulang 100 baris itu misi mustahil?

for — biarkan komputer yang mengulang

Code — bentuk paling sering
for i in range(5):
    print(i)

# range(stop)
# range(start, stop)
# range(start, stop, step)
3 varian range — hafal ini
range(5)0, 1, 2, 3, 4 — 5 angka dari 0
range(1, 6)1, 2, 3, 4, 5 — mulai 1 sampai 5
range(0,10,2)0, 2, 4, 6, 8 — lompat 2 (genap)
Output — range(5)
0
1
2
3
4

Hitung dari 0, berhenti sebelum 5. Jumlah = 5 putaran.

→

for x in "teks": juga bisa — mengulang per huruf. Bonus di praktik!

0-basedstop tidak ikutstep = lompat
Kalau jumlahnya nggak kamu tahu di awal, gimana?

while — selama benar, ulang

Code — while butuh penghitung
angka = 1
while angka <= 5:
    print(angka)
    angka += 1   # maju, kalau tidak → ∞ loop!

print("Selesai")
Bedanya dengan for

for = tahu jumlahnya di awal (5×, 10×).
while = tidak tahu — ulang sampai kondisi False.

Output
1
2
3
4
5
Selesai

Lupa angka += 1 → angka tetap 1 → kondisi selalu benar → muter selamanya.

!

Aturan emas while: pastikan ada yang mengubah kondisinya di dalam loop.

Ingin loop yang bisa kamu kendalikan mid-jalan?

break henti total · continue skip 1×

Code — henti & lewati
for i in range(1, 6):
    if i == 3:
        continue   # lewati 3
    if i == 5:
        break      # henti di 5 (5 tidak dicetak)
    print(i)
continue

Skip 1 putaran, lanjut berikutnya.

break

Keluar loop seketika, selesai.

Output
1
2
4

3 ter-skip oleh continue, 5 tidak sempat cetak karena break duluan.

Loop yang gak pernah berhenti — siapa yang salah?

Jebakan infinite loop ∞

Contoh berbahaya
angka = 0
while angka < 5:
    print(angka)
    # lupa angka += 1 → ∞ muter selamanya
Obat

angka += 1 di tiap putaran + break darurat. Tes 3 angka sebelum Run penuh.

Jebakan ∞ infinite loop

while True: tanpa break atau tanpa pengubah → muter selamanya. Tekan Ctrl+C untuk hentikan di terminal.

while angka < 5:  # tapi tidak ada angka += 1 → ∞

Cara hentikan

Terminal macet muter? Tekan Ctrl+C — paksa berhenti. Lalu cek pengubah loop.

Giliran kamu — komputer nunggu disuruh

Tugas 1 · Cetak & hitung dengan for

Kerjakan berurutan — 3 level
  1. Pemanasan — cetak angka 1 sampai 10 pakai for + range() (satu baris kode!)
  2. Deret genap — cetak 0, 2, 4, …, 20 — ingat: step itu lompatan
  3. Hitung mundur — cetak 10, 9, 8, …, 1, lalu cetak Lift-off! — pakai step negatif
Petunjuk kalau macet

Tulis di file tugas1.py → Run ▶ → baca output. Mulai dari for i in range(...): lalu tanya: mulai berapa? berhenti sebelum berapa? lompat berapa?

Output yang harus muncul (level 2)
0
2
4
6
…
20
⏱

Waktu: 10 menit. Yang selesai duluan — coba range(1, 11, 2) tanpa dijalankan dulu: tebak output-nya, baru buktikan.

Dua senjata, satu misi — mana yang kamu pilih?

for vs while — kapan pakai yang mana?

for — saat jumlah putaran TAHU
  • Cetak nilai ujian 25 siswa — jelas 25× loop
  • Hitung tabungan 12 bulan — jelas 12× loop
  • Ulang semua huruf di "Python" — jelas 6× loop

Pilih for: "ulang ini N kali"

while — saat berhentinya TERSYARAT
  • Tebak angka sampai jawabannya benar — 1×? 10×? siapa tahu
  • Isi gayung sampai bak penuh — tergantung baknya
  • Tunggu sampai HP mencapai 100% — tergantung baterai

Pilih while: "ulang sampai SYARAT ini patah" — dan wajib ada yang mengubah syaratnya!

?

Trik ingat cepat: tahu berapa kali → for · gak tahu, tergantung keadaan → while. Misi tebak angka nanti pakai while + break — pasangan paling legendaris.

Level up — loop yang menabung & bertanya

Tugas 2 · Akumulasi & kuis berlanjut

Kerjakan berurutan — 2 level
  1. Tabungan 7 hari — nabung 2000 tiap hari pakai loop. Awasi totalnya (variabel total = 0 sebelum loop, di dalam loop total = total + 2000). Cetak total di akhir.
  2. Kuis rata-rata — daftar nilai nilai = [80, 75, 90, 85] (sementara hardcode, minggu depan input dari user). Loop semua nilai, jumlahkan, cetak rata-ratanya.
Pola akumulasi — satu-satunya yang perlu kamu hafal
total = 0
for x in ...:
    total = total + x
print("Total:", total)
Output yang harus muncul (level 1)
Hari 1: total 2000
Hari 2: total 4000
...
Total: 14000

Cetak progres tiap hari di dalam loop, total final di luar loop (perhatikan indentasi!).

⏱

Waktu: 10 menit. Level 2 itu pintu masuk ke rekap nilai — konsep yang sama bakal kamu pakai di Final Project.

Tantangan terakhir sebelum pulang

Challenge · Tebak angka

Misi — buat game sederhana
  1. Pilih angka rahasia: rahasia = 7 (konsol, jangan bilang ke teman sebangku)
  2. Loop: minta user menebak dengan input(), konversi ke int
  3. Bandingkan tebakan dengan angka rahasia: if terlalu besar → kebanyakan! · elif terlalu kecil → kurang! · else tepat → BEKU! Kamu menang! + break
Alat yang kamu pegang

while (syarat: masih belum menang) · break (keluar saat menang) · if/elif/else dari Sesi 07 · input() dari Sesi 05. Semua yang sudah kamu punya — ini digabung, bukan dipelajari baru.

Contoh jalannya program
Tebak angkaku (1-10): 5
kurang!
Tebak angkaku (1-10): 9
kebanyakan!
Tebak angkaku (1-10): 7
BEKU! Kamu menang!
⏱

Waktu: 15 menit. Mentok? Slide berikutnya bahas cara menyelesaikannya — coba dulu minimal 5 menit!

Gimana cara menyelesaikannya?

Pembahasan Challenge — kode lengkap

Salah satu solusi (ada banyak variasi yang benar)
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 🎉")
Kenapa kode ini jalan?
  • while tebakan != rahasia — ulang selama belum tepat
  • input() + int() — tiap putaran, tebakan DIPERBARUI → syarat bisa jadi False
  • Ketika tepat: != jadi False → loop berhenti tanpa break — elegan!
Kalo versi while True, jangan lupa
while True:
  ...
  if tebakan == rahasia:
    break # wajib! kalau tidak → ∞
!

Yang sampai sini dengan usaha sendiri — kamu sudah nulis game loop pertamamu.

Rangkuman · Yang kita bawa pulang

5 poin hari ini — loop dikuasai

01
for i in range(n) — ulang terhitung; range(5) = 0–4, range(1,6) = 1–5
02
range(start, stop, step) — step atur lompatan: 2 genap, -1 mundur
03
while kondisi: — ulang selama benar; wajib ada yang mengubah kondisi di dalam
04
break henti total · continue skip 1 putaran — kendali halus loop
05
Anti infinite loop — pastikan maju (i+=1), cek kondisi, siap Ctrl+C
Loop dikuasai — siap bikin pola! Next → Nested Loop & Pattern
Next & Referensi — langkah selanjutnya

Minggu depan:
Nested Loop

Sesi 10 — Nested Loop & Pattern Programming

Loop di dalam loop — for luar = baris, for dalam = kolom.

Bikin pola persegi, segitiga, piramida dengan * dan angka. Bekal wajib untuk Sesi 11 (List) & Final Project.

intip:
for i in range(3):
  for j in range(3): print("*", end=" ")
  print()  # → 3×3 bintang
nested forpola *baris × kolom
PR iseng (opsional)
  • Cetak 1–20 tapi skip kelipatan 3 pakai continue
  • Hitung jumlah 1–N untuk N=100 — berapa hasilnya?
  • Tidak ada laptop? Tulis 5 baris loop di kertas — minggu depan ketik bareng
Sampai jumpa di Sesi 10! for · while · range · break