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

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

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



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

عبارات الاختيار Selection Statements :
تستند عبارات الاختيار على التعديل "المشروط" للتحكم فى سير البرنامج . على سبيل المثال ، إذا تم تقييم "شرط" بالقيمة TRUE ، عندئذ يتم تنفيذ جزء معين من البرنامج ، وإلا يتم تنفيذ جزء مختلف .
هناك عبارتين للاختيار : عبارات “if-else” وعبارة “switch-case” .

عبارات الاختيار if-else :
عبارة if :
عبارة “if” الأساسية لها الشكل التالى ، حيث التعبير expression عادة يتضمن عوامل منطقية أو عوامل علاقات مقارنة :

كود:
if(expression) statement;
• تستخدم عبارة if عندما يكون المطلوب تنفيذ عبارة ما "إذا تحقق شرط معين" .
• عبارة if تقييم (تختبر) تعبير الشرط expression الموجود داخل القوسين ( …) .
• إذا كانت نتيجة تقييم تعبير الشرط true ( قيمة غير صفرية) ، يتم تنفيذ العبارة statement (جسم if ) .
• إذا كانت نتيجة تقييم تعبير الشرط false(0) ، يتم تخطى تنفيذ العبارة statement (جسم if ) .
• لمعرفة المزيد عن تقييم تعبير الشرط ، راجع العوامل المنطقية وعوامل العلاقة .



فى المثال التالى ، إذا كان المتغير “p” يساوى “10” ، عندئذ فإن المتغير “k” يتم تزايده بواحد :

كود:
if(p == 10) k++;

ونظرا لأن المسافات البيضاء يتم إهمالها فى لغة السى فيمكن وضع العبارة statement فى سطر مختلف كما يلى :
if(p == 10)
k++;
عبارة if…else :
الصيغة العامة :

كود:
 if (expression) statement1 else statement2
• تستخدم عبارة if…else عندما يكون المطلوب تنفيذ عبارة ما statement1 عندما يتحقق شرط expression ، أوتنفيذ عبارة مختلفة statement2 إذا لم يتحقق هذا الشرط .
• عبارة “if” يمكن أن تستخدم مع “else” ، بحيث إذا كان تقييم تعبير الشرط expression بالقيمة true يتم تنفيذ العبارة التى تلى if (جسم if ) وتخطى تنفيذ العبارة التى تلى else .
• أما إذا كان تقييم التعبير expression بالقيمة false ، عندئذ يتم تخطى تنفيذ العبارة التى تلى if العبارة ، ويتم تنفيذ العبارة التى تلى “else” (جسم else) .



فى المثال التالى ، إذا كان المتغير Total يساوى MAX ، عندئذ يتم تزايد المتغير Sum بواحد ، وإلا (وأن لم يكن يساويه) يتم تناقص المتغير Sum بواحد :

كود:
if(Total == MAX) Sum++; else Sum–;

العبارة السابقة عادة يتم كتابتها بالشكل التالى :
if(Total == MAX)
Sum++;
else
Sum–;
• فى بعض التطبيقات ، قد نحتاج إلى تنفيذ أكثر من عبارة واحدة إذا كان الشرط TRUE أو FALSE . يتم تنفيذ ذلك بضم تلك العبارات داخل زوج من الأقواس “{}” ، كما هو مبين فى المثال التالى :

كود:
if(Cnt > Sum)
{
i = k + 4;
j = j*2;
}
if(i == 10 && Cnt < 100)
{
r1 = 2*x;
r2 = i + 4;
}
else
{
r1 = 0;
r2 = 0;
}

عبارة if…else المتداخلة ( عبارة if…else lf…else ):
عبارة if…else تنفذ كودين مختلفين بناء على كون اختبار الشرط بالقيمة true أو false . أحيانا يكون الاختيار من أكثر من احتمالين .
عبارة if…else المتداخلة تسمح لك بالتحقق من شروط متعددة وتنفيذ أكواد مختلفة لأكثر من شرطين .
صيغة عبارة if…else المتداخلة :

كود:
if (testExpression1) 
{
   // statements to be executed if testExpression1 is true
}
else if(testExpression2) 
{
   // statements to be executed if testExpression1 is false and testExpression2 is true
}
else if (testExpression 3) 
{
   // statements to be executed if testExpression1 and testExpression2 is false and testExpression3 is true
}
.
.
else 
{
   // statements to be executed if all test expressions are false
}
• عبارة if…else if…else تسمح لك بتنفيذ بلوك كود من بين بلوكات الأكواد الكثيرة المختلفة . إذا كنت تختبر شرط لمتغير واحد فإنه من الأفضل استخدام عبارة switch . عبارة switch غالبا ما تكون أسرع ، وواضحة البناء ، وسهلة الفهم .






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

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


عبارات الاختيار باستخدام switch :
هناك حالات حيث قد نرغب فى القيام بعمل اختبارات شروط متعددة الطرق . على سبيل المثال ، فى تطبيق نوع القائمة menu ، اختيار المستخدم يتم عن طريق مقارنة عدد من الخيارات ، ويتم القيام بفعل مختلف مع كل خيار . مثل هذا البرنامج يمكن أن يتم كتابته عاديا باستخدام عبارات الاختيار من النوع if…else . ومع ذلك ، عندما يكون هناك خيارات كثيرة ، فإن استخدام if…else يجعل البرنامج صعب القراءة .
عادة تستخدم عبارة switch فى اختبارات الشروط متعددة الطرق . الشكل العام لهذه العبارة كما يلى :

