dartproyektugasMahir6 mnt baca

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:

  1. Empat operasi dasar + pangkat: fungsi tambah, kurang, kali, bagi, dan pangkat(a, b) (pangkat memakai loop, bukan pow).
  2. Bagi-nol aman: bagi harus menangani pembagi nol. Pilih caramu: throw exception, kembalikan null, atau cetak pesan error. Yang penting tidak crash.
  3. Class Kalkulator: punya field riwayat bertipe List<String> yang mencatat setiap operasi dalam format terbaca, mis. "5 + 3 = 8".
  4. 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.
  5. 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:

  1. Fungsi operasi dulu: tulis dan uji tambah sampai pangkat satu per satu di main sederhana.
  2. Class Kalkulator: bungkus fungsi-fungsi tadi jadi method yang mencatat riwayat.
  3. Parser perintah: fungsi yang menerima string seperti "tambah 5 3", memecah dengan split(' '), mengubah angka dengan double.tryParse (aman, tidak throw).
  4. Loop perintah: for-in atas list perintah, dengan try-catch di sekelilingnya.
  5. Perintah khusus: "riwayat" mencetak semua riwayat, "keluar" menghentikan loop (pakai break).
dart
// 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') mengembalikan null alih-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.

text
// 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.