قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 23-05-2017, 06:19 PM المشاركة 1   
افتراضي العوامل الرياضية ، والمنطقية ،و.... مع المترجم ميكروسى برو Twitter FaceBook Google+



العوامل والمترجم ميكروسى برو C Operators :
العوامل operators هى رموز تطبق على المتغيرات للقيام ببعض العمليات . على سبيل المثال ، رمز الجمع “+” هو عامل ويتسبب فى تغيير قيمة المتغير . فى المترجم ميكروسى برو يمكن تصنيف العوامل على أنها "أحادية" unary أو "ثنائية" binary . العوامل الأحادية تتطلب متغير واحد فقط وتعمل على هذا المتغير ، على سبيل المثال تغيير إشارة المتغير . ومن الجهة الأخرى ، العوامل الثنائية تعمل على متغيرين ، على سبيل المثال جمع عددين .
العوامل فى الميكروسى برو يمكن أن تكون عوامل رياضية arithmetical ، عوامل منطقية logical ، عوامل مختصة بالبت bitwise ، عوامل العلاقات (المقارنة) relational ، عوامل التخصيص أو التعيين assignment . فى هذه الجزء سوف نتناول هذه العوامل بالتفصيل ونتعرف على كيفية استخدامها فى البرامج .

العوامل الرياضية Arithmetic Operators :
تستخدم العوامل الرياضية فى إجراء العمليات الحسابية . الجدول المبين أدناه يوضح قائمة بالعوامل الرياضية . جميعنا نعرف عوامل الجمع والطرح والضرب . باقى العوامل الرياضية تحتاج لبعض الشرح والفهم قبل استخدامها .



معامل "القسمة" “\” يقوم بقسمة عددين . إذا كانت الأعداد حقيقية (عدد حقيقى وكسر عشرى) ، عندئذ فإن استخدام رياضة الكسور العشرية floating point سوف تعطى نتائج صحيحة . ولكن ، إذا كان العدديت أعداد صحيحة integer ، فإن القسمة قد تعطى نتائج خاظئة ، كما هو مبين بالمثال التالى :

كود:
int x, y, z;
x = 3;
y = 4;
z = x/y; //The result is 0
• نتيجة قسمة عددين صحيحين تكون عدد صحيح ، ويتم التخلص من باقى القسمة ، كما فى المثال التالى :

كود:
7 / 4;          /* equals 1 */
7 * 3 / 4;      /* equals 5 */

/* but: */
7. * 3. / 4.;   /* equals 5.25 because we are working with floats */
عامل "الباقى" “%” يستخدم للحصول على الباقى بعد أن يتم قسمة عددين صحيحين . فى المثال التالى ، العددين 5 و 7 يتم قسمتهما باستخدام عامل الباقى والنتيجة تكون 2 وهى الباقى (فى حين أن خارج القسمة يكون 1 )

كود:
int x, y, z;
x = 5;
y = 7;
z = 7 % 5; //z = 2 (the remainder)
عامل التزايد التلقائى “++” يستخدم فى تزايد قيمة المتغير بواحد “1” ، بدون استخدام عامل التخصيص “=” ، كما فى المثال التالى :

كود:
int x;
x = 5;
x++; 	//x = 6
بالمثل ، عامل "التناقص" التلقائى “--" يستخدم فى تناقص قيمة المتغير بواحد “1” ، بدون استخدام عامل التخصيص ، كما فى المثال التالى :

كود:
int x;
x = 8;
x--; //x = 7
عامل التزايد وعامل التناقص يمكن أن يستخدما فى عمليات التخصيص . القيمة المخصصة للمتغير تتغير تبعا لمكان وضع الرمز “++” أو الرمز“--" ، إلى يسار أو إلى يمين المتغير . فى المثال التالى ، قيمة المتغير Sum الابتدائية هى “10” . يتم تخصيص المتغير Sum إلى المتغير Total ثم بعد ذلك يتم يتم تزايده تلقائيا . نتيجة لذلك ، عند النهاية ، المتغير Sum يحتوى على “11” والمتغير Total يحتوى على “10” (التخصيص أولا ثم التزايد (بعد)) .

