القائمة الرئيسية

الصفحات

أخبار الرياضة

شرح العمليات المنطقية في البرمجة c++

شرح العمليات المنطقية في البرمجة c++

لم نناقش هذا الموضوع في الدروس السابقة ولـيس السـبب فـي ذلـك عــدم أهـميتـه بـل إن السـبب يعــود بالدرجــة الأولـى إلـى تأجيـل الموضـوع لحـين ظهـور فائدتـه وبالتالي التأكيد على أهـميتـه .
الدرس4- شرح المعاملات المنطقية: العمليات المنطقية في البرمجة c++

تستخدم المعاملات المنطقية كثيراً في الجمل الشرطيـة: والسبب في ذلـك إلى أنها تناور الجملـة if وتجعلها تقبل أكثر من شرط مع العلم أن الجملـة if لاتقوم باختبار أكثر مـن شـرط ولكـن بواسطــة المعـاملات المنطقيـة فبإمكانـك جعل أكثر من شرط شرطاً واحداً وبالتالي تستطيع مناورة الجملـة if .صحيح أننا قمنا بمناقشـة بعضاً من هذا الموضوع في الدروس السابقة.

أقراء أيضاً 

  1. الدرس الثالث- شرح if الشرطية: الجمل الشرطية if  وelse و if else
  2. الدرس 2: تعليم البرمجة اساسيات البرمجة لغة السي بلاس للمبتدئين

ثلاث معاملات منطقية مهـمـة وهـي :

  1. معامل ( و) And : ورمزه && .
  2. معامل ( أو ) OR : ورمزه || .
  3. معامل (ليس) Not: ورمزه ! .


المتغيرات المنطقية في البرمجة: المعاملات المنطقية في c++


المعامل المنطقي (And ):

هــذا المعامـل يقـوم باختبــار تعبيــرين وإذا كــان كلاهــما صــحيحاً فإنــه يرجـع بالقيمـة true ، لنفرض أنك تقوم بكتابة برنـامج يقـوم باختبـار درجـات الطـلاب وإعطاؤهـم التقدير المناسب ، فإنك ستكتب لحساب التقدير ممتاز هـكذا:
if ( (total > 90) && (total < 100) )

وبالتــالي فلـن تعــمل الجملــة if إلا إذا كــان التعبيــرين صــحيحين أمـا إذا كــان أحدهـما صحيح فلن تعمل الجملة if

المعـامل المنطقي ( OR ):

يقوم المعامل باختبار تعبيرين وفي حال كان أحد التعبيرين صحيحاً فإنـه يرجع بالقيمـة true ، لنفرض أنك تـود إضـافة جملـة شرطيــة تقـوم بالتأكـد مـن أن
المستخدم أدخل رقماً صـحيحاً (نتحـدث هــنا عــن برنـامج درجـات الطـلاب) ، فإنك ستجعل الجملـة if هـكذا:
if ( (total < 0) || (total > 100))

وبالتالي فستعـمل الجملــة if إذا أدخـل المسـتخدم عــدداً أصـغر مـن الصـفر وستعـمل أيضاً إذا أدخل عـدداً أكبر من 100 .

المعامل المنطقي ( NOT ) :

يقوم هذا المعامل باختبار تعبير واحد وهي تعـود بالقيمـة true إذا كان التعبير الذي يجري اختباره خـطأ  لنفرض أنك تود كتابة برنامج يقوم المسـتخدم مـن خلالـه بإدخـال عــددين اثنــين ثـم يتأكـد البرنـامج إن كــان العـدد الثــاني لــيس قاسماً للعدد الأول (ليكون قاسماً لا بد أن يكون خارج باقي القسمـة يسـاوي الصفر).
انظر لهذا الكـود:
if (! (numberOne% numberTwo == 0 ))
وبالتالي ففي حال كان خارج القسمـة يساوي الصفر فلن يـتم تنفيـذ الجملـةif
برنامج تقدير و درجات الطلاب
برنامج يقوم الطالب فيه بإدخال درجتـه:ثم يقوم الحاسب بإعطائه التقدير (ممتاز أم جيد .. إلخ) .وسنستخدم في هذا المثال العبـارة else/if والمعـاملات المنطقيــة وبـالطبع

