Studi Kasus: Sistem Penilaian Siswa
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah studi kasus ini, kamu dapat menggabungkan operator perbandingan, operator logika, dan percabangan untuk menentukan status dan kategori nilai siswa.
Pendahuluan
Section titled “Pendahuluan”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
Perancangan Sebelum Coding
Section titled “Perancangan Sebelum Coding”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%.
Lulus = nilai >= 75 && kehadiran >= 75Analogi Kehidupan Sehari-hari
Section titled “Analogi Kehidupan Sehari-hari”Guru memeriksa nilai dan absensi sebelum mengumumkan hasil:
1. Periksa data valid: nilai antara 0-100?2. Periksa kehadiran: minimal 75%?3. Periksa nilai akhir: masuk kategori mana?4. Umumkan hasilVisual Illustration
Section titled “Visual Illustration”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 — RemedialMari Mencoba
Section titled “Mari Mencoba”Buat src/bab2/studi-kasus-penilaian.ts:
const namaSiswa: string = "Dewi Rahayu"const nilaiAkhir: number = 83const persentaseKehadiran: number = 88const batasKehadiran: number = 75
const nilaiValid: boolean = nilaiAkhir >= 0 && nilaiAkhir <= 100
let kategori: stringlet status: stringlet 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:
tsx src/bab2/studi-kasus-penilaian.tsOutput
Section titled “Output”========================================= HASIL PENILAIAN AKHIR=========================================Nama : Dewi RahayuNilai Akhir : 83Kehadiran : 88%---
--------------------------------------Status : LulusKategori : Baik---
--------------------------------------Catatan : Kamu lulus. Tingkatkan lagi di semester berikutnya.=========================================Penjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”Validasi nilai
Section titled “Validasi nilai”const nilaiValid: boolean = nilaiAkhir >= 0 && nilaiAkhir <= 100Operator && memastikan nilai berada antara 0 dan 100. Salah satu syarat saja tidak cukup.
Cabang pertama: data tidak valid
Section titled “Cabang pertama: data tidak valid”if (!nilaiValid) {!nilaiValid berarti jika nilai tidak valid. Program langsung memberi status tidak dapat diproses.
Cabang kehadiran
Section titled “Cabang kehadiran”Jika data valid, program mengecek kehadiran lebih dulu sebelum memeriksa nilai.
Cabang kategori
Section titled “Cabang kategori”Seperti yang direncanakan: dari Sangat Baik ke Perlu Bimbingan, diperiksa dari tertinggi ke terendah.
Template literal laporan
Section titled “Template literal laporan”${} memasukkan variabel ke dalam teks multi-baris.
Ubah Data untuk Eksperimen
Section titled “Ubah Data untuk Eksperimen”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 |
Kesalahan Umum
Section titled “Kesalahan Umum”} 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.
Latihan
Section titled “Latihan”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.
Ringkasan
Section titled “Ringkasan”- Perancangan logika lebih dulu membuat kode lebih mudah.
- Validasi data sebelum melanjutkan ke logika utama adalah kebiasaan baik.
- Urutan kondisi
else ifmempengaruhi hasil. - Template literal multi-baris berguna untuk laporan terminal.