كود:
int Sum, Total;
Sum = 10;
Total = Sum++; //Total = 10, Sum = 11
فى المثال التالى ، يتم تزايد المتغير Sum ثم بعد ذلك التخصيص إلى المتغير Total . نتيجة لذلك ، فى نهاية المطاف ، المتغير Sum يحتوى على “11” والمتغير Total يحتوى على “11” (التزايد أولا (قبل) ، ثم التخصيص) .

كود:
int Sum, Total;
Sum = 10;
Total = ++Sum; //Total = 11; Sum = 11
ونفس الشىء يحدث عندما نستخدم عامل التناقص ، كما فى المثال التالى :  
int Sum, Total;
Sum = 10;
Total = Sum--; //Total 10, Sum = 9
Total = --Sum; //Total = 8, Sum = 8
ملحوظة :
يمكن استخدام العوامل الرياضية من أجل التعامل مع الأحرف ، كما فى المثال التالى :

كود:
'A' + 32;         		 /* equals 'a' */
'G' - 'A' + 'a';  		 /* equals 'g' */

احصائية الشكر والاعجاب - 2 شكراً, 0 عدم اعجاب, 2 اعجاب
شكراً عبدالله حجازى, مسلم11 ( شكر العضو على هذه المشاركة )
اعجاب عبدالله حجازى, مسلم11 ( أعجبته المشاركة )
اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 23-05-2017, 07:13 PM المشاركة 2   
افتراضي


العوامل المنطقية Logical Operators :
تستخدم العوامل المنطقية فى العمليات المنطقية والرياضية . الجدول أدناه يبين قائمة بالعوامل المنطقية بالميكروسى برو :



فيما يلى مثال لاستخدام العوامل المنطقية :

كود:
Assume x = 10, y = -2
x > 0 && y < 0 	//Returns TRUE (1)
x > 0 			//Returns TRUE (1)
y < 0 			//Returns TRUE (1)
x > 0 || y < 0 		//Returns TRUE (1)
x < 0 			//Returns FALSE (0)
معاملات العوامل المنطقية إما أن تكون صواب true أو خطأ false ، بعبارة أخرى قيمة "غير الصفر " أو قيمة "الصفر" . نتيجة (راجع أو مردود) العوامل المنطقية دائما تكون “1” أو “0” .
نتيجة (راجع أو مردود) العامل المنطقى AND && يكون بواحد “1” فقط إذا كان تقييم معامليه بقيمة "غير الصفر" . إذا كان تقييم المعامل الأول false فلن يتم تقييم العامل الثانى ، كما فى المثال التالى :

كود:
a > b && c < d;     /* reads as  (a > b) && (c < d) */
/* if (a > b) is false (0), (c < d) will not be evaluated */
نتيجة العامل المنطقى OR || تكون بواحد “1” إذا كان تقييم أى من معامليه بقيمة غير الصفر ، وإلا كانت النتيجة بصفر . إذا كان تقييم المعامل الأول true ، فإن العامل الثانى لن يتم تقييمه ، كما فى المثال التالى :

كود:
a && b || c && d;  /* reads as: (a && b) || (c && d) */
/* if (a && b) is true (1), (c && d) will not be evaluated */

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً مسلم11 ( شكر العضو على هذه المشاركة )
اعجاب مسلم11 ( أعجبته المشاركة )
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 23-05-2017, 07:22 PM المشاركة 3   
افتراضي


العوامل المختصة بالبتات Bitwise Operators :
بالإضافة إلى العوامل الرياضية والمنطقية ، فإن العوامل المختصة بالبتات تستخدم فى تعديل بتات المتغير ، كل بت على حدة . الجدول أدناه يبين العوامل المختصة بالبتات فى الميكروسى برو .
هذه العوامل يمكن أن تستخدم فقط مغ المتغيرات من نوع العدد الصحيح .



العامل “&” يقوم بإجراء عملية AND على البتات (كل على حدة) الخاصة بعامليه . كل بت للمعامل الأول يتم عمل AND لها مع البت المناظرة للمعامل الثانى . البت الناتجة تكون واحد “1” فقط إذا كانت كل من البتين المناظرين بواحد “1” ، وإلا كانت النتيجة بصفر “0” ، كما فى المثال التالى :

