Studi Kasus: Sistem Absensi Siswa
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah studi kasus ini, kamu dapat menggabungkan for loop, continue, break, dan kondisi untuk membangun program absensi yang logis.
Pendahuluan
Section titled “Pendahuluan”Absensi adalah bagian rutin kehidupan sekolah. Program absensi sederhana perlu menampilkan daftar siswa, melewati yang tidak hadir, dan berhenti jika ada kejadian tertentu. Kita akan membangunnya langkah demi langkah.
Perancangan Sebelum Coding
Section titled “Perancangan Sebelum Coding”Data yang dibutuhkan:
- Array nama siswa
- Status kehadiran setiap siswa (hadir/tidak hadir)
- Aturan: lewati siswa tidak hadir, hentikan jika ada pengumuman darurat
Struktur yang akan dipakai:
for setiap siswa: Jika tidak hadir → continue (lewati) Jika ada pengumuman darurat → break (hentikan) Panggil nama siswaVisual Illustration
Section titled “Visual Illustration”Siswa 1 → hadir? ──tidak──► continue → Siswa 2 │ ya │ Darurat? ──ya──► break → SELESAI ABSENSI │ tidak │ Panggil nama → Siswa berikutnyaMari Mencoba
Section titled “Mari Mencoba”Buat src/bab3/studi-kasus-absensi.ts:
// Data siswaconst namaSiswa: string[] = [ "Andi", "Budi", "Citra", "Dian", "Eko", "Fira", "Gita", "Hani", "Ivan", "Jeni"]
// Status kehadiran: true = hadir, false = tidak hadirconst kehadiran: boolean[] = [ true, true, false, true, true, false, true, false, true, true]
// Siswa setelah siapa absensi dihentikan (contoh: siswa ke-7 = Gita)const hentikanSetelahSiswa: string = "Gita"
let jumlahHadir: number = 0let nomorUrut: number = 0
console.log("=".repeat(40))console.log(" SISTEM ABSENSI SISWA")console.log("=".repeat(40))
for (let i = 0; i < namaSiswa.length; i++) { const nama = namaSiswa[i] const hadir = kehadiran[i]
// Lewati siswa yang tidak hadir if (!hadir) { console.log(`${i + 1}. ${nama} — TIDAK HADIR (dilewati)`) continue }
nomorUrut++ jumlahHadir++ console.log(`${i + 1}. ${nama} — Hadir (urutan ke-${nomorUrut})`)
// Hentikan absensi setelah siswa tertentu if (nama === hentikanSetelahSiswa) { console.log(`\nAbsensi dihentikan setelah ${nama}.`) break }}
console.log("\n" + "=".repeat(40))console.log(`Hasil Absensi:`)console.log(` Total dipanggil (hadir): ${jumlahHadir}`)console.log(` Total siswa: ${namaSiswa.length}`)console.log("=".repeat(40))Jalankan:
tsx src/bab3/studi-kasus-absensi.tsOutput
Section titled “Output”======================================== SISTEM ABSENSI SISWA========================================1. Andi — Hadir (urutan ke-1)2. Budi — Hadir (urutan ke-2)3. Citra — TIDAK HADIR (dilewati)4. Dian — Hadir (urutan ke-3)5. Eko — Hadir (urutan ke-4)6. Fira — TIDAK HADIR (dilewati)7. Gita — Hadir (urutan ke-5)
Absensi dihentikan setelah Gita.
========================================Hasil Absensi: Total dipanggil (hadir): 5 Total siswa: 10========================================Penjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”Data awal
Section titled “Data awal”const namaSiswa: string[] = ["Andi", ...]const kehadiran: boolean[] = [true, ...]Dua array yang berindeks sama. namaSiswa[0] berpasangan dengan kehadiran[0].
Kontrol continue
Section titled “Kontrol continue”if (!hadir) { console.log(`... TIDAK HADIR (dilewati)`) continue}!hadir membalik boolean. Jika hadir = false, maka !hadir = true. Blok dijalankan dan continue melewati kode setelahnya dalam putaran ini.
Penghitung terpisah
Section titled “Penghitung terpisah”nomorUrut++jumlahHadir++nomorUrut menghitung urutan siswa yang hadir (bukan nomor absen). jumlahHadir menghitung total.
Kontrol break
Section titled “Kontrol break”if (nama === hentikanSetelahSiswa) { break}Setelah siswa tertentu (Gita), absensi dihentikan. Siswa setelahnya (Hani, Ivan, Jeni) tidak dipanggil.
Laporan akhir
Section titled “Laporan akhir”"=".repeat(40) membuat garis dari 40 karakter = — cara mudah membuat garis pemisah.
Pengembangan: Hitung Persentase Kehadiran
Section titled “Pengembangan: Hitung Persentase Kehadiran”Tambahkan ini sebelum baris terakhir:
const persen = (jumlahHadir / namaSiswa.length * 100).toFixed(1)console.log(` Persentase kehadiran: ${persen}%`)Kesalahan yang Sering Terjadi
Section titled “Kesalahan yang Sering Terjadi”if (kehadiran[i] = false) { // salah: mengisi nilai, bukan membandingkanGunakan === untuk perbandingan, bukan =.
Latihan
Section titled “Latihan”Kembangkan studi kasus ini:
- Hitung dan tampilkan berapa siswa yang tidak hadir.
- Tampilkan daftar nama siswa yang tidak hadir.
- Tentukan persentase kehadiran dari yang sudah dipanggil (bukan keseluruhan).
Ringkasan
Section titled “Ringkasan”fordengan indeks berguna saat dua array berindeks sama digunakan bersamaan.continuemelewati siswa tidak hadir tanpa menghentikan loop.breakmenghentikan absensi lebih awal berdasarkan kondisi.- Pisahkan penghitung (nomor urut hadir vs nomor absen total) untuk akurasi.