Pertemuan 6

Nama: Thopaz Givangkara Rosadi

NRP: 5025231050

Kelas: PBB (C)

Source Code: https://github.com/rsthopaz/Pemrograman-Mobile/tree/main/Pertemuan_6





1. MainActivity
class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContent {
            Kalkulatorapp()
        }
    }
}

Penjelasan:
class MainActivity : ComponentActivity()

Ini adalah activity utama Android.

Activity = layar aplikasi.

Saat app dibuka, Android akan menjalankan MainActivity.

override fun onCreate(...)

onCreate() dipanggil pertama kali saat activity dibuat.

Mirip "mulai aplikasi".

super.onCreate(savedInstanceState)

Memanggil fungsi bawaan Android agar activity berjalan normal.

Wajib ada.

enableEdgeToEdge()

Agar tampilan bisa sampai ke tepi layar HP.

2. Fungsi UI Compose
@Composable
fun Kalkulatorapp()
@Composable

Artinya fungsi ini membuat UI.

Compose hanya mengenali fungsi yang punya anotasi ini.

3. State Variable
var num1 by remember { mutableStateOf("") }
var num2 by remember { mutableStateOf("") }
var operator by remember { mutableStateOf("") }
var result by remember { mutableStateOf("") }

Ini bagian paling penting di Compose.

mutableStateOf

Menyimpan data yang bisa berubah.

remember

Agar nilai tidak hilang saat UI redraw.

Artinya:
num1 -> menyimpan angka pertama

4. Layout Column
Column(modifier = Modifier.padding(16.dp))
Column

Semua komponen ditumpuk vertikal:

textfield
textfield
textfield
button
hasil

padding(16.dp)

jarak dari tepi layar 16dp

5. Input Angka Pertama
OutlinedTextField(
    value = num1,
    onValueChange = { num1 = it },
    label = { Text("Angka pertama") }
)
value = num1

textfield menampilkan isi num1

onValueChange

setiap user mengetik:

num1 = it

it = teks baru yang diketik user

label

placeholder / judul field

6. Input Operator
OutlinedTextField(
    value = operator,
    onValueChange = { operator = it },
    label = { Text("Operator (+, -, *, /)") }
)

7. Input Angka Kedua

Sama seperti angka pertama.

8. Tombol Hitung
Button(onClick = {

Saat tombol ditekan:

jalankan semua logika hitung.

9. Konversi Input ke Angka
val n1 = num1.toDoubleOrNull()
val n2 = num2.toDoubleOrNull()
Kenapa pakai toDoubleOrNull()?

Supaya aman.

Kalau user isi:

abc

tidak crash.

Hasil:

Kalau valid:

12.0

Kalau invalid:

null

10. Validasi Input
if (n1 != null && n2 != null)

Artinya:

hanya hitung kalau dua input valid.

when operator
when (operator)

Ini seperti switch-case.

tambah
"+" -> (n1 + n2).toString()
kurang
"-" -> (n1 - n2).toString()
kali
"*" -> (n1 * n2).toString()
bagi
"/" -> if (n2 != 0.0) ...

Validasi bagi nol
if (n2 != 0.0)

Karena:

10 / 0

tidak boleh.

Jika nol:

"Tidak bisa dibagi 0"

Comments

Popular posts from this blog

Pertemuan 7

Pertemuan 1