كود:
int x, y, z;
x = 0xF0E0; 		//x = “1111 0000 1110 0000”
y = 0x0F71; 		//y = “0000 1111 0111 0001”
z = x & y; 		//z = “0000 0000 0110 0000” i.e. 0x0060
العامل “|” يقوم بإجراء عملية OR على بتات معاملية (كل بت على حدة ) . كل بت من المعامل الأول يتم عمل OR لها مع البت المناظرى للمعامل الثانى . البت الناتجة تكون بواحد “1” إذا كان أى من البتات المناظرة بواحد “1” ، وإلا فإن البت الناتجة تكون بصفر ، كما فى المثال التالى :

كود:
int x, y, z;
x = 0xF0E0; 		//x = “1111 0000 1110 0000”
y = 0x0F71; 		//y = “0000 1111 0111 0001”
z = x j y; 		//z = “1111 1111 1111 0001” i.e. 0xFFF1
العامل “^” يقوم بإجراء عملية XOR على بتات معامليه (كل بت على حدة ) ، كل بت من المعامل الأول يتم عمل XOR لها مع البت المناظرة للمعامل الثانى . البت الناتجة تكون بواحد “1” إذا كان أحد البتين فقط بواحد “1” ، وإلا فإن البت الناتجة تكون بصفر ، كما فى المثال التالى :

كود:
int x, y, z;
x = 0xF0E0; 		//x = “1111 0000 1110 0000”
y = 0x0F71; 		//y = “0000 1111 0111 0001”
z = x ^ y; 		//z = “1111 1111 1001 0001”  i.e. 0xFF91
العامل “~” يقوم بإجراء عملية "تكملة" complement لبتات معامله (أحادى المعامل) . كل بت على حدة يتم "تكملتها" أى الصفر “0” يصبح واحد “1” والواحد “1” يصبح صفر “0” ، كما فى المثال التالى :

كود:
int x, y;
x = 0xF0E0; 		//x = “1111 0000 1110 0000”
y = ~x ; 		//y = “0000 1111 0001 1111” i.e. 0x0F1F

العامل “<<” يقوم بإجراء عملية "إزاحة" shift جهة "اليسار" . يتم عمل إزاحة لمعامله (أحادى المعامل) لجهة اليسار بعدد “n” من البتات ، حيث “n” يتم تحديدها بمعرفة المبرمج . يتم ملو بتات الجانب الأيمن للمتغير أى البتات ذات القيمة الأدنى LSB بأصفار ، فى حين يتم فقد البتات الموجودة على الجانب الأيسر للمتغير أى البتات ذات القيمة الأقصى MSB .
إزاحة المتغير إلى جهة اليسار بواحد بت هو نفسه مثل الضرب فى “2” ، وإزاحة المتغير إلى جهة اليسار “2” بت هو نفسه مثل الضرب فى “4” وهكذا ، لكن عملية الإزاحة تكون أسرع بكثير كما فى المثال التالى :

كود:
 int x, y;
x = 3;
y = x << 2; 		//y = 12
الشكل التالى يبين العملية الفعلية للإزاحة جهة اليسار ، المبينة فى المثال السابق :






العامل “>>” يقوم بعملية إزاحة جهة اليمين . يتم عمل إزاحة لجهة اليمين لبتات معامله (أحادى المعامل) “n” من البتات ، حيث “n” يتم تحديدها بمعرفة المبرمج . بتات الجانب الأيسر للمتغير أى البتات ذات القيمة القصوى MSB يتم ملوها بأصفار ، فى حين أن بتات الجانب الأيمن للمتغير أى البتات ذات القيمة الأدنى LSB يتم فقدها .
إزاحة المتغير لجهة اليمين بواحد بت هو نفسه قسمة المتغير على “2” ، وإزاحة المتغير “2” بت هو نفسه قسمة المتغير على “4” وهكذا ، لكن عامل الزحزحة يكون أسرع بكثير، كما فى المثال التالى :
int x, y;
x = 12;
y = x >> 2; //y = 3

الشكل التالى يبين العملية الفعلية للإزاحة جهة اليمين ، المبينة فى المثال السابق :




