סיכום – מחשבון בטוח
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Swift של Coddy. שיעור 48 מתוך 56.
אתגר
בינוניבנו מחשבון זעיר שעמיד בפני קלט שגוי.
הגדירו את CalcError: Error עם המקרים: parse, divideByZero, unknownOp.
הגדירו פונקציה שזורקת שגיאות compute(_ a: String, _ op: String, _ b: String) throws -> Int אשר:
- מפרשת את
aואתbכמספרים שלמים, וזורקת את.parseאם אחד מהם נכשל - זורקת את
.unknownOpכאשרopאינו אחד מאלה:+,-,*,/ - זורקת את
.divideByZeroכאשרop == "/"וגםb == 0 - אחרת, מחזירה את התוצאה כמספר שלם
קראו שורת קלט אחת: רשימה של ביטויים a:op:b המופרדים בפסיקים. עבדו על כל אחד מהם לפי הסדר באמצעות do/catch. הדפיסו שורה אחת לכל ביטוי:
= <n>במקרה של הצלחהparse error,div by zeroאוunknown opעבור כל אחד ממקרי השגיאה
לאחר השורות עבור כל ביטוי, הדפיסו שורת סיכום אחת: OK: <n> עם מספר הביטויים שהצליחו.
עבור הקלט 3:+:5,10:/:0,7:*:abc,9:%:2,12:-:4, הפלט הוא:
= 8
div by zero
parse error
unknown op
= 8
OK: 2נסו בעצמכם
let exprs = readLine()!.components(separatedBy: ",")
// TODO: הגדירו enum CalcError; הגדירו func compute(...) throws -> Int;
// בצעו לולאה עם do/try, הדפיסו את התוצאה עבור כל expr; לבסוף הדפיסו 'OK: <n>'
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
5פונקציות מסדר גבוה חלק 1
מיפוי (Map)סינון (Filter)צמצום (Reduce)שרשור map, filter ו-reduceסיכום – סטטיסטיקות מיליםתרגלו בעצמכם: Swift אונליין