ففي نهاية هذه الدورة سنقوم بتطوير الكـود ليقدم خدمات أكثر فائدة. وربمـا في المستقبل تستطيع تطويره ليصبح مشروعاً رسومي متكاملاً.

#include
 using namespace std;
 int main()
{
 float degree=0;
 char mark;
cout << "Please Enter Your degree:\t";
 cin >> degree ;
if ((degree <=100) && (degree>= 90))
mark='A' ;
else if ((degree <90 degree="">= 80))
mark='B' ;
 else if ((degree <80 degree="">= 70))
mark='C' ;
else if ((degree <70 degree="">= 60))
mark='D' ;
 else if ((degree <60 degree="">= 0))
mark='F' ;
 else if((degree >100) || (degree < 0)){
 cout << "False degree" << endl;
return 0 ;
 }
else { 
cout << "Bad command" << endl; 
 return 0;
}  
 cout << endl;
 cout << "Your Mark:\t" << mark; 
 cout << endl;
 return 0
}

في السطر 5 و7 قمنا بالإعلان عـن متغيـرين اثنـين المتغيـر الأول هــو درجــة الطالب والمتغير الثاني هـو تقدير الطالب. في السطر 10 يطلب البرنامج من المستخدم إدخال درجتـه ثم ينتقل التنفيـذ إلى عبارات else/if ، ولنفـرض أن المسـتخدم أدخـل كدرجــة لـه العــدد 102
وكما تعلم فإن هذه الدرجـة غير صحيحـة لأنها تجاوزت الدرجـة النهائية وهـي 100 ، وبالتالي فإن التنفيذ سيصل للجملـة if التي تعـالج هـذا الوضـع وهــي موجودة في السطر 19 وهـي كالتالي:
else if((degree >100) || (degree < 0)){
 cout << "False degree" << endl;
return 0 ;
}
كما ترى فإن التعبيرين الذين تقـوم الجملــة else/if باختبارهــما ، إذا مـا كـان أحدهــما صــحيحاً فسـتقوم بتنفيــذ نفسـها وإلا فسـتمنع البرنـامج مــن تنفيــذ السـطر الثــاني والثالـث وكمـا تــرى فــإن التعبيــر الأول فــي حــال مــا أدخـل المستخدم الدرجـة 102 يعيد القيمـة true وبالتالي يتجاهـل البرنـامج التعبيـر الثــاني ولا يقـوم باختبــاره أمـا إذا كــان التعبيــر الأول يعيــد القيمـة false فلـن يتجاهل التعبيـر الثـاني وسـيقوم باختبـاره ، بالنسـبة لحالتنـا الأولـى فسـيتم تنفيذ السطر الثاني والثالث ، وكما ترى ففـي السـطر الثـاني يقـوم البرنـامج

بطباعــة الجملــة False degree ثــم حينمـا يصـل للسـطر الثالـث يــتم إنهـاء البرنامج بواسطـة الكلمـة return 0 وهذا الفعـل صـحيح 100% ولا يعيبـه أي خـطأ أو حتى تحذير من المترجم ، أما بالنسبة لإنهائنا البرنامج فيعــود إلا أننـا لا نريد من البرنامج أن يكون مضحكاً حاول أن تقوم بإلغـاء السـطر الثالـث مـن الكـود ثم أعـد تنفيـذ البرنـامج وانظـر مالـذي سـيحدث والنتـائج الغريبـة التـي ستظهر. بالنسبة لبقيـة عبـارات else/if فـلا جــديد فيهـا وتقـوم فقـط باختبـار الدرجــة المعطاة وإظهار التقدير العام للدرجـة.

تعليقات