٢٥ مارس ٢٠٢١

العاملات الأساسية والرياضيات

نعرف الكتير من المعاملات الحسابية من التعليم الأساسي في المدارس مثل عامل الإضافة ‘+’ , والضرب ‘*’ والطرح ‘-’ وخلافه

في هذا الفصل سنبدأ بالعاملات الحسابية البسيطة ثم سنركز على النواحي المحددة بالنسبة للغة جافا سكريبت والتي لم يتم تغطيتها برياضيات الحساب في المدرسة

مصطلحات: أحادي، ثنائي ، ومعامل

قبل ما ان نكمل، فلنفهم جيدا بعض المصطلحات

  • *معامل * – هو ما يتم تطبيق العاملات الحسابية عليه. على سبيل المثال، عند ضرب 2 * 5 يوجد معاملات اثنان: المعامل الأيسر “5” والمعامل الأيمن “2” . أحيانا الناس يسمونها "عوامل متغيرة " بدلا من "معاملات "

  • العامل الحسابي يكون أحاديا إذا كان لديه معامل واحد فقط. على سبيل المثال عامل الطرح الأحادي ‘-’ يعكس إشارة الرقم:

    let x = 1;
    
    x = -x;
    alert( x ); // -1, unary negation was applied

    العامل الحسابي يكون ثنائيا إذا كان لديه معاملين حسابيين اثنين. نفس الشيء بالنسبة لعامل الطرح الحسابي أيضا:

    let x = 1, y = 3;
    alert( y - x ); // 2, binary minus subtracts values

    بشكل رسمي، في الأمثلة السابقة كان لدينا عاملين حسابيين مختلفين يشتركان في نفس الرمز: عامل النفي يعكس إلإشارة وعامل الطرح , عامل ثنائي يقوم يطرح رقم من آخر

#الرياضيات

العمليات الحسابية التالية مدعومة:

  • الإضافة “+”
  • الطرح “-”
  • الضرب “*”
  • القسمة “/”
  • باقي القسمة “%”
  • الضرب الأسي “**”

العوامل الحسابية الأربع الأوئل واضحين بينما باقي القسمة “%” والضرب الأسي “**” بحاجة إلى بعض الإيضاح حولهم

بافي القسمة %

عامل باقي القسمة “%” بالرغم من شكله إلا أنه لا صلة له بالنسبة المئوية

