تعلم البرمجة بلغة c للمبتدئين الدرس 7 : الاوامر الشرطية if و else

Header Ads

تعلم البرمجة بلغة c للمبتدئين الدرس 7 : الاوامر الشرطية if و else

قد تعرفنا من اول درس في الدورة انه يوجد العديد من لغات البرمجة , و سوف تجد اوجه تشابه عديدة فيما بينها لان جُلها مستوحى من لغة البرمجة C , هذا راجع الى انها تم اختراعها منذ اكثر من ثلاثين سنة ,  لذلك يطلق عليها اسم ام اللغات , ما يجعلها مرجع للغات برمجة حديثة .
في النهاية سوف تجد تقارب كبير بين العديد من اللغات من حيث كتابة الاكواد لان المصممين و المبرمجين الذين اخترعوها يعتمدون على الاقدم كاساس لبناء الجديدة .

و حين نتكلم عن الاساس نحن في لب الموضوع حيث اننا تعرفنا على المتغيرات و الحساب بها و الان سوف نتعرف على الجمل الشرطية , بدون شروط برنامجك سوف يقوم دائما بنفس الشئ مهما كان الحال , هذا ما يحُد من قدراته كثيرا , سوف نتعلم في هذا الدرس كيف يمكننا تخطي هذه الاشكالية و منح استعمال اوسع .

 الجمل الشرطية if و else

conditional الشروط تستعمل لتجربة او اختبار المتغيرات , يمكننا القول مثلا لو ان المتغير يساوي "القيمة" 10 افعل مايلي ( او افعل هذا و هذا ) , لكن يمكن العمل على امُور اخرى غير القيمة التي تساوي المتغير , يجب ان يمكن اختبار " test " ان كان المتغير اقل او يساوي من 10 , اكبر , اكبر او يساوي ... الخ .

لكي ندرس الشروط او الجمل الشرطية في لغة البرمجة سي مثل if و else , سوف نتبع هذا المنهج :

1 - نتعرف على القليل من الرموز  .
2 - اختبار if .
3 - اختبار else .
4 - اختبار else if .
5 - العمل بعدة شروط في نفس الوقت .
6 - التعرف و تجنب الاخطاء الشائعة .

قبل ان نبداء في طريقة كتابة جملة شرط if او else في لغة البرمجة C , يجب ان تتعرف على القليل من الرموز الاساسية , هذه الرموز مهمة جدا للتمكن من العمل عليها , لكن لا تخشى من شئ انت تعرفها جيدا .

اليك بعض الرموز للشروط في لغة البرمجة C , هذا جدول مبسط للرموز المستعملة و التي سوف نعمل عليها :


ملاحظة : انتبه جيدا هناك مرتين رمز ياوي = في الرمز الاول "==" لاختبار التساوي , الخطاء الشائع عند المبتدئين هو وضع علامة = واحدة , ما ليس له نفس المعنى في لغة البرمجة C , سوف نرجع اليها في ما بعد .

اختبار بسيطة باستعمال الجملة الشرطية if

- اذا ( او لو ) المتغير يريد هذا
- قُم  بما يلي ( او افعل هذا) .

في الانجليزية الكلمة if تعني لو ( او اذا ) , هذا ما نستعملة في لغة C لادخال شرط :
تكتب if بعدها تفتح قوصين ( ) , و بداخل القوصين تكتب الشرط .
بعدها تفتح حاضنتين { } , و كل ما يكون داخل الحاظنتين سوف يطبق .


الان في مكان تعليقي داخل الكود , سوف نكتب شرط لاختبار متغير .

مثال : يمكن تجربة المتغير age الذي يحتوي على سن المستعمل كما استعملناه للشرح في درس سابق , لنجربه في مثال بسيط و نعرف ان كان مستعمل برنامجنا يبلغ سن الرشد و هو 18 سنة على هذا الشكل :


الرمز =< يعني  اكبر او يساوي مثل ما رايناه في الجدول اعلاه .

