المسارات
/
JavaScript
JavaScript
/
التمارين
/
أسعار المستقلّين
أسعار المستقلّين

أسعار المستقلّين

تمرين تعلّمي

مقدمة

الأعداد

تحتوي العديد من لغات البرمجة على أنواع عددية محددة لتمثيل أنواع مختلفة من الأعداد، لكن JavaScript لديها نوعان فقط:

  • number: نوع بيانات عددي بصيغة الفاصلة العائمة ثنائية الدقة بسعة 64 بت (IEEE 754). ومن الأمثلة على ذلك -6، -2.4، 0، 0.1، 1، 3.14، 16.984025، 25، 976، 1024.0 و500000.
  • bigint: نوع بيانات عددي يمكنه تمثيل الأعداد الصحيحة بصيغة الدقة الاعتباطية. ومن الأمثلة على ذلك -12n، 0n، 4n، و9007199254740991n.

إذا كنت بحاجة إلى دقة اعتباطية أو كنت تتعامل مع أعداد كبيرة جدًا، فاستخدم النوع bigint. وإلا، فمن المرجح أن يكون النوع number هو الخيار الأفضل.

التقريب

يوجد كائن عام مدمج يُسمى Math يوفر دوال تقريب متنوعة. على سبيل المثال، يمكنك تقريب الأعداد العشرية للأسفل (floor) أو للأعلى (ceil) إلى أقرب عدد صحيح.

Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235

العوامل الحسابية

توفر JavaScript 6 عوامل مختلفة لإجراء العمليات الحسابية الأساسية على الأعداد.

  • +: يُستخدم عامل الجمع لإيجاد مجموع الأعداد.
  • -: يُستخدم عامل الطرح لإيجاد الفرق بين عددين
  • *: يُستخدم عامل الضرب لإيجاد حاصل ضرب عددين.
  • /: يُستخدم عامل القسمة لقسمة عددين.
2 - 1.5; //=> 0.5
19 / 2; //=> 9.5
  • %: يُستخدم عامل الباقي لإيجاد باقي عملية القسمة.

    40 % 4; // => 0
    -11 % 4; // => -3
    
  • **: يُستخدم عامل الأس لرفع عدد إلى قوة.

    4 ** 3; // => 64
    4 ** 1 / 2; // => 2
    

ترتيب العمليات

عند استخدام عدة عوامل في سطر واحد، تتبع JavaScript ترتيب أسبقية كما هو موضح في جدول الأسبقية هذا. وبتبسيط ذلك في سياقنا، تستخدم JavaScript قاعدة PEDMAS (الأقواس، الأسس، القسمة/الضرب، الجمع/الطرح) التي تعلمناها في حصص الرياضيات في المرحلة الابتدائية.

const result = 3 ** 3 + 9 * 4 / (3 - 1);
// => 3 ** 3 + 9 * 4/2
// => 27 + 9 * 4/2
// => 27 + 18
// => 45

عوامل الإسناد المختصرة

عوامل الإسناد المختصرة هي طريقة أقصر لكتابة كود يجري عمليات حسابية على متغير، ويسند القيمة الجديدة إلى المتغير نفسه. على سبيل المثال، اعتبر متغيرين x وy. إذن، x += y تكافئ x = x + y. غالبًا ما يُستخدم هذا مع عدد بدلًا من المتغير y. ويمكن إجراء 5 عمليات أخرى بالأسلوب نفسه أيضًا.

let x = 5;
x += 25; // x is now 30

let y = 31;
y %= 3; // y is now 1

التعليمات

في هذا التمرين ستكتب الكود لمساعدة مستقل على التواصل مع عملائه بشأن أسعار مشاريع معينة. ستكتب بعض الدوال المساعدة لحساب التكاليف للعملاء بسرعة.

Note

المتغير ratePerHour والدالة dayRate مرتبطان بالمال. وحدات القياس هي المال لكل وحدة زمنية: الساعات والأيام على التوالي.

1. حساب سعر اليوم بناءً على سعر الساعة

يتواصل أحد العملاء مع المستقل للاستفسار عن أسعاره. يوضّح المستقل أنه يعمل 8 ساعات في اليوم. لكن المستقل لا يعرف إلا سعر الساعة الخاص بالمشروع. ساعده في تقدير سعر اليوم بناءً على سعر الساعة.

dayRate(89);
// => 712

لا يحتاج سعر اليوم إلى التقريب أو التغيير إلى دقة "ثابتة".

2. حساب عدد أيام العمل بناءً على ميزانية ثابتة

في يوم آخر، يعرض مدير مشروع على المستقل العمل في مشروع بميزانية ثابتة. بناءً على الميزانية الثابتة وسعر الساعة لدى المستقل، ساعده في حساب عدد الأيام التي سيعملها حتى تنفد الميزانية. النتيجة يجب أن تُقرَّب لأسفل إلى أقرب عدد صحيح.

daysInBudget(20000, 89);
// => 28

3. حساب السعر بعد الخصم للمشاريع الكبيرة

غالبًا ما يستعين عملاء المستقل به في مشاريع تمتد على مدى عدة أشهر. في هذه الحالات، يقرر المستقل تقديم خصم عن كل شهر كامل، وتُحتسب الأيام المتبقية بسعر اليوم. يعني توازنك الممتاز بين العمل والحياة أنك تعمل 22 يومًا فقط في كل شهر ميلادي، لذا كل شهر فيه 22 يومًا قابلة للفوترة. ساعده في تقدير تكلفة مثل هذه المشاريع، بمعلومية سعر الساعة، وعدد الأيام القابلة للفوترة في المشروع، ونسبة الخصم الشهرية. يُمرَّر الخصم دائمًا كعدد، حيث يصبح 42% هو 0.42. النتيجة يجب أن تُقرَّب لأعلى إلى أقرب عدد صحيح.

priceWithMonthlyDiscount(89, 230, 0.42);
// => 97972
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
JavaScript Exercism

مستعد لبدء أسعار المستقلّين؟

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