Menu
Coddy logo textTech

סיכום – מחשבון בטוח

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 47 מתוך 56.

בנו מחשבון קטן שמתמודד עם קלט שגוי, תוך שילוב של raise, כמה סעיפי rescue ו-ensure.

challenge icon

אתגר

בינוני

הגדירו מתודה calc(a, op, b) ש:

  • מעלה ArgumentError עם ההודעה "unknown operator" אם op אינו אחד מאלה: +, -, *, /
  • אחרת, מבצעת את הפעולה (השתמשו בחשבון של מספרים שלמים עבור /)

לאחר מכן קראו שלוש שורות מהקלט, a, op, b: וקראו ל־calc בתוך begin / rescue / ensure:

  • במקרה של הצלחה, הדפיסו <a> <op> <b> = <result>
  • במקרה של ArgumentError, הדפיסו Bad operator
  • במקרה של ZeroDivisionError, הדפיסו Cannot divide by zero
  • ב־ensure, הדפיסו תמיד --- end ---

השתמשו ב־Integer(...) כדי לנתח את a ואת b, בתוך אותו בלוק begin, כך שגם קלט שאינו מספר שלם יגיע אל Bad operator (ArgumentError מכסה את שני המקרים).

עבור הקלט 6 / * / 7, הפלט הוא:

6 * 7 = 42
--- end ---

עבור הקלט 10 / / / 0:

Cannot divide by zero
--- end ---

נסו בעצמכם

# TODO: להגדיר את calc(a, op, b), שתזרוק ArgumentError אם op אינו מוכר

raw_a = gets.chomp
op    = gets.chomp
raw_b = gets.chomp

# TODO: להשתמש ב-begin/rescue/ensure כמתואר

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Ruby אונליין