ملاحظة : ان كان هنالك instruction واحدة داخل الحاضنتين مثل ما قمنا به في المثال , في هذا الحال فقط وضع الحاضنتين امر ثانوي , بمعنى ان تضع الحاضنتين او لا لن ياثر على حسن عمل برنامجك , لكن انا احفزك على وضعها مهما كان الحال , لكي يكون الكود واضح بالنسبة لك و لغيرك .

اختبار ما تعلمناه من if داخل كود 

لو انك تريد test الكود الذي تعلمناه الان لترى كيف يعمل if , يجب ان تضع ال if داخل function كالتي نعرفها main , و لا تنسى الاعلان عن المتغير age و ان نعطيه value الذي تريد .

الامر قد يكون بديهي لمتابعين الدورة من الاول , لكن لمن لم يحفظ كل شئ و لا يزال يعاني "قليلا" اليك كود ما كنا نشرحه الان بالطريقة التي يجب ان تكتبها داخل المترجم IDE  :


في المثال اعطيت قيمة للمتغير age و حددتها في 20 , في هذه الحالة لو انني شغلت البرنامج على code::blocks ,  سوف تظهر لي رسالة You are major على الشاشة لانه يلبي الطلب اي الشرط و يكون صحيح نقول انه true .
كلمة True بالانجليزية تعني صحيح , بمعنى ان الشرط يمكن تطبيقه ما يادي ببرنامجنا الى الطور الثاني و هو اظهار عبارة You are major  على شاشة الكمبيوتر .

جرب اعطاء قيمة مختلفة للمتغير age مثلا 12 , في هذه الحالة الشرط يكون خاطئ و لا يظهر اي شئ ( عبارة انت بالغ ) على الشاشة , هنا نقول ان الشرط false .
كلمة False بالانجليزية تعني خاطئ او خاظئة (القيمة) , بمعنى ان الشرط لا يمكن تطبيقه و برنامجنا لا يستطيع المواصلة .

احتفظ بهذا الكود لاننا سوف نجري عليه بعض التعديلات و الاضافات في ما يلي من الشرح لكن عليك معرفة اشياء قبل هذا .

النظام و التوضيح داخل الكود
عليك العلم ان طريقة او مكان وضع الحاضنتين غير مهمة داخل الكود , برنامجك سوف يشتغل حتى لو انك تقوم بفتح الحاضنتين في نفس السطر كالتالي :


لكن حتى لو كان من الممكن كتابة الشرط بهذه الطريقة , لا نفعله و لا ينصح به ابدا ,لان كتابة كل شئ على نفس السطر يجعل من الكود صعب للقراءة , لو انك تاخد عادات سيئة من الان ففي المستقبل حين تكتب اكواد كثيرة داخل برنامج لن تستطيع فهم شئ .

ادا حاول اخد نفس الطريقة التي استعملها في كتابة اكواد ( source code ) , تفتح حاضنة في سطر بعدها في السطر التالي تكتب ال instructions و في سطر جديد تغلق الحاضنة .

ملاحظة : توجد االعديد من الطرق الجيدة و اللائقة لعرض كود , و هي لا تشكل عائق في حسن عمل البرنامج , لكن يمكن اعطائه اسم "computer style" ان اردت اطلاق عليه هذا المسطلح , لو انك تجد source code مكتوب بطريقة اخرى فالنقل ان المبرمج يكتب ب style مختلف , المهم ان يبقى الكود منظم و مفهوم .

الجملة الشرطية else لقول << وإلا >> 

الان وبعد ان تعلمنا طريقة عمل اختبار بسيطة للمتغير , دعونا نتعمق اكثر , لو ان الاختبار لم يعمل هذا معناه انه false , الان و في هذه الحالة سوف نطلب من الكمبيوتر عمل شئ اخر بدلا من ان يبقى مكتوف الايدي و يتوقف برنامجنا , بالتحديد سوف نامره بتطبيق instruction اخرى في حال فشل الشرط الاول .

ادا سوف نطلب من الكمبيوتر ما يلي :

لو المتغير يريد هذا قُم بما يلي
والا افعل هذا  (بمعنى يطبق instruction  مختلفة في حال عدم توفر الشرط الاول ) .

