Proyek: Kalkulator CLI
Tugas proyek: bangun kalkulator command-line dari nol, dinilai AI tutor.
Misi: Kalkulator CLI
Saatnya merangkai semua yang kamu pelajari menjadi program utuh! Kamu akan membangun kalkulator command-line: program yang menerima perintah teks dan menghitung hasilnya. Ini simulasi bagaimana aplikasi backend dan CLI nyata bekerja.
Kenapa proyek ini penting? Karena ia memaksamu memakai semuanya sekaligus: fungsi, class, list, percabangan, perulangan, exception, dan null safety. Tutorial mengajarkan potongan; proyek mengajarkan merangkai.
Spesifikasi
Bangun program Dart dengan ketentuan:
- Empat operasi dasar + pangkat: fungsi
tambah,kurang,kali,bagi, danpangkat(a, b)(pangkat memakai loop, bukanpow). - Bagi-nol aman:
bagiharus menangani pembagi nol. Pilih caramu: throw exception, kembalikan null, atau cetak pesan error. Yang penting tidak crash. - Class Kalkulator: punya field
riwayatbertipeList<String>yang mencatat setiap operasi dalam format terbaca, mis."5 + 3 = 8". - Simulasi perintah: karena DartPad tidak punya stdin interaktif, simulasikan input lewat list string:
['tambah 5 3', 'kali 4 7', 'bagi 10 0', 'pangkat 2 8', 'riwayat', 'keluar']. Program mem-parsing tiap perintah dan menjalankannya. - Penanganan error: perintah tidak dikenal (
'ngawur 1 2'), argumen bukan angka, dan jumlah argumen salah harus ditangani dengan pesan yang jelas, memakai try-catch.
Strategi pengerjaan (jangan langsung ngoding!)
Pemula sering langsung menulis dan tersesat. Ikuti urutan ini:
- Fungsi operasi dulu: tulis dan uji
tambahsampaipangkatsatu per satu dimainsederhana. - Class Kalkulator: bungkus fungsi-fungsi tadi jadi method yang mencatat riwayat.
- Parser perintah: fungsi yang menerima string seperti
"tambah 5 3", memecah dengansplit(' '), mengubah angka dengandouble.tryParse(aman, tidak throw). - Loop perintah: for-in atas list perintah, dengan try-catch di sekelilingnya.
- Perintah khusus:
"riwayat"mencetak semua riwayat,"keluar"menghentikan loop (pakaibreak).
// Kerangka awal (kembangkan sendiri!)
class Kalkulator {
List<String> riwayat = [];
double tambah(double a, double b) {
var hasil = a + b;
riwayat.add('$a + $b = $hasil');
return hasil;
}
// TODO: kurang, kali, bagi, pangkat
}
void main() {
var kalkulator = Kalkulator();
var perintah = ['tambah 5 3', 'bagi 10 0', 'keluar'];
for (var p in perintah) {
if (p == 'keluar') break;
// TODO: parsing + eksekusi + try-catch
}
}Tips
double.tryParse('abc')mengembalikannullalih-alih throw. Cocok untuk validasi input.- Pisahkan parsing (string → angka) dari komputasi (angka → hasil). Dua tanggung jawab, dua fungsi.
- Uji tiap fungsi kecil sebelum merangkai. Debugging 10 baris jauh lebih mudah daripada 100 baris.
Catatan teknis: Ini TUGAS, bukan latihan biasa. Jangan mencontek solusi: tulis versimu sendiri dari nol, lalu kirim untuk dinilai AI tutor di bawah. Nilai bukan segalanya, yang penting kamu paham tiap baris yang kamu tulis.
Kriteria penilaian
AI tutor akan menilai: kebenaran operasi, penanganan error (bagi-nol, perintah asing, argumen salah), kerapian struktur (class + fungsi terpisah), riwayat yang tercatat dengan format jelas, dan kode yang bisa dijalankan tanpa crash untuk semua perintah contoh.
Tantangan
Pemanasan: fungsi bagi aman
Sebelum mengerjakan tugas besar, buat fungsi bagiAman(a, b) yang mengembalikan double?: null jika b == 0, hasil bagi jika tidak. Ini pemanasan untuk penanganan bagi-nol.
// TODO: double? bagiAman(double a, double b)
void main() {
// TODO: uji dengan (10, 2) dan (10, 0)
}Tugas
Tugas: Kalkulator CLI
Bangun kalkulator CLI lengkap sesuai misi di atas: 4 operasi dasar + pangkat, class Kalkulator dengan riwayat, simulasi perintah via list, dan try-catch untuk error. Tulis dari NOL di editor bawah, jangan mencontek.
Kriteria penilaian:
- Keempat operasi dasar + pangkat benar
- Bagi-nol ditangani (tidak crash)
- Ada class Kalkulator dengan riwayat tercatat
- Perintah tidak dikenal ditangani
- Kode rapi: fungsi terpisah, penamaan jelas
AI tutor akan memeriksa bug, kesalahan syntax, dan memberi saran perbaikan.