Menu
CoddyTech

Rangkuman: Kalkulator Aman

Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 48 dari 56.

challenge icon

Tantangan

Sedang

Buat kalkulator sederhana yang aman terhadap input yang tidak valid.

Definisikan CalcError: Error dengan kasus: parse, divideByZero, unknownOp.

Definisikan fungsi yang melempar error, compute(_ a: String, _ op: String, _ b: String) throws -> Int, yang:

  • Mem-parsing a dan b sebagai bilangan bulat, dan melempar .parse jika salah satunya gagal
  • Melempar .unknownOp jika op bukan salah satu dari +, -, *, /
  • Melempar .divideByZero jika op == "/" dan b == 0
  • Jika tidak, mengembalikan hasil berupa bilangan bulat

Baca satu baris input: list ekspresi a:op:b yang dipisahkan koma. Proses setiap ekspresi secara berurutan dengan do/catch. Cetak satu baris untuk setiap ekspresi:

  • = <n> jika berhasil
  • parse error, div by zero, atau unknown op untuk setiap kasus error

Setelah baris untuk setiap ekspresi, cetak satu baris ringkasan: OK: <n> dengan jumlah ekspresi yang berhasil.

Untuk input 3:+:5,10:/:0,7:*:abc,9:%:2,12:-:4, output-nya adalah:

= 8
div by zero
parse error
unknown op
= 8
OK: 2

Coba sendiri

let exprs = readLine()!.components(separatedBy: ",")

// TODO: buat enum CalcError; buat func compute(...) throws -> Int;
// lakukan perulangan, gunakan do/try, print hasil untuk setiap expr; terakhir print 'OK: <n>'

Semua pelajaran di Logika dan Alur

Latihan sendiri: Playground Swift