كل ما عليك فعل لهذا هو اضافة else بعد حاضنة غلق if مثل ما هو موضح في الكود التالي :


الامر بسيط لو ان المتغير age اكبر او يساوي من القيمة 18 , سوف تظهر رسالة You are major ! , والا سوف تظهر الرسالة الثانية oh no ! you are minor sorry ( التي تعني اسف انت قاصر بالانجليزية , تخيل اننا نقوم بطلب السن في لعبة عنيفة او لعبة رعب غير لائقة للاطفال الصغار 😝 ) .

الجملة الشرطية else if لقول << والا اذا >>

يمكن ترجمتها الى والا لو , لكن وجد انها لا تعني شئ في العربية ( لاحظ ان بالانجليزية ايضا ليس لها معنى 😄 ...المهم ) , لقد راينا كيف يمكن عمل تجربة على if اولا و بعدها ادخال else , يمكن فعل اختبار او تجربة تكون على شكل
 else if ( اقراها من اليسار الى اليمين ) .
للقيام ب test اخر على المتغير في حال لم يعمل او ينجح test الاول , و هذا ال else if يتمركز بين الاختبار الاول if و الذي يليه else قل في مخيلتك انه الاختبار 1.5 اي تاتي في الوسط , لكي تفهم الدرس و تتبع معي ما يلي , لكن لا تعتمد على هذا "التبسيط" بالذات كقاعدة تحفظها هي للشرح الان فقظ .

في هذا الحال نقول للكمبيتر ما يلي :

لو ان المتغير يريد هذا قُم بما يلي
والا اذا المتغير يريد هذا قُم بما يلي
والا افعل هذا .

اعتقد ان الامور بدات تتشابك في ما بينها و اعتقد انني بهذه العبارة فقدت نصف المتابعين 😅 , الا انني احاول التبسيط على قدر المستطاع و ليكن في علمك ان بهذه الاضافة "1.5" سوف نحصل على امكانيات كثيرة في برنامجنا و لا نبقى محدودين , تابع معي سوف تفهم كل شئ , فلا شئ معقد فقط ركز معي .

كود برنامجنا سوف يكون كالتالي :


في هذه الحالة الكمبيوتر يقوم ب test على هذا النحو :

1- اولا يقوم بتجربة او اختبار if في حال ما يجدها صحيحة true سوف يطبق instruction , ما هو موجود داخل الحاضنتين الاولة التي if مباشرة .

2- في حالة ما يجدها خاطئة false يتجه الى  else if و يقوم بالتجربة مرة اخرى , ان وجد انها true يقوم بتطبيق instruction التي في الحاضنتين التي تلي else if .

3- في حال ما لم يتمكن من تطبيق اي اختبار او محاولة من التي سبقت سوف يطبق تعليمات else الموجودة في الحاضنتين التي تليه مباشرة .

ملاحظة : else و else if ليست اجبارية لفعل امر شرطي conditional , فقط if هو الاساس , بديهي و الا لا يوجد شرط اصلا 😋 ...

الان عليك معرفة انه يمكن وضع else if بعدد غير محدود , يمكننا كتابة الكود على هذا النحو :

لو المتغير يريد هذا قم بهذا و هذا
والا اذا المتغير يريد هذا قُم بما يلي
والا اذا المتغير يريد هذا قُم بما يلي
والا اذا المتغير يريد هذا قُم بما يلي
والا افعل هذا

عدة شروط في نفس الوقت 

قد يكون من المفيد عمل عدة اختبارات او امتحانات شرطية في نفس الوقت داخل if , مثلا تريد تجربة ان كان السن اكبر من 18 و "and" ايضا  لو كان السن اقل من 25 .

لفعل هذا يجب اضافة رموز جديدة عليك تعلمها الان من هذا الجدول :


الرمز && و اختباره في شرط 

لو اننا نريد تجربة هذا الرمز داخل شرط استنادا للمثال الذي يطرح اشكالية ان كان السن اكبر من 18 و اقل من 25 سوف نكتبه على الشكل التالي داخل الكود :


الرمز && يعني و ( and بالانجليزية ) , هذا الشرط بلغتنا يمكن التعبير عنه بهذه الطريقة :
لو السن يكون اكبر من 18 و لو السن يكون اقل من 25 .


