Lewati ke konten

Studi Kasus: Sistem Penilaian Siswa

Setelah studi kasus ini, kamu dapat menggabungkan operator perbandingan, operator logika, dan percabangan untuk menentukan status dan kategori nilai siswa.


Studi kasus ini mensimulasikan sistem penilaian sederhana yang dipakai guru untuk mengelola hasil ujian. Program menerima data siswa lalu menentukan:

  • Apakah siswa Lulus, Remedial, atau Tidak Valid
  • Kategori nilai: Sangat Baik, Baik, Cukup, Perlu Bimbingan

Sebelum membuka editor, rencanakan logikanya:

Kondisi Status
nilai >= 90 Sangat Baik — Lulus
nilai >= 75 Baik — Lulus
nilai >= 60 Cukup — Remedial
nilai < 60 Perlu Bimbingan — Remedial
nilai < 0 atau > 100 Tidak Valid

Selain itu, tambahkan syarat kehadiran minimal 75%.

🖥️ Output
Lulus = nilai >= 75 && kehadiran >= 75

Guru memeriksa nilai dan absensi sebelum mengumumkan hasil:

🖥️ Output
1. Periksa data valid: nilai antara 0-100?
2. Periksa kehadiran: minimal 75%?
3. Periksa nilai akhir: masuk kategori mana?
4. Umumkan hasil

🖥️ Output
nilai valid (0-100)?
├─ tidak → "Data Tidak Valid"
└─ ya
kehadiran >= 75?
ya │ tidak
nilai >= 90? → Sangat Baik — Lulus
nilai >= 75? → Baik — Lulus
nilai >= 60? → Cukup — Remedial
lainnya → Perlu Bimbingan — Remedial

Buat src/bab2/studi-kasus-penilaian.ts:

📄 TypeScript
const namaSiswa: string = "Dewi Rahayu"
const nilaiAkhir: number = 83
const persentaseKehadiran: number = 88
const batasKehadiran: number = 75
const nilaiValid: boolean = nilaiAkhir >= 0 && nilaiAkhir <= 100
let kategori: string
let status: string
let catatan: string
if (!nilaiValid) {
kategori = "Tidak Valid"
status = "Tidak Dapat Diproses"
catatan = "Harap periksa kembali nilai yang dimasukkan."
} else if (persentaseKehadiran < batasKehadiran) {
kategori = "Kehadiran Kurang"
status = "Tidak Lulus"
catatan = `Kehadiran ${persentaseKehadiran}% di bawah batas minimal ${batasKehadiran}%.`
} else if (nilaiAkhir >= 90) {
kategori = "Sangat Baik"
status = "Lulus"
catatan = "Pertahankan prestasi yang luar biasa!"
} else if (nilaiAkhir >= 75) {
kategori = "Baik"
status = "Lulus"
catatan = "Kamu lulus. Tingkatkan lagi di semester berikutnya."
} else if (nilaiAkhir >= 60) {
kategori = "Cukup"
status = "Remedial"
catatan = "Kamu perlu mengikuti remedial. Jangan menyerah!"
} else {
kategori = "Perlu Bimbingan"
status = "Remedial"
catatan = "Silakan temui wali kelas untuk bimbingan lebih lanjut."
}
const laporan: string = `
=========================================
HASIL PENILAIAN AKHIR
=========================================
Nama : ${namaSiswa}
Nilai Akhir : ${nilaiAkhir}
Kehadiran : ${persentaseKehadiran}%
---
--------------------------------------
Status : ${status}
Kategori : ${kategori}
---
--------------------------------------
Catatan : ${catatan}
=========================================
`
console.log(laporan)

Jalankan:

🖥️ Output
tsx src/bab2/studi-kasus-penilaian.ts

🖥️ Output
=========================================
HASIL PENILAIAN AKHIR
=========================================
Nama : Dewi Rahayu
Nilai Akhir : 83
Kehadiran : 88%
---
--------------------------------------
Status : Lulus
Kategori : Baik
---
--------------------------------------
Catatan : Kamu lulus. Tingkatkan lagi di semester berikutnya.
=========================================

📄 TypeScript
const nilaiValid: boolean = nilaiAkhir >= 0 && nilaiAkhir <= 100

Operator && memastikan nilai berada antara 0 dan 100. Salah satu syarat saja tidak cukup.

📄 TypeScript
if (!nilaiValid) {

!nilaiValid berarti jika nilai tidak valid. Program langsung memberi status tidak dapat diproses.

Jika data valid, program mengecek kehadiran lebih dulu sebelum memeriksa nilai.

Seperti yang direncanakan: dari Sangat Baik ke Perlu Bimbingan, diperiksa dari tertinggi ke terendah.

${} memasukkan variabel ke dalam teks multi-baris.


Coba nilai dan kehadiran berbeda:

Skenario nilai kehadiran
Sangat baik 95 95
Tidak hadir cukup 85 60
Nilai tidak valid 110 80
Perlu bimbingan 45 80

📄 TypeScript
} else if (nilaiAkhir >= 60) {
status = "Remedial"
} else if (nilaiAkhir >= 75) {
status = "Lulus"
}

Urutan kondisi salah. Nilai 82 masuk >= 60 dulu, sehingga status Lulus tidak pernah tercapai.


Tambahkan satu fitur ke studi kasus:

  • Nilai praktik terpisah dari nilai teori.
  • Rata-rata dihitung dari keduanya.
  • Laporan menyertakan nilai teori, praktik, dan rata-rata.

  • Perancangan logika lebih dulu membuat kode lebih mudah.
  • Validasi data sebelum melanjutkan ke logika utama adalah kebiasaan baik.
  • Urutan kondisi else if mempengaruhi hasil.
  • Template literal multi-baris berguna untuk laporan terminal.