جود ثيمز

الثلاثاء، 23 يوليو 2013

المعاملات الرياضية والمنطقية في ++C

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

ماهي المعاملات أو Operators :

المعاملات أو Operators بشكل عام هي تلك الرموز (وقد تكون كلمات مثل new) التي نستخدمها لاداء عملية معينة سواء كانت عملية رياضية كالجمع والطرح أو عملية منطقية أو أي عمليات أخرى , مثلاً معامل الإسناد (assignment operator) '=' الذي استخدمناه لإسناد القيم للمتغيرات :
price = 1000;
أو معامل المقارنة أكبر من (<) الذي يفحص اذا كانت القيمة التي على اليسار اكبر من القيمة التي عن اليمين وسيتخدم في الجمل الشرطية وجمل التكرار .. وغيرها من المعاملات .
الجدول التالي يوضح لك المعاملات الرياضية والمنطقية المستخدمة في لغة ++C :

معاملات الزيادة والنقصان :

هناك معاملات أخرى مثل معامل الزيادة أو Increment Operator (++) ووظيفته أنه يقوم بإضافة واحد إلى المتغير الذي يستخدم معه , ومثله معامل النقصان Decrement Operator (--) الذي يقوم بإنقاص واحد من المتغير الذي يستخدم معه , انظر لهذا المثال :
int x = 10;
x++;
cout << x; // 11
x--;
cout << x; // 10
هناك نوعين من معاملات الزيادة والنقصان , الأول هو Postfix , والثاني هو Prefix , وهما يؤديان نفس الوظيفة اذا استعملتهما بشكل منفرد (كما فعلنا في المثال السابق) ولكن هناك فرقان بينهما :
الفرق الأول :  أن Postfix يأتي بعد المتغير (يعني : ++x أو --x) , أما Prefix فيأتي قبل المتغير (يعني : x++ أو x--) .
الفرق الثاني : أن Prefix يزيد المتغير بواحد أولاً ثم يمكنك استعمال المتغير فيما تريد , مثلاً :
int x=0, y=0;
x = ++y; /* x في قيمته يضع ثم أولاً بواحد y يزيد */
cout << x << " " << y; /* 1  1 */
في الكود أعلاه قام معامل الزيادة بزيادة المتغير y بواحد فأصبحت قيمته تساوي 1, ثم جعلنا x تساوي y فأصبحت قيمة x تساوي 1 .

ولكن Postfix يمكنك من استعمال قيمة المتغير أولاً ثم يزيده بواحد , نفس المثال السابق :
int x=0, y=0;
x = y++; /* بواحد y يزيد ثم y يساوي x يجعل */
cout << x << " " << y; /* 0  1 */
في الكود أعلاه جعل أولاً قيمة x تساوي قيمة y فأصبحت قيمة x تساوي 0 , ثم قام معامل الزيادة بزيادة المتغير y بواحد فأصبحت قيمة y تساوي 1 .

معاملات الاسناد :

هناك أربعة معاملات اسناد أخرى وهي : معامل الاسناد والاضافة (=+) ومعامل الاسناد والطرح (=-) ومعامل الاسناد والضرب (=*) ومعامل الاسناد والقسمة (=/) .
وظيفة هذه المعاملات أنها تقوم بعملية حسابية رياضية مع اسناد في وقت واحد , مثلاً لو كان لدي متغير x وقيمته تساوي 10 وأردت اضافة 6 إليه ستصبح قيمة x تساوي 16 , وسيكون الكود كالتالي :
int x = 10;
x = x + 6;   /* x = 10 + 6 */
cout << x;  /* 16 */
نفس العملية السابقة سنفعلها ببساطة باستخدام المعامل (=+) , سيكون الكود كالتالي :
int x = 10;
x += 6;   /* x = x+6 = 10+6 */
cout << x;  /* 16 */
مثال آخر :
int i = 9;
i /= 3;  /* i = i/3 = 9/3 = 3 */
عليك بالتدرب لفهم هذا الدرس جيداً فهو يعتبر مدخلاً إلى جزء مهم جداً من أساسيات لغة البرمجة وهو الجمل الشرطية مثل جملة if...else وجمل التكرار مثل جملة for .