احصائية الشكر والاعجاب - 2 شكراً, 0 عدم اعجاب, 2 اعجاب
شكراً عبدالله حجازى, مسلم11 ( شكر العضو على هذه المشاركة )
اعجاب عبدالله حجازى, مسلم11 ( أعجبته المشاركة )

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 23-05-2017, 07:29 PM المشاركة 4   
افتراضي


عوامل العلاقة أو المقارتة Relational Operators :
تستخدم عوامل العلاقة فى العمليات "الشرطية" ، اختبار التساوى أو عدم التساوى ، والتى تغير مسار التحكم فى البرنامج .
يكون العائد (النتيجة) بواحد “1” إذا كان تقييم عملية العلاقة "صواب" TRUE ، وإلا فإن العائد يكون بصفر “0” .
الجدول التالى يبين قائمة بعوامل العلاقة بالميكروسى برو .



هذه العوامل شائعة الاستخدام فى جميع لغات البرمجة ، لكن الرموز المستخدمة قد تتغير .
من المهم أن تلاحظ أن عامل "التكافىء" “==” يتكون من علامتى تساوى . الخطأ الشائع هو استخدام علامة تساوى واحدة “=” كعامل علاقة ، والذى سوف يترجم على أنه عامل تخصيص .
فيما يلى بعض الأمثلة لاستخدام عوامل العلاقة :

كود:
x = 20;
x > 10; 		//Returns 1 (TRUE)
x <= 0; 		//Returns 0 (FALSE)
x != 5; 			//Returns 1 (TRUE)


احصائية الشكر والاعجاب - 2 شكراً, 0 عدم اعجاب, 2 اعجاب
شكراً عبدالله حجازى, مسلم11 ( شكر العضو على هذه المشاركة )
اعجاب عبدالله حجازى, مسلم11 ( أعجبته المشاركة )

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 23-05-2017, 07:31 PM المشاركة 5   
افتراضي


عامل التخصيص Assignment Operator :
يستخدم عامل التخصيص “=” لتخصيص (تعيين) نتيجة التعبير إلى متغير ، ويسمى التخصيص البسيط . الشكل العام لعملية التخصيص يكون كما يلى :

كود:
variable = expression;
فى المثال التالى ، مجموع المتغيرين a و b يتم تخصيصه إلى المتغير c :

كود:
c = a + b;
المترجم ميكروسى برو يعتمد أيضا عمليات "التخصيص المركب" ، وتستخدم عندما يظهر المتغير على كل من الجانب الأيسر والجانب الأيمن لعامل التخصيص . على سبيل المثال ، اعتبر التعبير أدناه ، حيث يتم إضافة المتغير a إلى المتغير b ويتم تخزين النتيجة مرة أخرى فى المتغير a :

كود:
a = a + b;
باستخدام عامل التخصيص المركب ، يمكننا كتابة العبارة السابقة بالشكل الآتى :

كود:
a += b;
قيما يلى عوامل التخصيص المفيدة الأخرى :

كود:
-= 			subtraction
*= 			multiplication
/= 			division
&= 			AND
|= 			OR
>>= 			right shift
<<= 			left shift
^= 			exclusive OR
ملاحظة : ترك مسافة بين العوامل ، مثل ‘+ =’ يؤدى إلى ظهور خطأ عند الترجمة .

احصائية الشكر والاعجاب - 3 شكراً, 0 عدم اعجاب, 3 اعجاب
شكراً سعيد قادر, عبدالله حجازى, مسلم11 ( شكر العضو على هذه المشاركة )
اعجاب سعيد قادر, عبدالله حجازى, مسلم11 ( أعجبته المشاركة )

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,803
نشاط [ مسلم11 ]
قوة السمعة:184
قديم 30-05-2017, 08:57 PM المشاركة 6   
افتراضي


شكرا شكرا لك اخي الكريم
بارك الله بك .

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 0 اعجاب
شكراً F.Abdelaziz ( شكر العضو على هذه المشاركة )

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,803
نشاط [ مسلم11 ]
قوة السمعة:184
قديم 22-06-2017, 08:39 PM المشاركة 7   
افتراضي


شكرا لك
للرفع

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 02:08 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025