ناتج a % b هو [باقي قسمة] الرقم “a” على الرقم “b” (https://en.wikipedia.org/wiki/Remainder)

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

alert( 5 % 2 ); // 1, a remainder of 5 divided by 2
alert( 8 % 3 ); // 2, a remainder of 8 divided by 3

الضرب الأسي **

عامل الضرب الأسي a ** b يقوم بضرب الرقم a في نفسه عدد b من المرات

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

alert( 2 ** 2 ); // 4  (2 multiplied by itself 2 times)
alert( 2 ** 3 ); // 8  (2 * 2 * 2, 3 times)
alert( 2 ** 4 ); // 16 (2 * 2 * 2 * 2, 4 times)

من الناحية الرياضياتية الضرب الأسي يستخدم أيضا مع الأرقام غير الصحيحة. على سبيل المثال الجذر التربيعي هو ضرب أسي بقيمة 1/2:

alert( 4 ** (1/2) ); // 2 (power of 1/2 is the same as a square root)
alert( 8 ** (1/3) ); // 2 (power of 1/3 is the same as a cubic root)

إضافة الكلمات وسلاسل الحروف بعامل الإضافة +

هيا نتعرف على مميزات عوامل اللغة جافا سكريبت والتي تتجاوز الحساب المدرسي

عادة، عامل الإضافة “+” يقوم بجمع الأرقام

لكن لو العامل الحسابي الثنائي “+” تم تطبيقه على الكلمات فإنه يقوم بدمجهم معا:

let s = "my" + "string";
alert(s); // mystring

لاحظ أنه إذا كان أي من المعاملات عبارة عن كلمة فإنه يتم تحويل الآخر إلى كلمة أيضا

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

alert( '1' + 2 ); // "12"
alert( 2 + '1' ); // "21"

أرأيت، لا يهم إذا كان المعامل الأول أو الثاني عبارة عن كلمة

مثال آخر أكثر تعقيدا:

alert(2 + 2 + '1' ); // "41" and not "221"

هنا العوامل الحسابية تعمل بعد الأخرى. عامل الإضافة الأول + يقوم بجمع الرقمين فيصبح ناتجهمها 4 ثم يقوم عامل الإضافة الثاني + بدمج 4 و 1 في كلمة واحدة فتصبح الناتج النهائي مثل 4 + '1' = 41.

alert('1' + 2 + 2); // "122" and not "14"

هنا, المعامل الأول هو نص, يعامل المترجم المعاملين الآخرين كنصوص أيضًا. 2 يتم دمجها مع '1', مثل ذلك '1' + 2 = "12" و "12" + 2 = "122".

عامل الإضافة الثنائي “+” هو العامل الوحيد الذي يدعم الكلمات بهذه الطريقة العوامل الحسابية الأخرى تعمل فقط مع الأرقام ودائما ما تحول المعاملات إلى أرقام

هنا شرح مبسط لعملية الطرح والقسمة:

alert( 6 - '2' ); // 4, converts '2' to a number
alert( '6' / '2' ); // 3, converts both operands to numbers

التحويل العددي ، الأحادي +

إشارة الجمع “+” توجد في شكلين ، الشكل الثنائي كما تم استخدامه من قبل والشكل الأحادي

عامل الإضافة الأحادي أو بكلمات أخرى عامل الزائد “+” الذي يتم تطبيقه على قيمة واحدة لا يؤثر على الأرقام لكن إذا كان المعامل ليس رقما فإن عامل الإضافة الأحادي يحولها إلى رقم

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

// No effect on numbers
let x = 1;
alert( +x ); // 1

let y = -2;
alert( +y ); // -2

// Converts non-numbers
alert( +true ); // 1
alert( +"" );   // 0

فهو بالفعل يقوم بنفس عمل دالة Number(...) ولكنه أقصر

فعادة ما يكون هناك حاجة لتحويل الكلمات إلى أرقام على سبيل المثال ، إذا كنا نحصل من خلال استمارة HTML على قيم ،فإنها عادة ما تكون على شكل كلمات ماذا لو أردنا جمعهم سويا ؟

معامل الزائد الثنائي سيقوم بجمعهم ودمجهم ككلمات:

let apples = "2";
let oranges = "3";

alert( apples + oranges ); // "23", the binary plus concatenates strings

فإذا أردنا جمعهم كأرقام ، فإننا بحاجة إلى تحويلهم ثم جمعهم:

let apples = "2";
let oranges = "3";

// both values converted to numbers before the binary plus
alert( +apples + +oranges ); // 5

// the longer variant
// alert( Number(apples) + Number(oranges) ); // 5

من وجهة نظر حسابية أو رياضياتية ، قد تبدو كثرة الزوائد شيئا غريبا لكن بالنسبة للمبرمج فلا يوجد شيء غريب : فالزوائد الأحادية تحول الكلمات إلى أرقام أولا ثم الزائد الثنائية تجمعهم معا

لماذا يتم تطبيق الزوائد الأحادية على القيم قبل الزوائد الثنائية ؟ كما سنرى فإن ذلك بسبب الأسبقية الأعلى

##أسبقية العوامل

إذا كان التعبير يحتوي على أكثر من عامل واحد ، فسيتم تحديد أمر التنفيذ من خلال * أسبقيته * ، أو بعبارة أخرى ، ترتيب الأولوية الافتراضي للعوامل.

من المدرسة ، نعلم جميعًا أنه يجب حساب الضرب في التعبير 1 + 2 * 2 قبل الإضافة. هذا هو بالضبط الأسبقية. ويقال أن الضرب له * أسبقية أعلى من الإضافة.

تلغي الأقواس أي أسبقية ، لذلك إذا لم نكن راضيين عن الترتيب الافتراضي ، فيمكننا استخدامها لتغييره. على سبيل المثال ، اكتب (1 + 2) * 2.

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

إليك مقتطف من [جدول الأسبقية] (https://developer.mozilla.org/en/JavaScript/Reference/operators/operator_precedence) (لست بحاجة إلى تذكر ذلك ، ولكن لاحظ أن عوامل التشغيل الأحادية أعلى من الخيارات الثنائية المقابلة) منها):

الأسبقية الاسم تسجيل