تعلم البرمجة بلغة C للمبتدئين 5 الجزء الثاني : التعرف على الثوابت اعطاء قيم للمتغيرات وعرض محتواها

في الدرس السابق قد تعرفنا على عالم المتغييرات , الان حان الوقت لكي نتعمق اكثر و نتعلم العمل بها في لغة البرمجة C .

تعلم البرمجة بلغة C للمبتدئين 5 الجزء الثاني : التعرف على الثوابت اعطاء قيم للمتغيرات وعرض محتواها

اعطاء قيمة للمتغيرات

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

و لا اسهل . تضع اسم المتغير , ثم علامة تساوي و من بعدها تضع القيمة التي تريدها .
في المثال قمنا باعطاء قيمة 5 للمتغير numberOfLives , برنامجنا الحالي صار كالتالي :

هنا ايضا بعد تشغل البرنامج لن يحدث شئ , كل شئ يحدث داخل الذاكرة .
في مكان ما داخل جهاز الكمبيوتر الخاص بك , تم انشاء مساحة صغيرة في الذاكرة , و تم اعطائها القيمة 5 .
اليس هذا مدهش ؟ … 😅 , انتظر قليلا يمكننا اللعب بتغيير القيمة بعد ذالك بهذه الطريقة :

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


قيمة متغيير جديد

اليك سؤال مهم جدا , اريد ان تفكر فيه .

حين نعلن عن متغير ما هي قيمته الاصلية في البداية ؟

عليك معرفة شئ , حين يقراء الحاسوب السطر التالي :

يقوم الكمبيوتر بتخصيص مساحة من الذاكرة صحيح ! متفقون ؟ ان نعم نواصل …
لكن ما هي القيمة او المقدار الذي يخصصه بالضبط ؟ هل توجد قيمة مبدئية مثل 0 ؟
الجواب هو كالتالي : لا توجد قيمة مبدئية ( default value ) يحددها الكمبيوتر , المساحة في الذاكرة محجوزة لكن قيمتها لا تتغير , لا نمحي ما هو موجود في خانة الذاكرة ( Memory case ) , لذلك المتغير ياخد القيمة التي كانت موجودة من قبل في الذاكرة , ويمكن أن تكون هذه القيمة في مثالنا هذا أي شيء ! .

لو ان هذه الخانة او المنطقة لم تلمس ابدا من قبل يمكن ان تكون 0 , لكن لا يمكن الجزم في ذالك , من الممكن جدا ان تجد عدد مختلف مثلا 300 او 25 في مكانها ( مثال فقط ) , بمعنى قد تجد بقيا برنامج مرة بهذه الخانة و ترك ورائه هذا العدد .

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

هنا المتغير numberOfLives معلن عليه و ياخد قيمة 5 مباشرة , بعدها انت متاكد من ان المتغيير سوف ياخد القيمة او العدد الصحيح و لا تترك مجال للعشوائية .

الثوابت The constants

من المكن انريد انشاء متغير يحتوي على value ثابتة و لا تتغير طول تشغيل البرنامج , بمعنى حين الاعلان عليها نريدها ان تحتفظ بقيمة معين و نريد ان لا يستطيع احد تغييرها ابدا.
هذا النوع من المتغيرات اسمه الثوابث ( constants ) , اسم على مسمى لان value ثابتة و لا تتغير .
للاعلان على متغير constant “ثابت” الامر بسيط كل ما عليك فعله هو استعمال كلمة const قبل type حين الاعلان عن variable , و من الضروري اعطائها value مباشرة حين الاعلان عليه “declaration” مثل ما تعلمناه الان , و الا سيفوتك الاون و لن نستطيع تغييرها و منحها value التي تريد .
مثال للاعلان عن متغير ثابت “constant”

ملاحظة : قد ترى انني غير في طريقة الكتابة التي اتفقنا عليها و استخدمة حروف كبيرة ( capital letters ) , الامر ليس اجباري لكن من المتفق او المعروف في اوساط البرمجة اننا نكتب ال constants كاملة بالحروف الكبيرة ( capital letters ) مثل ما فعلته في المثال , و ذالك ليسمح لنا بالتفريق و التعرف عليه بسهولة , و مثل ما اتفقنا من قبل انه لا يستعمل الفراغ للفصل بين الكلمات بال نستعمل علامة _ “underscore” هذا اجباري في لغة C .

هذا ال Constant يستعمل كغيره من المتغيرات , يمكن اظهار قيمته ان شئت , المشكل الوحيد الذي يمكن ان يحدث هو حين تريد تغير قيمة المُتغير الثابت في طور مُتقدم من البرنامج , هنا برنامج ال compiler ( مثل برنامج Code::Blocks الذي نحن نعمل به ) سوف يظهر لك خطاء في سطر هذا المتغير constante .

الخطاء مثل ما شرحنا من قبل يظهر في الاسفل ( نحن نتكلم عن برنامج Code::Blocks ) , في هذه الحالة بالذات تظهر لك العباراة التالية للتنبيه عن الخطاء :

‘Warning] : assignment of read-only variable ‘NUMBER_OF_LIVES_INITIAL]

الترجمة حرفيا هي : يا ايها … لمذا تريد تغيير قيمة المتغير الثابت يا .. و يا … مابك ؟؟؟ .
تم حدف عبارات الشتم التي يلقيها عليك البرنامج 😂 .