كود:
switch (condition)
{
case condition 1:
statements;
break;
case condition 2:
statements;
break;
....................
....................
case condition n:
statements;
break;
default:
statements;
break;
}
عبارة switch تعمل على النحو التالى :
فى البداية يتن تقييم (اختبار) المتغير condition .
إذا كان المتغير condition يساوى condition 1 ، عنئذ يتم تنفيذ العبارات التابعة للحالة condition 1 .
وإذا كان المتغير condition يساوى condition 2 ، عندئذ يتم تنفيذ العبارات التابعة للحالة condition 2 .
هذه العملية تستمر حتى الحالة condition n ، حيث إذا كان المتغير condition يساوى condition n ، عندئذ يتم تنفيذ العبارات التابعة للحالة condition n .
إذا كان المتغير condition لا يساوى أى من الحالات conditions 1 إلى n ، عندئذ يتم تنفيذ العبارات التابعة للحالة الافتراضية default .
لاحظ استخدام عبارات break فى كل بلوك حتى نتأكد من العودة إلى نهاية عبارات switch ( بعد قوس الإغلاق) ويتم القفز خارج بلوك الاختيار . بدون عبارات break ، فإن البرنامج سوف يستمر فى تنفيذ تلك العبارات المصاحبة للحالة التالية . عبارة break الأخيرة ليست إجبارية ، لأن بلوك switch يغلق بعد هذه العبارة . الحالة الافتراضية default هى خيار ويمكن تجنبها إذا كنا متأكدين من أن المتغير condition سوف يكون مساويا لواحد من conditions 1 إلى n .



المثال التالى يوضح جزء من برنامج تم تنفيذه باستخدام كل من عبارات الاختيار if…else و switch . وظيفيا ، الكودان يساوى كل منهما الآخر .


كود:
if(x == 1) 						switch(x)
statement1; 							{
else if(x == 2) 							case 1:
statement2; 								statement1;
else if(x == 3) 								break;
statement3; 							case 2:
else 									statement2;
statement4; 								break;
case 3:
statement3;
break;
default:
statement4;
}


المثال المبين أدناه ، يبين كيفية استخدام عبارة الاختيار switch .
المطلوب كتابة كود برنامج يستخدم عبارة switch لتحويل الحروف السداسية عشر من A إلى F إلى مكافئها العشرى . افرض أن حرف الدخل يتم تخزينه فى متغير يسمى chr ، والخرج يتم تخزينه فى المتغير y .
الحل : لعلك تتذكر أن المكافئات العشرية للأرقام السداسية عشر هى :




كود البرنامج المطلوب يكون بالشكل التالى :

كود:
switch (chr)
{
case ‘A’:
y = 10;
break;
case ‘B’:
y = 11;
break;
case ‘C’:
y = 12;
break;
case ‘D’:
y = 13;
break;
case ‘E’:
y = 14;
break;
case ‘F’:
y = 15;
break;
}

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

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


جهد مبارك اعانك الله وجعل لك بكل حرف حسنة 🤗🤗🤗🤗

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

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,803
نشاط [ مسلم11 ]
قوة السمعة:185
قديم 07-06-2017, 01:50 AM المشاركة 4   
افتراضي


بارك الله بك
للرفع


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:152
قديم 12-06-2017, 07:10 PM المشاركة 5   
افتراضي


بارك الله فيك استاذى العزيز لديه سؤال لو سمحت مالفرق بين if العادية و if#


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


بارك الله فيك استاذى العزيز لديه سؤال لو سمحت مالفرق بين if العادية و if#
الترجمة المشروطة Conditional Compilation :
توجيهات قبل المعالج الشرطية

كود:
 #if, #elif, #else, #endif
تعمل بشكل مشابه إلى حد كبير لعبارات الشرط فى لغة السى (عبارات if) .
يقوم موجه الشرط #if باختبار تعبير الشرط expression :
• إذا كانت النتيجة true (غير صفر) ، يتم السماح للمترجم بترجمة وضم العبارات التالية (حتى التوجيه التالى #else, #elif, or #endif ) .
• أما إذا كانت النتيجة (صفر) ، لا يتم السماح للمترجم بترجمة العبارات السابقة .


كود:
#if expression
.
.
.
#endif

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

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




الترجمة المشروطة Conditional Compilation :
توجيهات قبل المعالج الشرطية

كود:
 #if, #elif, #else, #endif
تعمل بشكل مشابه إلى حد كبير لعبارات الشرط فى لغة السى (عبارات if) .
يقوم موجه الشرط #if باختبار تعبير الشرط expression :
• إذا كانت النتيجة true (غير صفر) ، يتم السماح للمترجم بترجمة وضم العبارات التالية (حتى التوجيه التالى #else, #elif, or #endif ) .
• أما إذا كانت النتيجة (صفر) ، لا يتم السماح للمترجم بترجمة العبارات السابقة .


كود:
#if expression
.
.
.
#endif
بعبارة أخرى ، "if" هى كلمة محجوزة من كلمات لغة السى ، فى حين أن "f#" هى "توجيه قبل المعالج" وقبل المعالج هو برنامج صغير ضمن المترجم يعمل قبل بدء الترجمة ليوجه المترجم عما ينبغى أن يفعلة .

مع تمنياتى بدوام التوفيق

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

الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:152
قديم 13-06-2017, 08:43 PM المشاركة 8   
افتراضي


بارك الله فيك استاذى العزيز شكرا على التوضيح

إضافة رد

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

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

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


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

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