Özet - Güvenli Hesap Makinesi
Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 48 / 56.
Görev
OrtaHatalı girişlere karşı güvenli olan küçük bir hesap makinesi oluşturun.
Şu durumlara (cases) sahip bir CalcError: Error tanımlayın: parse, divideByZero, unknownOp.
Şunları yapan, hata fırlatabilen (throwing) bir compute(_ a: String, _ op: String, _ b: String) throws -> Int fonksiyonu tanımlayın:
avebdeğerlerini tam sayı olarak ayrıştırır, biri başarısız olursa.parsehatası fırlatıropdeğeri+,-,*,/operatörlerinden biri değilse.unknownOphatası fırlatırop == "/"veb == 0olduğunda.divideByZerohatası fırlatır- Aksi takdirde tam sayı sonucunu döndürür
Tek bir satır girdi okuyun: virgülle ayrılmış a:op:b ifadelerinden oluşan bir liste. Her birini sırayla bir do/catch bloğu ile işleyin. Her ifade için bir satır yazdırın:
- Başarı durumunda
= <n> - Her hata durumu için
parse error,div by zeroveyaunknown op
İfade başına yazdırılan satırlardan sonra, bir özet satırı yazdırın: Başarıyla tamamlanan ifade sayısını içeren OK: <n>.
3:+:5,10:/:0,7:*:abc,9:%:2,12:-:4 girdisi için çıktı şöyledir:
= 8
div by zero
parse error
unknown op
= 8
OK: 2Kendin dene
let exprs = readLine()!.components(separatedBy: ",")
// TODO: enum CalcError; func compute(...) throws -> Int;
// döngü, do/try, her expr için sonucu yazdır; son olarak 'OK: <n>' yazdır
Mantık ve Akış bölümündeki tüm dersler
1Stringler Derinlemesine
Sayma ve İndekslerBüyük-Küçük Harf ve KırpmaStringlerde AramaBölme ve BirleştirmeAlt Stringleri DeğiştirmeÖzet - Kullanıcı Adı Kontrolü4Kümeler
Küme OluşturmaBirleşim ve KesişimFark ve Simetrik FarkAlt Küme ve Üst KümeÖzet - Etiket Filtresi7Proje - Alışkanlık Takibi
Projeye Genel BakışTamamlandı Olarak İşaretle10Proje - Quiz Motoru
Projeye Genel BakışSoruları Sorma2Aralıklar ve Adımlar
Kapalı ve Yarı AçıkStride (Adım)Aralık MetotlarıSwitch İçinde AralıklarÖzet - Takvim Izgarası5Yüksek Mertebeden Fonksiyonlar Bölüm 1
MapFilterReduceMap, filter, reduce zincirlemeÖzet - Kelime İstatistikleri