المسارات
/
Ruby
Ruby
/
التمارين
/
حساب التوفير
حساب التوفير

حساب التوفير

تمرين تعلّمي

مقدمة

الوحدات

حتى الآن، استخدمت جميع التمارين التي رأيتها أصنافًا. أحيانًا لا نحتاج إلى العبء الإضافي لإنشاء كائن يحمل حالة، لذا نستخدم بدلًا من ذلك module.

الوحدة شبيهة جدًا بالصنف، بل إن Module هو الصنف الأب لـ Class في التسلسل الهرمي للكائنات، والفرق الأساسي أنها تستخدم طرق الأصناف بدلًا من طرق الكائنات. تبدأ طرق الأصناف بـ self. وتُستدعى مباشرةً على الوحدة.

على سبيل المثال:

module Speaker
  def self.echo(something)
    "#{something} ... #{something}"
  end
end

Speaker.echo("Hello")   #=> "Hello ... Hello"

الحلقات

توجد عدة أساليب لكتابة الحلقات في Ruby، لكن بما أننا نميل عمومًا إلى استخدام التعداد بدلًا من الحلقات، فربما تكون الحلقة الأكثر شيوعًا هي حلقة while:

counter = 0

while counter < 5
  counter += 1
end

يمكنك أيضًا استخدام نظيرتها until

counter = 0

until counter == 5
  counter += 1
end

التعليمات

في هذا التمرين ستتعامل مع حسابات التوفير. كل عام، يُحدَّث رصيد حساب التوفير بناءً على سعر الفائدة. ويعتمد سعر الفائدة الذي يمنحه البنك على مقدار المال الموجود في الحساب (أي رصيده):

  • 0.5% لرصيد غير سالب أقل من 1000 دولار.
  • 1.621% لرصيد موجب أكبر من أو يساوي 1000 دولار وأقل من 5000 دولار.
  • 2.475% لرصيد موجب أكبر من أو يساوي 5000 دولار.
  • 3.213% لرصيد سالب (ينتج عنه فائدة سالبة).

لديك ثلاث مهام، وكل مهمة تتعامل مع الرصيد وسعر الفائدة الخاص به.

1. احسب سعر الفائدة

نفّذ الطريقة SavingsAccount.interest_rate لحساب سعر الفائدة بناءً على الرصيد المحدد:

SavingsAccount.interest_rate(200.75)
#=> 0.5

لاحظ أن القيمة المُرجَعة هي كائن من الصنف Float.

2. احسب التحديث السنوي للرصيد

نفّذ الطريقة SavingsAccount.annual_balance_update لحساب التحديث السنوي للرصيد، مع مراعاة سعر الفائدة:

SavingsAccount.annual_balance_update(200.75)
#=> 201.75375

لاحظ أن القيمة المُرجَعة هي كائن من الصنف Float.

3. احسب عدد السنوات اللازمة للوصول إلى الرصيد المطلوب

نفّذ الطريقة SavingsAccount.years_before_desired_balance لحساب الحد الأدنى من السنوات اللازمة للوصول إلى الرصيد المطلوب:

SavingsAccount.years_before_desired_balance(200.75, 214.88)
#=> 14

لاحظ أن القيمة المُرجَعة هي كائن من الصنف Integer.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Ruby Exercism

مستعد لبدء حساب التوفير؟

سجّل في Exercism لتتعلّم وتتقن Ruby عبر 21 مفهومًا121 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.