Algorithms and Programming Java 4
Komputer sangat unggul dalam mengerjakan hal yang sama berulang kali tanpa lelah. Pada pertemuan ini kita belajar instruksi perulangan (for, while, do-while), cara mengendalikannya dengan break dan continue, serta membuat pola dan program interaktif dengan nested loop.
Pendahuluan
Tujuan Pembelajaran
Setelah pertemuan ini, kamu diharapkan mampu:
- Menggunakan
for,while, dando-whilepada kasus yang sesuai. - Mengendalikan perulangan dengan
break,continue, dan label. - Membuat nested loop untuk pola dan tabel.
- Menghindari kesalahan umum seperti infinite loop dan off-by-one.
- Menggabungkan perulangan dengan kondisi dan validasi input (menu interaktif).
Alokasi Waktu Pertemuan Ini
| Sesi | Topik | Durasi |
|---|---|---|
| Materi 1 | Review & konsep perulangan | 10 menit |
| Materi 2 | Perulangan for |
25 menit |
| Materi 3 | Perulangan while |
15 menit |
| Materi 4 | Perulangan do-while |
10 menit |
| Materi 5 | break, continue, dan label |
15 menit |
| Materi 6 | Nested loop & pola | 20 menit |
| Materi 7 | Kesalahan umum pada perulangan | 10 menit |
| Materi 8 | Studi kasus: menu interaktif & tebak angka | 15 menit |
| Total Materi | 2 jam | |
| Latihan | Latihan Mandiri | 1 jam |
| Total | 3 jam |
Review Singkat
if - else if - elsedanswitchexpression untuk memilih alur program.hasNextInt()untuk memvalidasi input sebelum dibaca.- Operator
++,--,+=untuk mengubah nilai variabel.
Konsep Perulangan
Tanpa perulangan, mencetak “Halo” sebanyak 5 kali harus menulis println lima kali, dan 1000 kali tentu tidak masuk akal. Perulangan memungkinkan sebuah blok kode dijalankan berulang selama kondisi terpenuhi.
Setiap perulangan memiliki tiga komponen:
- Inisialisasi: nilai awal penghitung.
- Kondisi: syarat agar perulangan tetap berjalan.
- Update: perubahan penghitung agar kondisi akhirnya
false.
| Perulangan | Cocok Digunakan Saat |
|---|---|
for |
Jumlah pengulangan sudah diketahui |
while |
Jumlah pengulangan tidak diketahui, kondisi diperiksa di awal |
do-while |
Blok kode minimal dijalankan sekali, kondisi diperiksa di akhir |
Perulangan for
1 | for (inisialisasi; kondisi; update) { |
1 | public class Main { |
Alur eksekusi: int i = 1 dijalankan sekali, kemudian kondisi i <= 5 diperiksa. Jika true, blok dijalankan, lalu i++, dan kembali memeriksa kondisi. Jika false, perulangan berhenti.
Variasi for
1 | // Menghitung mundur |
Variabel i hanya dikenal di dalam perulangan for (scope). Jika hasilnya dibutuhkan setelah perulangan, deklarasikan variabel penampung (seperti total) di luar.
Perulangan pada String
1 | String kata = "Java"; |
Bentuk for (tipe item : kumpulan) disebut enhanced for atau for-each, akan dibahas lebih dalam pada Pertemuan 5 bersama array.
Perulangan while
Kondisi diperiksa sebelum blok dijalankan. Jika kondisi sejak awal false, blok tidak dijalankan sama sekali.
1 | int i = 1; |
while cocok ketika jumlah pengulangan bergantung pada data. Contoh: menjumlahkan digit sebuah bilangan.
1 | int angka = 12345; |
Contoh lain, membalik sebuah bilangan:
1 | int asli = 1234; |
Perulangan do-while
Kondisi diperiksa setelah blok dijalankan, sehingga blok pasti dijalankan minimal satu kali. Sangat cocok untuk menu dan validasi input.
1 | import java.util.Scanner; |
Perhatikan titik koma ; setelah while (...) pada do-while, ini wajib.
break, continue, dan Label
| Kata Kunci | Fungsi |
|---|---|
break |
Menghentikan perulangan seluruhnya |
continue |
Melewati sisa blok pada iterasi ini, lanjut ke iterasi berikutnya |
1 | // break: berhenti saat menemukan angka pertama yang habis dibagi 7 |
Label pada Nested Loop
break biasa hanya keluar dari perulangan terdalam. Gunakan label untuk keluar dari perulangan luar:
1 | luar: |
Nested Loop dan Pola
Nested loop adalah perulangan di dalam perulangan. Perulangan luar biasanya mewakili baris, perulangan dalam mewakili kolom.
Tabel Perkalian
1 | for (int i = 1; i <= 5; i++) { |
Output:1
2
3
4
51 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
Pola Segitiga
1 | int tinggi = 5; |
Output:1
2
3
4
5*
**
***
****
*****
Pola Piramida
1 | int tinggi = 4; |
Output:1
2
3
4 *
***
*****
*******
Cara berpikir untuk pola: tentukan berapa baris, lalu pada setiap baris tentukan berapa spasi dan berapa simbol sebagai fungsi dari nomor baris.
Kesalahan Umum pada Perulangan
| Kesalahan | Contoh | Akibat |
|---|---|---|
| Infinite loop: lupa update | while (i <= 5) { ... } tanpa i++ |
Program tidak pernah berhenti (hentikan dengan Ctrl + C) |
| Off-by-one | for (i = 0; i <= 5; i++) padahal ingin 5 kali |
Berjalan 6 kali |
| Titik koma setelah for | for (...); |
Blok { } hanya dijalankan sekali setelah perulangan |
| Mengubah variabel loop di dalam blok | for (...) { i += 2; } |
Perulangan melompat tak terduga |
| Indeks melebihi batas | i <= kata.length() |
StringIndexOutOfBoundsException |
Tips debugging: tambahkan System.out.println untuk mencetak nilai variabel di setiap iterasi dan cek apakah berubah sesuai harapan.
Studi Kasus
Menu Interaktif dengan do-while
Menu yang terus tampil sampai pengguna memilih keluar. Pada pertemuan sebelumnya menu hanya berjalan sekali.
1 | import java.util.Scanner; |
Game Tebak Angka
Komputer memilih angka rahasia 1-100, pemain menebak sampai benar dengan petunjuk “terlalu besar” atau “terlalu kecil”.
1 | import java.util.Random; |
Mengecek Bilangan Prima
Bilangan prima hanya habis dibagi 1 dan dirinya sendiri. Cukup periksa pembagi sampai akar kuadrat bilangannya.
1 | int n = 29; |
Faktorial dan Fibonacci
1 | // Faktorial: 5! = 5 x 4 x 3 x 2 x 1 = 120 |
Catatan: long hanya mampu menampung hingga 20!. Untuk faktorial yang lebih besar gunakan java.math.BigInteger.
Ringkasan
| Kebutuhan | Gunakan |
|---|---|
| Jumlah ulangan diketahui | for |
| Ulangi selama kondisi, belum tahu berapa kali | while |
| Minimal sekali (menu, validasi input) | do-while |
| Berhenti lebih awal | break |
| Lewati satu iterasi | continue |
| Tabel, matriks, pola | Nested loop |
Latihan
Kerjakan latihan berikut untuk mengetes pemahamanmu. Total durasi latihan adalah 60 menit.
| No | Latihan | Estimasi |
|---|---|---|
| 1 | Deret Bilangan | 10 menit |
| 2 | Tabel Perkalian | 10 menit |
| 3 | Faktorial & Fibonacci | 10 menit |
| 4 | Pola Bintang & Angka | 10 menit |
| 5 | Bilangan Prima | 10 menit |
| 6 | Mini Project: ATM Berulang & Tebak Angka | 10 menit |
| Total | 60 menit |
Latihan 1: Deret Bilangan (estimasi 10 menit)
Buat program yang meminta bilangan bulat N, lalu menampilkan:
- Deret 1 sampai N.
- Hanya bilangan genap dari 1 sampai N.
- Total penjumlahan 1 sampai N dan rata-ratanya.
- Hitung mundur dari N sampai 1, kemudian cetak
"Selesai!".
Latihan 2: Tabel Perkalian (estimasi 10 menit)
- Input angka
N, tampilkan tabel perkalian N dari 1 sampai 10:1
2
37 x 1 = 7
7 x 2 = 14
... - Tampilkan tabel perkalian 1 sampai 9 dalam bentuk matriks (nested loop) dengan
printf("%4d").
Latihan 3: Faktorial & Fibonacci (estimasi 10 menit)
- Input
N, hitung dan tampilkanN!(gunakanlong). - Input
N, tampilkan N suku pertama deret Fibonacci. - Hitung berapa jumlah digit dari bilangan yang diinput (gunakan
while). - Periksa apakah sebuah bilangan merupakan palindrom (contoh: 12321) dengan membaliknya menggunakan
while.
Latihan 4: Pola Bintang & Angka (estimasi 10 menit)
Input tinggi pola N (contoh N = 5), lalu cetak pola berikut:
1 | Pola A: Pola B: Pola C: |
Pola A: segitiga bintang terbalik. Pola B: segitiga angka rata kiri. Pola C: piramida bintang.
Latihan 5: Bilangan Prima (estimasi 10 menit)
- Input
N, tampilkan semua bilangan prima dari 2 sampai N. - Tampilkan jumlah seluruh bilangan prima yang ditemukan.
- Tantangan: tampilkan faktorisasi prima dari sebuah bilangan, contoh
60 = 2 x 2 x 3 x 5.
Latihan 6: Mini Project (estimasi 10 menit)
Pilih salah satu:
A. ATM Berulang: lanjutkan ATM dari pertemuan sebelumnya. Menu ditampilkan terus-menerus dengan do-while hingga pengguna memilih keluar. Tambahkan fitur riwayat sederhana: jumlah transaksi yang sudah dilakukan.
B. Tebak Angka Plus: kembangkan game tebak angka:
- Batasi maksimal 7 kesempatan menebak.
- Validasi input menggunakan
hasNextInt(). - Setelah selesai, tanyakan
"Main lagi? (y/n)"dan ulangi permainan jikay. - Tampilkan skor berdasarkan sisa kesempatan.
Tantangan tambahan: buat kalkulator yang menjumlahkan angka-angka yang diinput pengguna terus-menerus hingga pengguna mengetik 0, lalu tampilkan jumlah, banyak data, dan rata-ratanya.


