🔁 Loops

Mengulang blok kode: for, while, dan do-while.

Loop (perulangan) digunakan untuk mengulang blok kode sebanyak N kali atau selama suatu kondisi masih benar. Tanpa loop, kita harus menuliskan kode yang sama berulang-ulang — sangat tidak efisien.

for

Untuk pengulangan dengan jumlah iterasi diketahui.

while

Untuk pengulangan selama kondisi benar (cek di awal).

do-while

Minimal 1 kali eksekusi (cek di akhir).


📌 0. Kenapa Butuh Loop: Tanpa Loop vs Dengan Loop

Mari mulai dari tugas sederhana: mencetak angka 1 sampai 5. Ada dua cara melakukannya.

❌ Cara 1: Tanpa Loop (pengulangan manual)

Tulis satu printf untuk setiap angka. Bisa jalan — tapi kodenya repetitif.

Output:
✅ Cara 2: Dengan Loop (for)

printf ditulis hanya 1 kali — loop yang mengulanginya otomatis. Coba ubah angka 5 menjadi 100 lalu Run lagi!

Output:

Kedua program di atas menghasilkan output yang sama persis:

1 2 3 4 5
⚡ Perbandingan Efisiensi
TugasTanpa loopDengan loop
Cetak 1 s.d. 55 baris printf1 baris printf
Cetak 1 s.d. 100100 baris printf1 baris printf (ubah 5 → 100)
Cetak 1 s.d. 10001000 baris printf1 baris printf (ubah 5 → 1000)
Ubah format outputEdit semua baris satu-satuEdit 1 baris saja
Panjang kode saat N bertambahBertambah terus (N baris)Tetap sama (selalu 3 baris)
💥 Kalau harus mencetak sampai 1000?
  • Tanpa loop: kamu harus menulis 1000 baris printf. Kalau ada salah ketik, harus mengecek baris demi baris. Kodenya membengkak dan sulit dirawat.
  • Dengan loop: cukup ubah angka 5 menjadi 1000 — satu angka. Panjang kode tetap sama.
💡 Prinsip penting: setiap kali kamu merasa menulis kode yang sama berulang-ulang, itu sinyal bahwa kamu butuh loop. Semakin banyak pengulangan, semakin besar manfaatnya. Loop tidak membuat program berjalan lebih cepat — loop membuat kodemu lebih pendek, lebih rapi, dan jauh lebih mudah dirawat.

📌 1. Loop for

Format: for (inisialisasi; kondisi; increment/decrement)

for (int i = 1; i <= 5; i++) { // Blok kode diulang selama i <= 5 }

Alurnya: (1) inisialisasi dijalankan sekali → (2) cek kondisi → (3) jika benar, jalankan blok → (4) increment → (5) kembali ke (2).

Output:

📌 2. Loop while

Kondisi dicek sebelum badan loop. Jika kondisi langsung salah, badan loop tidak pernah dijalankan.

while (kondisi) { // Blok kode diulang selama kondisi benar }
Output:
⚠️ Jebakan: lupa memperbarui variabel pengendali (misal lupa i++) → infinite loop (program macet).

📌 3. Loop do-while

Kondisi dicek setelah badan loop — sehingga badan loop pasti berjalan minimal 1 kali, meskipun kondisinya langsung salah.

do { // Blok kode (pasti jalan minimal 1x) } while (kondisi); // Jangan lupa titik koma!
Output:

📌 4. break dan continue

break — hentikan seluruh loop
for (int i = 1; i <= 10; i++) { if (i == 4) break; // Loop berhenti total di i=4 printf("%d ", i); } // Output: 1 2 3
continue — lewati iterasi ini
for (int i = 1; i <= 5; i++) { if (i == 3) continue; // Lewati i=3 saja printf("%d ", i); } // Output: 1 2 4 5
Output:

📌 5. Nested Loops (Loop Bertingkat)

Loop di dalam loop — loop dalam berjalan selesai penuh untuk setiap 1 iterasi loop luar. Klasik: mencetak pola.

Output:

⚖️ Perbandingan Tiga Loop

Aspekforwhiledo-while
Cek kondisiDi awalDi awalDi akhir
Minimal eksekusi0 kali0 kali1 kali
Paling cocok untukJumlah iterasi diketahuiKondisi tidak pastiMenu, validasi input (ulang sampai benar)
StrukturSemua di satu barisInisialisasi di luarInisialisasi di luar
💡 Aturan praktis: jumlah iterasi diketahui → for. Tidak tahu berapa kali, cek dulu → while. Harus jalan minimal sekali → do-while.

🧠 Latihan

Buatlah program yang:

  1. Mencetak bilangan 1 sampai 100, tapi yang habis dibagi 5 tampilkan kelipatannya (1, 2, 3, ...) — pakai for.
  2. Mencari jumlah digit sebuah angka (misal 472 → 3 digit) — pakai while.
  3. Mencetak pola piramida bintang 5 baris — pakai nested loop.
  4. Mencari bilangan prima pertama 10 buah — pakai for + break.