عرض محتوى متغير

نحن نعلم من الدروس السابقة ( رقم 4 من الدورة ) طريقة اظهار نص على الشاشة باستعمال function (الدالة ) printf , الان سوف نتعلم طريقة اظهار او عرض قيمة متغير باستعمال نفس الدالة .


في الحقيقة سوف نستعمل printf بنفس الطريقة السابقة لكن نضيف لها رمز مميز في المكان الذي نريد اظهار او عرض قيمة المتغير , تابع معي الامر بسيط جدا اليك هذا المثال :
الرمز المميز الذي اتحدث عنه هو % , متبوع بحرف في مثالي الحرف d .
هذا الحرف يسمح بالاشارة الى ما ينبغي ان نعرض , و حرف ال d بالذات هو رمز و يعني اننا نريد ان نعرض int .
توجد الكثير من الاحتمالات التي يمكننا استخدامها و ما دمنا غير متمكنين من لغة البرمجة C و للتبسيط سوف نتعرف و نركز على الجدول ( المُبسط ) التالي : 
كلمة Format لم اجد لكم ترجمة بالعرببية لكن سوف نسميها شكل ( اعتقد ان كلمة Format مستعملة كثيرا مثل Format  مقاطع الموسيقى على هاتفك من mp3 او mp4 ) , هنا نقصد بها شكل الرمز المميز .
اما Type expected معنها النوع المتوقع , لن نرجع الى شرح ال int و double قد مررنا على هذه النقطة في الدرس السابق .

ملاحظة : نفس Format مستعمل للاشارة الى float و double .
سوف نتحدث عن بقية ال Format في الوقت المناسب , حاليا نركز و نحفظ هذه الموجودة داخل الجدول  😉 .
بالمثال السابق حددنا اننا نريد عرض او اظهار عدد كامل ( لاننا نستعمل int Format … لان int هي للاعداد الكاملة ,  لا تجبروني على اعادة الدروس الامر صعب بما فيه الكفاية 😄 ) , لكننا لم نحدد ما هو هذا العدد , هنا علينا تحديده الى الدالة printf و القول له ما هو المتغير الذي نريد عرضه , لفعل ذالك عليك كتابة اسم المتغير بعد رمز الاقتباس ” ” و لا تنسى باضافة فاصلة لنحصل على السطر التالي :
هنا d% سوف يتم استبداله بالمتغير المشار اليه بعد الفاصلة الذي هو numberOfLives .
نجرب ما تعلمناه في برنامج بسيط 
… من الممكن ان يكون هذا البرنامج لعبة ( لكن عليك التمتع بخيال واسع 😀 )
سوف تظهر لك النتيجة التالية ان قمت بتشغيل هذا الكود من زر build and run في برنامج Code::Blocks :
عليك التعرف بما يحدث داخل برنامجك .
1 – في البداية اللاعب عنده 5 حياة ( او محاولات ) , نقوم باظهارها في printf .
2- بعدها اللاعب يتعرض الى ضربة على الراس ما حددناه بكلمة BAM 
3- في النهاية لم يتبقى له الا 4 حياة في اللعبة , ما قمنا باظهاره ايضا باستعمال دالة  printf .
هذه هي لعبتي ( اي تعليق غير لائق احدف المدونة و اعتزل البرمجة 😒 ) , مثل ما نرى الامر بسيط .

عرض عدة متغيرات في نفس printf

من الممكن عرض واظهار عدد كبير من القيم في نفس ال printf , لفعل هذا عليك بتحديد مثلا d% او f% في المكان الذي تريده , بعدها تحدد المتغييرات المناسبة بالترتيب بطريقة تسلسلية مفصولة بفاصلة مثال :

ملاحظة : عليك باعطاء الترتيب الصحيح للمتغيرات , d% الاول سوف يتم استبداله بالمتغير الاول ( numberOfLives ) , و ال d% الثاني ياخد مكانه المتغير الثاني ( level ) , لو انك تخطاء في الترتيب جملتك على الشاشة سوف تكون بدون معنى .
ايضا لمن لا يعلم ما معنى كلمة level فهي تعني مستوى , دائما في الالعاب تجد مستويات 😆 !! .
الان نقوم بتجربة لعبتنا ( الرائعة 😍 ) , و لن اضع لكم اسطر توجيهات المعالج ( Preprocessor directives ) , هل نسيت ما هي ؟ … نعم … لا . هي الاسطر الاولة التي تبداء ب # ( راجع دروسك ) , للعلم هي اجبارية و يجب وضعها لكي يشتغل برنامجك
 ( مراجعة خفيفة ) لن اضعها الا من اجل تصغير الكود للشرح و انت ضعها حين تجرب الكود على code::blocks .
هذا ما سوف يظهر لنا على الشاشة : 
اعتقد ان هذا قدر كافي من الجزء الثاني في ما يخص المتغييرات , عليك بفهمه جيدا و لا تضيع وقتك في التساؤلات , باذن الله سوف نجيب على كل ما يخطر ببالك لاحقا في الدورة , كل ما عليك فعله هو التركيز في ما هو امامك فقط .
في الجزء الثالث سوف نبقى في عالم المتغيرات و نتعرف على اشياء اخرى مهمة لتكملة هذا الفصل ( لم يتبقى الكثير  ) و نبداء في انشاء برامج باتم معنى الكلمة تابعونا .

مقالات ذات صلة