الرمز || ثم اختباره في شرط

اولا علي الذكر ان لكتابة هذا الرمز من لوحة مفاتيح الحاسوب الامر ليس سهل على المبتدئين 😬 في الاصل اسمه pipe char شريط عمودي , ان كنت على لوحت مفاتيح تسمى AZERTY  بالفرنسي عليك بالضغط على زر  Alt Gr + 6  للبلجيكي من نفس الصنف Alt Gr + &  ايضا يمكن كتابته بالضغط على ALT + 124 بدون ان تنزع يدك من على مفتاح ALT و انت تكتب الارقام .
 يوجد نوع اخر من المفاتيح و هو qwerty الاكثر انتشار في بلدان مثل كندا و امريكا التي تجدها في اجهزة مثل macbook يمكن كتابة الرمز استعمال المفاتيح shift + alt + L
ان لم تفهم شئ من كل هذا اكتب في جوجل ascii pipe cher و قم بنسخ لصق 😖 .

في هذا الحال من الاختبار سوف نتخيل ان برنامج غبي يقرر من يكون له الحق في فتح حساب بنكي داخل بنك اسمه  WeLoveMoney Bank ( وكانني قلت فالنستعمل في مثالنا بنوك العالم العربي ... 😆 بدون تعليق ) .
مثل ما هو معروف لفتح حساب بنكي يجب ان لا تكون الشخص قاصر , سوف نقول مثلا يجب ان يكون عمر الشخص 25 سنة , او يجب ان يكون لذيه الكثير من المال ( نعم من ليه الكثير من النقود " money " حتى و ان كان يبلغ من العمر 11 سنة يرحب به باستقبال يليق بالملوك 😍 ) .

اختبارنا للزبون لنرى ان كان تتوفر فيه الشروط اللازمة لفتح حساب بنكي يكون كالتالي :


هذا الاختبار لن يقبل المستخدم الا فيحالة ما كان الزبون له اما 25 سنة او يملك 100 الف دولار فيظهر له رسالة الترحيب , ان لم يحقق هذه الشروط سوف يظهر له رسالة else التي لن اترجمها 😄 .

اختبار رمز !

الرمز الاخير في جدولنا الذي تبقى لنا ان نختبره هو رمز علامة التعجب , في لغة البرمجة C علامة التعجب تعني لا .
يجب ان تضع هذا الرمز قبل شرطك لقول بلغة البشر :

لو ان هذا غير صحيح فقم بهذا


يمكن فهمه المثال على النحو التالي : لو ان هذا الشخص ليس قاصر  .
عند حدف علامة الاستفهام ! المعنى يكون العكس و تكون على هذا النحو : لو ان هذا الشخص قاصر .

الاخطاء التي يقع فيها المبتداء 

لا تنسى انه عليك وضع علامة تساوي مرتين ==
لو اننا نريد اختبار ان الشخص يبلغ من العمر 18 سنة بالتحديد يجب كتابة


لو انك تضع رمز يساوي مرة واحدة المتغير سوف ياخد قيمة 18 , مثل ما تعلمناه في درس المتغيرات , و نحن الان ما نريد فعله هو test للمتغير و لا نقصد تغييرها الى قيم اخرى , احدر جيدا حين كتابة هذا الرمز و الا برنامجك لن يشتغل مثل ما هو منتظر منه و تحصل على خلطة شعبية اصلية 😵 .

المنقوطة الاضافية :
خطاء شائع ايضا عند المبتداء , يمكن ان تضع منقوطة ; في نهاية if , و هو شرط 😔  مثل ما تعلمناه نحن نضع المنقوطة الا في نهاية instruction و لا نضعها في الشروط .

مثال للخطاء
لاحظ ان في الكود التالي لن يعمل مثل ما يجب لان فيه منقوطة زائدة اخر الشرط if


الا هنا نكون قد انتهينا من الشطر او الجزء الاول من الدرس السابع المخصص لاوامر الشرطية , تابعونا في الدرس القادم .

ليست هناك تعليقات