Pertemuan 6

 Nama    :    Muhammad Shafa Narariya

NRP       :    5025231016

Kelas     :    PPB (C)

Source Code    :    
https://github.com/ItsPong/PBB/tree/main/Pertemuan_6



1. Struktur Layout dan Input User

Aplikasi ini disusun secara vertikal menggunakan Column. Untuk menerima input angka dan operator dari pengguna, saya menggunakan OutlinedTextField.

  • value & onValueChange: Setiap kali pengguna mengetik, data akan langsung disimpan ke dalam variabel State (num1, num2, dan operator).

  • KeyboardOptions: Saya mengatur agar keyboard yang muncul adalah tipe angka (Number), sehingga memudahkan pengguna saat mengisi field angka.

2. State Management: Menampung Data Real-Time

Kunci utama dari kalkulator ini adalah penggunaan mutableStateOf. Kita perlu menyimpan empat hal: angka pertama, angka kedua, jenis operator, dan tentu saja hasil perhitungannya.

var num1 by remember { mutableStateOf("") }
var num2 by remember { mutableStateOf("") }
var operator by remember { mutableStateOf("") }
var result by remember { mutableStateOf("") }

Penjelasan: Fungsi remember memastikan data yang sudah diketik tidak hilang saat layar aplikasi melakukan refresh atau berputar.

3. Logika Perhitungan yang Aman (toDoubleOrNull)

Salah satu bagian paling krusial adalah saat mengubah teks menjadi angka. Saya menggunakan fungsi toDoubleOrNull() untuk mencegah aplikasi keluar sendiri (force close) jika pengguna secara tidak sengaja memasukkan karakter selain angka.

val n1 = num1.toDoubleOrNull()
val n2 = num2.toDoubleOrNull()

Penjelasan: Jika input valid, data akan menjadi angka (misal: 10.0). Jika tidak valid (misal: user mengetik huruf), maka datanya akan menjadi null dan aplikasi tetap berjalan normal tanpa crash.

4. Pengkondisian dengan "When"

Untuk menentukan operasi matematika mana yang dijalankan (tambah, kurang, kali, atau bagi), saya menggunakan ekspresi when yang sangat rapi di Kotlin.

result = when (operator) {
    "+" -> (n1 + n2).toString()
    "-" -> (n1 - n2).toString()
    "*" -> (n1 * n2).toString()
    "/" -> if (n2 != 0.0) (n1 / n2).toString() else "Tidak bisa dibagi 0"
    else -> "Operator Salah!"
}

Komentar

Postingan populer dari blog ini

Pertemuan 1

Pertemuan 2

Pertemuan 3