Challenge BAB 1
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah mengerjakan challenge ini, kamu akan mampu:
- Mengukur pemahaman sendiri tentang variabel dan tipe data
- Menulis program kecil tanpa menyalin contoh
- Mengenali konsep mana yang masih perlu dipelajari ulang
Pendahuluan
Section titled “Pendahuluan”Sekarang saatnya menguji diri sendiri. Sepuluh challenge di halaman ini disusun dari mudah ke menengah.
Jangan melihat contoh kode halaman lain dulu. Coba kerjakan dengan pemahamanmu sendiri. Jika benar-benar buntu, baca ulang halaman materi yang berkaitan, lalu coba lagi.
Cara Menjalankan Jawaban
Section titled “Cara Menjalankan Jawaban”Setelah membuat file, jalankan dengan pola berikut:
tsx src/bab1/challenge/soal-1.tsGanti soal-1.ts sesuai nomor soal yang sedang dikerjakan.
Challenge 1 — Data Diri Dasar
Section titled “Challenge 1 — Data Diri Dasar”Tingkat: Mudah
Buat tiga variabel:
namabertipe stringumurbertipe numbersudahAktifbertipe boolean
Tampilkan ketiganya dengan console.log().
Target output contoh:
Nama: PutraUmur: 17Status aktif: trueChallenge 2 — let atau const?
Section titled “Challenge 2 — let atau const?”Tingkat: Mudah
Buat program dengan data berikut:
- Nama sekolah (tidak berubah)
- Tahun masuk (tidak berubah)
- Kelas saat ini (bisa berubah)
Pilih let atau const dengan tepat. Lalu ubah kelas saat ini menjadi kelas berikutnya dan tampilkan sebelum/sesudahnya.
Challenge 3 — Hitung Nilai
Section titled “Challenge 3 — Hitung Nilai”Tingkat: Mudah
Buat tiga variabel nilai angka:
- Matematika
- Bahasa Indonesia
- Bahasa Inggris
Hitung total dan rata-ratanya. Tampilkan hasil dengan template literal.
Target output contoh:
Total nilai: 255Rata-rata: 85Challenge 4 — Cek Kelulusan
Section titled “Challenge 4 — Cek Kelulusan”Tingkat: Mudah
Buat variabel nilaiAkhir. Buat boolean lulus yang bernilai true jika nilai minimal 75.
Tampilkan salah satu teks berikut menggunakan ternary operator:
Status: LULUSatau:
Status: BELUM LULUSChallenge 5 — Rapikan Nama
Section titled “Challenge 5 — Rapikan Nama”Tingkat: Mudah
Buat variabel string berisi nama dengan spasi berlebihan, misalnya:
const namaInput = " putra ramadhan "Tampilkan:
- Nama setelah
.trim() - Nama dalam huruf besar
- Jumlah karakter nama setelah dirapikan
Challenge 6 — Status Tugas dengan Literal Type
Section titled “Challenge 6 — Status Tugas dengan Literal Type”Tingkat: Menengah
Buat literal type StatusTugas yang hanya mengizinkan:
"belum""dikerjakan""dikumpulkan"
Buat variabel status tugas menggunakan tipe tersebut. Tampilkan statusnya.
Lalu coba isi dengan nilai "selesai banget" dan amati error TypeScript. Setelah itu, kembalikan ke nilai valid.
Challenge 7 — Kontak Opsional
Section titled “Challenge 7 — Kontak Opsional”Tingkat: Menengah
Buat biodata singkat yang memiliki:
- Nama (
string) - Kelas (
string) - Email (
string | null)
Jika email bernilai null, tampilkan "Email belum diisi". Jika ada email, tampilkan email tersebut. Gunakan operator ??.
Challenge 8 — Data Tidak Dikenal
Section titled “Challenge 8 — Data Tidak Dikenal”Tingkat: Menengah
Buat fungsi bernama prosesData dengan satu parameter bertipe unknown.
Aturan fungsi:
- Jika data adalah string, tampilkan dalam huruf besar
- Jika data adalah number, tampilkan hasil kali dua
- Jika data adalah boolean, tampilkan
"Status aktif"atau"Status nonaktif" - Jika tipe lain, tampilkan
"Data tidak didukung"
Panggil fungsi minimal empat kali dengan data berbeda.
Challenge 9 — Laporan Belanja Kantin
Section titled “Challenge 9 — Laporan Belanja Kantin”Tingkat: Menengah
Buat program laporan belanja sederhana:
- Nama pembeli (
string) - Harga makanan (
number) - Harga minuman (
number) - Uang yang dibawa (
number) - Status pembayaran (
boolean)
Hitung total belanja dan sisa uang. Tampilkan laporan rapi menggunakan template literal multi-baris.
Tambahkan kondisi boolean: pembayaran dianggap cukup jika uang yang dibawa lebih besar atau sama dengan total belanja.
Challenge 10 — Biodata Siswa Versi Kamu
Section titled “Challenge 10 — Biodata Siswa Versi Kamu”Tingkat: Menengah
Buat aplikasi biodata siswa dari nol tanpa menyalin Mini Project. Program minimal memiliki:
- Judul aplikasi (
const) - Nama, kelas, sekolah, alamat (
string) - Umur dan nomor absen (
number) - Jurusan menggunakan literal type
- Email menggunakan
string | null - Status aktif (
boolean) - Minimal satu nilai yang dihitung
- Template literal multi-baris
- Minimal tiga komentar yang berguna
Gunakan data diri kamu atau data fiktif yang sopan.
Checklist Sebelum Menganggap Selesai
Section titled “Checklist Sebelum Menganggap Selesai”Untuk setiap soal, cek:
- File disimpan dengan ekstensi
.ts - Program dijalankan dengan
tsx - Tidak ada error TypeScript yang diabaikan
- Nama variabel menggunakan camelCase
- Tipe data sesuai dengan nilai
- Output mudah dibaca
- Kamu mengerti setiap baris yang ditulis
Jika Kamu Buntu
Section titled “Jika Kamu Buntu”Jangan langsung menyerah. Ikuti urutan ini:
- Baca lagi tujuan soalnya
- Tulis data apa saja yang dibutuhkan di kertas
- Tentukan tipe data setiap nilai
- Buat variabel satu per satu
- Tampilkan dulu nilai variabel dengan
console.log() - Baru tambahkan perhitungan atau kondisi
- Baca Error Corner jika muncul pesan error
Latihan Tambahan
Section titled “Latihan Tambahan”Setelah menyelesaikan semua soal, pilih satu challenge yang paling sulit bagimu dan tulis ulang programnya dari nol tanpa melihat file sebelumnya. Ini melatih ingatan dan pemahaman, bukan hanya kemampuan menyalin.
Ringkasan
Section titled “Ringkasan”- Ada 10 challenge dari mudah ke menengah
- Kerjakan tanpa menyalin jawaban dari contoh
- Gunakan TSX untuk menjalankan setiap file
- Jika buntu, pecah masalah menjadi data kecil dan tipe yang jelas
- Error adalah petunjuk untuk memperbaiki kode, bukan alasan berhenti