Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ملخص - آلة حاسبة آمنة

جزء من قسم المنطق وتدفق العمليات في رحلة 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 عبر الإنترنت