0 dari 5 soal kertas sudah kamu periksa sendiri (evaluasi mandiri)
Beberapa soal belum dikerjakan. Kamu tetap bisa membaca panduan, tetapi sebaiknya kerjakan dulu agar evaluasi lebih bermakna.
Angka di atas menunjukkan aktivitas dan penilaian dirimu, bukan nilai penguasaan materi.
Soal 1: Memperbaiki kondisi penentuan obat gratis lansia dan balita
Belum dikerjakan
Deskripsi soal
Sebuah klinik ingin memberikan program obat gratis bagi pasien kelompok usia rentan, yaitu lansia (usia 60 tahun ke atas) ATAU anak balita (usia 5 tahun ke bawah).
Algoritma yang ditulis oleh staf perawat:
1. Baca usia pasien.
2. Jika (usia >= 60 DAN usia <= 5):
Status = "Obat Gratis"
3. Jika tidak:
Status = "Obat Berbayar"
4. Tampilkan Status.
Masalah: Saat sistem digunakan, tidak pernah ada satu pun pasien yang mendapatkan status obat gratis, baik kakek usia 70 tahun maupun bayi usia 2 tahun.
Tuliskan di kertas: (1) letak kesalahan logika dan penyebabnya, (2) perbaikan kondisi yang tepat, (3) hasil pengujian untuk usia 70, 2, dan 25 tahun.
Tujuan latihan
Menemukan kesalahan logika pada operator relasional yang saling meniadakan (kontradiksi) dan memperbaikinya.
Panduan jawaban / contoh solusi
Letak kesalahan: Kondisi (usia >= 60 DAN usia <= 5) menggunakan operator DAN.
Penyebab kegagalan: Tidak ada satu pun angka usia yang bisa bernilai lebih besar atau sama dengan 60 sekaligus lebih kecil atau sama dengan 5 pada saat bersamaan. Kondisi ini secara matematis selalu SALAH (kontradiksi mutlak).
Perbaikan algoritma: Ganti operator "DAN" dengan operator "ATAU":
Jika (usia >= 60 ATAU usia <= 5): Status = "Obat Gratis"
- Usia 25: 25 >= 60 SALAH dan 25 <= 5 SALAH -> Obat Berbayar.
Poin penting yang seharusnya ada
Mengidentifikasi bahwa kondisi "usia >= 60 DAN usia <= 5" adalah kontradiksi yang mustahil terpenuhi.
Mengganti operator penghubung dari DAN menjadi ATAU.
Memastikan batas usia tepat 60 dan 5 tahun tetap tercakup (operator >= dan <=).
Menguji perbaikan pada contoh lansia, balita, dan usia dewasa produktif.
Kriteria evaluasi
Kejelasan dan ketepatan pemahaman masalah
Kelogisan alur pemikiran dan tahapan solusi
Kesesuaian solusi dengan seluruh aturan dan batasan yang ditentukan
Soal 2: Menemukan kesalahan urutan pada transfer saldo
Belum dikerjakan
Deskripsi soal
Diberikan rancangan algoritma pengiriman saldo dompet digital dari Akun A (pengirim) ke Akun B (penerima):
1. Baca nominal transfer.
2. Tambahkan saldo Akun B sebesar nominal transfer.
3. Kurangi saldo Akun A sebesar nominal transfer.
4. Jika saldo Akun A < 0:
Tampilkan pesan "Saldo Anda tidak cukup, transaksi gagal."
Batalkan transaksi.
5. Selesai.
Tuliskan di kertas: (1) mengapa urutan langkah di atas berbahaya dan salah secara logika transaksi, (2) potensi skenario kegagalan data jika sistem mati di tengah proses, (3) susunan algoritma perbaikan yang aman.
Tujuan latihan
Melatih mengidentifikasi kelemahan validasi yang terlambat dan memastikan integritas data dalam urutan proses.
Panduan jawaban / contoh solusi
Kelemahan logika & risiko:
- Validasi dilakukan setelah mutasi data: Saldo penerima sudah terlanjur ditambah dan saldo pengirim sudah terlanjur dikurangi sebelum memastikan apakah pengirim memiliki saldo yang mencukupi.
- Jika koneksi putus atau sistem mati di antara langkah 2 dan 4, penerima sudah menerima uang sementara pembatalan belum sempat dieksekusi, menyebabkan ketidakkonsistenan saldo (saldo tercipta dari ketiadaan).
Urutan algoritma yang benar (Defensive & Atomic):
1. Baca nominal transfer.
2. Validasi input: pastikan nominal > 0.
3. Periksa kecukupan saldo: Jika saldo Akun A < nominal:
Tampilkan "Saldo tidak mencukupi, transaksi dibatalkan."
Berhenti (Selesai).
4. Jika saldo mencukupi:
Kurangi saldo Akun A sebesar nominal.
Tambahkan saldo Akun B sebesar nominal.
Tampilkan "Transfer berhasil."
5. Selesai.
Poin penting yang seharusnya ada
Menjelaskan bahaya validasi saldo yang ditaruh setelah mutasi saldo.
Menyebutkan risiko ketidakkonsistenan data (penerima mendapat dana sebelum validasi sukses).
Memindahkan pengecekan saldo ke awal sebelum mutasi akun mana pun dilakukan.
Memisahkan cabang penolakan langsung (fail-fast) dan cabang transaksi sukses.
Kriteria evaluasi
Kejelasan dan ketepatan pemahaman masalah
Kelogisan alur pemikiran dan tahapan solusi
Kesesuaian solusi dengan seluruh aturan dan batasan yang ditentukan
Soal 3: Menangani data kosong pada perhitungan nilai rata-rata
Belum dikerjakan
Deskripsi soal
Diberikan algoritma penghitung rata-rata nilai kuis kelas:
3. Untuk setiap nilai dalam daftar_nilai: total = total + nilai.
4. rata_rata = total / jumlah_siswa.
5. Tampilkan rata_rata.
Masalah: Pada saat kelas baru dibuka dan belum ada satu pun siswa yang mengumpulkan kuis (daftar_nilai kosong), program mengalami crash fatal (error sistem).
Tuliskan di kertas: (1) penyebab persis terjadinya error crash, (2) pada baris nomor berapa kesalahan terjadi, (3) rancangan perbaikan algoritma agar menangani data kosong secara anggun (graceful).
Tujuan latihan
Melatih mendeteksi potensi pembagian dengan nol (division by zero) saat input berukuran nol atau kosong.
Panduan jawaban / contoh solusi
Penyebab error crash:
- Ketika daftar_nilai kosong, banyak_data(daftar_nilai) menghasilkan jumlah_siswa = 0.
- Pada langkah 4, dilakukan operasi `total / jumlah_siswa` yang sama dengan `0 / 0`. Pembagian dengan angka nol (Division by Zero) adalah operasi aritmetika tidak terdefinisi yang memicu crash/eksepsi fatal di hampir seluruh bahasa pemrograman.
4. Untuk setiap nilai dalam daftar_nilai: total = total + nilai.
5. rata_rata = total / jumlah_siswa.
6. Tampilkan rata_rata.
7. Selesai.
Poin penting yang seharusnya ada
Menjelaskan penyebab crash adalah pembagian dengan nol (total / 0).
Menunjukkan letak baris pembagian rata-rata saat jumlah_siswa bernilai 0.
Menambahkan percabangan pemeriksaan di awal (jika jumlah_siswa == 0) sebelum pembagian.
Memberikan pesan informatif saat data kosong tanpa memicu crash.
Kriteria evaluasi
Kejelasan dan ketepatan pemahaman masalah
Kelogisan alur pemikiran dan tahapan solusi
Kesesuaian solusi dengan seluruh aturan dan batasan yang ditentukan
Soal 4: Memperbaiki perhitungan pajak dan biaya layanan restoran
Belum dikerjakan
Deskripsi soal
Sebuah restoran memberlakukan ketentuan pembayaran:
- Pajak Restoran: 10% dari total harga makanan/minuman.
- Biaya Layanan (Service Charge): 5% dari total harga makanan/minuman.
Staf kasir membuat algoritma penghitungan nota sebagai berikut:
1. Baca subtotal_makanan.
2. total = subtotal_makanan + (subtotal_makanan * 10 / 100).
3. total = total + (total * 5 / 100).
4. Tampilkan total.
Keluhan: Pelanggan memprotes bahwa biaya layanan yang ditagihkan lebih besar dari 5% harga makanan, dan pemilik restoran dituduh memungut pajak ganda.
Tuliskan di kertas: (1) bukti matematis letak kesalahan perhitungan di atas, (2) penjelasan mengapa langkah tersebut merugikan pelanggan, (3) algoritma perbaikan yang menghitung pajak dan layanan masing-masing dari subtotal makanan asli.
Tujuan latihan
Melatih ketelitian perhitungan persentase berantai versus persentase nilai dasar dalam logika finansial.
- Langkah 3: layanan dihitung dari total baru: 110.000 * 5% = Rp5.500, total akhir = Rp115.500.
- Seharusnya biaya layanan 5% dari Rp100.000 adalah Rp5.000, total akhir Rp115.000. Selisih Rp500 adalah biaya layanan yang dikenakan di atas pajak (pajak dikenai biaya layanan).
5. Tampilkan rincian: subtotal, pajak, biaya layanan, dan total akhir.
6. Selesai.
Poin penting yang seharusnya ada
Menunjukkan bahwa biaya layanan terhitung 5,5% dari subtotal karena dihitung di atas nilai yang sudah dipajaki.
Menjelaskan prinsip bahwa pajak dan layanan harus dihitung independen dari subtotal dasar.
Menyusun rumus perbaikan yang menghitung pajak dan layanan secara terpisah.
Menampilkan rincian setiap komponen secara transparan.
Kriteria evaluasi
Kejelasan dan ketepatan pemahaman masalah
Kelogisan alur pemikiran dan tahapan solusi
Kesesuaian solusi dengan seluruh aturan dan batasan yang ditentukan
Soal 5: Memeriksa kasus batas pada sensor beban lift gedung
Belum dikerjakan
Deskripsi soal
Sebuah lift gedung kantor memiliki batas kapasitas beban maksimal 500 kg.
Algoritma kontrol pintu dan alarm lift saat ini:
1. Baca total_beban dari sensor lantai lift.
2. Jika total_beban > 500:
Bunyikan alarm dan biarkan pintu terbuka.
3. Jika tidak:
Tutup pintu dan jalankan lift.
Masalah kasus batas (Boundary Edge Cases):
- Saat sekelompok orang masuk dengan beban tepat 500.0 kg, lift tetap berjalan. Namun teknisi menemukan bahwa sensor memiliki margin fluktuasi +-1.5 kg.
- Saat beban 500.2 kg, pintu tetap menutup karena sensor membaca pembulatan ke bawah jika tidak ditentukan presisinya.
Tuliskan di kertas: (1) evaluasi kondisi batas saat beban tepat 500 kg dan sedikit di atasnya, (2) risiko keamanan jika toleransi sensor diabaikan, (3) perbaikan algoritma dengan aturan batas aman (safety threshold) yang jelas.
Tujuan latihan
Melatih analisis kasus batas (boundary value test) dan penanganan toleransi sensor pada sistem keamanan fisik.
Panduan jawaban / contoh solusi
Evaluasi kasus batas:
- Kondisi `> 500` berarti beban tepat 500.00 kg dianggap lolos. Namun jika ada penumpang bergerak sedikit saja, beban dinamis sesaat bisa melonjak melewati batas aman.
- Jika pembacaan sensor memiliki ketidakpastian +-1.5 kg, beban riil 501 kg mungkin terukur 499.5 kg sehingga lift tetap berjalan dengan beban berlebih berbahaya.
Rancangan perbaikan batas aman:
1. Tentukan batas aman operasional dengan margin keamanan (misal batas cut-off alarm = 500 kg, dengan toleransi pencegahan).
2. Baca beban sensor dengan presisi floating-point.