gusdya.net Modul & Materi Kuliah
IF25W0305-20261-MA02 Praktikum Pemrograman II Matrikulasi Ganjil 2026/2027

Matrikulasi 02 - Logika Percabangan dan Perulangan

Wanda Gusdya

Pengampu / Penulis Materi

23 Okt 2026 • 5 menit baca • 77 pembaca

CAPAIAN LUARAN PRAKTIKAN

Dalam 170 menit, mahasiswa dapat membentuk kondisi boolean, menggunakan if/else dan loop dengan batas yang benar, serta memvalidasi input numerik. M01 harus dapat dijalankan. Bukti: program rekap nilai yang menolak data di luar kontrak dan selalu berhenti. Kemampuan ini mendasari seluruh operasi struktur data dan kasus batas.

TEORI DASAR

Predikat dan logika. Predikat adalah pernyataan yang menghasilkan true atau false, misalnya nilai>=0. Operator && menyatakan kedua kondisi harus benar, || menyatakan sedikitnya satu benar, dan ! membalik nilai logika. Untuk menerima rentang 0–100, syaratnya nilai>=0 && nilai<=100. Untuk menolak rentang itu, gunakan nilai<0 || nilai>100. Menukar && dan || dapat membuat hampir semua input diterima.

Short circuit. Pada a && b, Java tidak mengevaluasi b jika a sudah false; pada a || b, b tidak diperlukan jika a true. Urutan kondisi dapat menjaga operasi berikutnya aman. Contohnya, i>=0 && i<data.length diperiksa sebelum mengakses data[i]. Operator & dan | pada boolean tidak memiliki perilaku penghentian dini yang sama. Batas array dibahas lebih lanjut pada M04.

Percabangan dan keputusan eksklusif. Rangkaian if/else if/else memilih satu cabang. Urutan syarat menentukan hasil; misalnya nilai>=80 harus diperiksa sebelum nilai>=60 bila kelas kategorinya A/B/C. Dua if terpisah dapat sama-sama berjalan sehingga tidak selalu setara dengan if/else. Pada latihan, pisahkan validasi rentang dari pengelompokan nilai agar input salah tidak memperoleh kategori normal.

Loop dan termination. Loop memerlukan kondisi awal, syarat lanjut, dan perubahan yang membawa proses mendekati selesai. for cocok untuk jumlah langkah yang diketahui; while cocok untuk pengulangan sampai kondisi tertentu. Pada loop indeks 0..n−1, kondisi i<n menghindari satu langkah berlebih. Loop dapat benar pada n=3 tetapi gagal pada n=0 bila kondisi awal atau penambahan indeks keliru. Break mengakhiri loop terdekat, sedangkan continue melewati sisa badan iterasi saat ini.

Sentinel akumulasi dan validasi. Sentinel adalah nilai khusus penanda akhir input, misalnya −1 untuk berhenti membaca nilai 0–100. Sentinel harus diperiksa sebelum ditambahkan ke jumlah. Bedakan jumlah data diterima, data ditolak, dan jumlah nilai. Rata-rata pada nol data tidak boleh membagi dengan nol. Untuk latihan ini, semua token input harus dapat diparse sebagai integer; penanganan teks bukan angka diperluas pada M07.

LANGKAH EKSPERIMEN

Tahap dan durasi Aktivitas dan bukti
Diagnostik 10 menit Uji logika penerimaan nilai 0, 100, dan 101
Konsep 25 menit Baca teori dan buat tabel kondisi
Demonstrasi 20 menit Telusuri contoh loop per iterasi
Latihan terbimbing 40 menit Tambah validasi dan perbaiki off by one
Latihan mandiri 45 menit Buat rekap nilai dengan sentinel −1
Uji dan penjelasan 20 menit Periksa nol data, batas, dan termination
Refleksi 10 menit Jelaskan satu kondisi yang pernah salah
public class M02KendaliAlur {
    public static void main(String[] args) {
        int diterima = 0, ditolak = 0, jumlah = 0;
        int[] input = {80, -5, 100, 60};
        for (int i = 0; i < input.length; i++) {
            int nilai = input[i];
            if (nilai < 0 || nilai > 100) {
                ditolak++;
                continue;
            }
            diterima++;
            jumlah += nilai;
        }
        System.out.println(diterima + "," + ditolak + "," + jumlah);
    }
}

Array pada contoh adalah deretan data contoh; akses lengkapnya dipelajari pada M04. Output harus 3,1,240. Buat tabel jejak dengan kolom i, nilai, kondisi valid, diterima, ditolak, dan jumlah. Jangan hanya menyalin output akhir.

  1. Ganti kondisi penolakan || menjadi && pada salinan. Temukan input yang menunjukkan bug dan jelaskan sebabnya.
  2. Ganti i<input.length menjadi i<=input.length. Identifikasi kapan akses menjadi tidak valid, lalu perbaiki. Jangan menyelesaikan bug dengan membuang elemen terakhir.
  3. Tambahkan kategori A bila nilai>=80, B bila 60–79, C bila di bawah 60. Pastikan setiap nilai valid masuk tepat satu kategori.
  4. Buat program interaktif: baca integer berulang sampai −1. Data di luar 0–100, selain sentinel, dihitung ditolak. Sentinel tidak dihitung diterima maupun ditolak.
  5. Saat tidak ada nilai diterima, tampilkan tidak ada data. Jika ada, tampilkan jumlah, rata-rata, dan banyak nilai per kategori. Pastikan masukan −1 pada awal langsung mengakhiri program.

LATIHAN TUGAS EVALUASI KEMAMPUAN

Deret input hingga berhenti Harapan
−1 Tidak ada data; diterima 0, ditolak 0
0, 100, −1 Diterima 2, jumlah 100, rata-rata 50
101, −5, 80, −1 Ditolak 2, diterima 1, rata-rata 80
59, 60, 79, 80, −1 C=1, B=2, A=1

Kasus kritis: sentinel tidak masuk perhitungan, program tidak membagi nol, dan loop dapat berakhir. Tambahkan satu kasus yang memperlihatkan perbedaan dua if terpisah dengan if/else.

Cek pemahaman dan kunci. Mengapa syarat di luar rentang memakai ||? Cukup satu batas dilanggar untuk menolak data. Mengapa kategori harus diperiksa dari batas yang sesuai? Nilai 90 memenuhi >=60 sekaligus >=80. Apa bukti termination? Untuk input berbasis sentinel, program berhenti ketika sentinel dibaca; untuk loop array, indeks meningkat menuju batas panjang.

Pengumpulan dan remediasi. Kumpulkan source rekap, tabel jejak, dan tabel uji. Jika batas salah, uji tiga nilai di sekitar tiap batas, misalnya 59/60/61 dan 79/80/81, sebelum mencoba input yang lebih panjang.

PUSTAKA

Cosmina, Bab 4–7 untuk ekspresi dan kendali alur. Barker, Bab 2 untuk dasar Java. RPS IF25W0305 untuk kebutuhan validasi dan kasus batas.