انشاء اول برنامج لك بلغة البرمجة C

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


تعلم البرمجة بلغة C للمبتدئين : 3 انشاء اول برنامج لك

وحدة التحكم "Console" أو النافذة؟

لقد تكلمنا بشكل سريعة عن " برامج Console " و " برامج النوافذ " في هذا الشطر مترجمنا IDE يطلب منا اي نوع نريد انشائه , اجيبك بسرعة سوف نستخدم " برامج Console " .

يجب ان تعلم انه يوجد نوعين من البرامج لا اكثر
  • -  برامج Console  
  • - برامج بالنوافذ 

البرمج بالنوافذ

هي البرامج التي يعرفها العامة , هذه الصورة تمثل برنامج بالنوافذ لا يوجد من لا يعرفه 
تعلم البرمجة بلغة C للمبتدئين  3 انشاء اول برنامج لك

- اذا هذا برنامج بنوافذ , واعتقد انك ترغب في انشاء مثله .... لن تستطيع ذلك حاليا 😅 .
- طبعا انشاء برامج تعتمد على النوافذ امر ممكن جدا بلغة C , لكن لمبتداء في البرمجة ... الامر معقد قليلا .
- للبداية الافضل هو البرمجة على وحدة التحكم "Console" 

سؤال : ما هو شكل او ما هو اصلا برنامج وحدة التحكم ؟

 برامج Console

هي اول البرامج التي تم اختراعها , في ذلك الزمن الكمبيوتر لم يكن قادر الا على بث الابيض و الاسود , و لم يكن قوي كفاية لانشاء نوافذ مثل ما هو عليه الحال اليوم .
طبعا مر الوقت و تطور نظام " ويندوز" ( ترجمة كلمة windows  تعني نوافذ ) وقد صار الحاسوب قوي و سريع ايضا هو اليوم للاستعمال الواسع و العام , شهرة نظام ويندوز راجعة الى سهولته , نظام التشغيل ويندوز صار شائع لدرجة ان الاكثرية لا تعرف او نسية ما معنها برامج Console و كيفية التحكم فيها .

البرمجة بالكونسول لم تُفقد او انتهت , نظام التشغيل لونيكس Linux يعتمد الا على هذه الطريقة اليك صورة تمثيلية من البرنامج 

مُرعبة اليس كذلك !!؟ 😂 ... هذه نبدة فقط عن البرامج بالكونسول .

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

سؤال : هل في الويندوز لا يوجد برامج console ؟

بالطبع موجودة , لكنها مخفية عن من لا يعرف كيف العمل بها و ما هي اصلا , يمكن راية هذا البرنامج بالتوجه الى 
Start / Accessories / Command Prompt او Start / Run تكتب في Run الكلمة التالية cmd  

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

نبداء بقليلا من code "الرموز البرمجية" 

لا يهم اي نوع من البرامج  التي سوف نعمل عليه , اولا يجب ان تكتب القليل من code , هذا الكود لن يفعل شئ مخصص لكن يجب كتابته " ركز سوف تفهم " .

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

طلب Minimum code من IDE 

من المترجم الذي تحدثنا عنه في الشرح او الدرس الثاني نقوم بانشاء مشروع جديد new project , ارجع الى الدرس السابق ان نسيت طريقة فعل ذلك .
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

للتدكير من على Code::Blocks الذي سوف نستعمله في هذه الدورة menu File / New / Project , ثم تختار Console Application , بعدها تختار لغة C .
Code::Blocks يقوم بانشاء Minimum code بلغة C , الذي نحتاجه , هذا هو : 
لاحظ انه يوجد سطر فارغ في نهاية الكود , يجب الضغط على مفتاح Enter  في لوحة مفاتيح الكمبيوتر بعد اخر حاضنة }لترك الفراغ , كل ملف في لغة C من الطبيعي ان ينتهي بسطر فارغ , ان لم تترك سطر فارغ الامر ليس اجباري لكن ال compiler قد ان يشر لك برسالة تحدير (warning) .

لاحظ هذا السطر 
int main()
يمكن ان يكتب ايضا على الشكل التالي 
يمكن استعمال الاثنين لكن الثانية " المعقدة " هي الاكثر رواج لامور سوف نعرفها لاحقا , ادا سوف نستعملها اكثر في الدروس القادمة , في هذا الطور من الدورة ان نستعمل الاول او الثاني لا يغير شئ لنا .

تحليل Minimum code

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

نبداء بالسطرين الاولين المتشابهين كثيرا 
انها عبارة عن سظور مميزة لا تكون الا في اعلى  او بداية Source files او source code , هذه السطور يمكن تحديدها بسرعة لانها تبداء بعلامة دياز # , هذه الاسطر المميزة نسميها بتوجيهات المعالج Preprocessor directives , هي اسطر سوف يتم قرائتها من قبل برنامج اسمه " Preprocessor " المعالج , هذا البرنامج يبداء في العمل حين نقوم بعملة compilation .

- الشرح في الدرس الاول , لم يكن الا رسم تبياني مُبسط من ال compilation , في الحقيقة حين القيام بهذه العملية هنالك العديد من الامور التي تحدث , سوف نتطرق اليها بالتفصيل لاحقا , الان عليك فقط باضافة هذه السطور في اول ملفاتك .

- نعم لكن الجميع يريد معرف مذا تعني ... طيب .

كلمة include  بالانجليوية تعني تضمين , هذه الاسطر تطلب بتضمين او اضافة ملفات اخرى الى مشروعك او كود برنامجك , بمعنى اصح اضافة ملفات الى عملية ال compilation .

يوجد سطرين اذا هنالك ملفين , هي stdio.h و stdlib.h , هذه الملفات موجد من قبل , ملفات source جاهزة , سوف نتعرف عليها و تسمستها الحقيقية هي المكتبات " Libraries " , بشكل بسيط هي ملفات جاهزة تحتوي على كود يسمح باظهار رسالة على الشاشة .
بدون هذه الملفات الجاهزة كتابة رسالة على الشاشة سوف تكون عملية شبه مستحيلة لنا , الكمبيوتر في الاصل لا يعرف فعل شئ , يجب ان تامره بعمل كل شئ و تقوده , نعم الكمبيوتر جاهل 😃 .

خلاصة هذه الاسطر سوف تضيف مكتبات جاهزة تسمح لنا باظهار رسالة على الشاشة 

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

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

الامر الجميل و المفيد في ال function  هو بعد ان تنشاها و تشرح له طريقة عمل فتح الملف لن تطر الى اعادتها و سوف تكتب فقط Open_file لينفد الكمبيوتر الامر مباشرة لانه تعرف على ما تريده من هذه العبارة مسبقا .

بدون الدخول في التفاصيل لاننا سوف نرجع اليها لحقا ( الوقت لا يزال مبكر على مثل هذه الامور) .

 نرجع الى التحليل
- السطر الاول من function  في الكود الذي امامنا يحتوي على كلمة هي في الحقيقة اسم ال function  .

نعم اسم ال function  في الكود الذي تراه هو main , هذه ال function المميزة  تعني حرفيا "أساسي او أولي" , main  هي ال function  الاساسية لبرنامجك هذا .

كل function لها بداية و نهاية معرفة بحاضنتين {  } , كل function  main موجودة بين حاضنتين , داخلها يوجد امامنا سطرين . سوف ننتقل الان الى تحليلها هي الاخرة .

هذه الاسطر داخل ال function لها اسم , نسميها تعليمات "instructions" ( كل هذه العباراة يجب حفظها عن ظاهر القلب لذلك نحاول استعمالها كثيرا في كل درس 😉)
كل instructions هي عبارة عن امر Order للكمبيوتر , كل سطر منها تامر الكمبيوتر بفعل شئ محدد .

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

ملاحظة مهمة : كل instruction تنتهي بمنقوطة semicolon " ; "  اصلا بالاعتماد على المنقوطة نفرق ما هو instruction او لا دا خل الاكواد , لو انك تنسى وضع منقوط في نهاية اي instruction لن تتم عملية ال compilation .

السطر الاول printf("Hello world!\n");  يطلب من الحاسوب اظهار رسالة Hello world على الشاشة , ادا حين يصل برنامجك الى هذا السطر سوف يقوم باظهار هذه الرسالة على الشاشة , ثم يمر الى instruction  التي بعدها .

السطر الثاني return 0; , تعني نهاية عمل البرنامج , بمعنى نهاية function  main , و يطلب منه للرجوع الى value قيمة 0 .

سؤال : لماذا البرنامج يرجع الى value صفر ؟

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

- انتهينا من تحليل ال Minimum code , بضعت اسطر فقط تطلبت منا مجهود لمعرفة اهدافها ... الامر يبدو معقد 😅 لا ابدا .

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

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

اليك رسم تبياني مبسط لكل تطرقنا اليه

تجربة البرنامج 

التجربة سوف تمر بسرعة البرق , كل ما عليك فعله هو جمع compile المشروع project , ثم تشغيله ( Build & Run ) انقر على هذه الخانة لفعل الاثنين معا في مترجم Code::Blocks .


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

ملاحظة 
لو انه لم يحدث شئ بعد الضغط على خانة Build & Run و تلقيت الخطاء
 My-program - Release  uses an invalid compiler. Skipping... Nothing to be done
هذا يعني انك حملت نسخة Code::Blocks  بدون mingw , ارجع الى موقع Code::Blocks و كما حددنا في الشرح السابق قم بتحميل النسخة التي تحتوي على mingw  .

 انتضار compilation " وقت طوييييل , لا امزح فقط " سوف يظهراول برنامج لك , نعم حقيقة امام اعينك اول برنامج تنشائه في حياتك " لحظات تاريخية 😄 "

- البرنامج يُظهر Hello world!  في السطر الاول  .
- الاسطر الباقية تم عملها من قبل المترجم Code::Blocks , و تشير الى ان البرنامج اشتغل بنجاح , و المدة الزمنية التي استغرقها في العمل بعد الانطلاق .
- في السطر الاخير يطلب منك الضغط على اي مفتاح من لوحة مفاتيح الكمبيوتر لاغلاق البرنامج .

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

كتابة رسالة على الشاشة 

الان سوف نقوم "بانفسنا" عمل تغيرات على هذا الكود او البرنامج .
مهمتك لو تقبلها " ايحاء الى فيلم مهمة مستحيلة 😄"  هي : اظهر رسالة hello ثم اسمك مثلا hello thegeektools على الشاشة .
مثل ما حصل حين التشغيل تنبثق console و يظهر فيها رسالة "hello thegeektools" هذه المرة .

سؤال : كيف نفعل لاختيار النض الذي يظهر على الشاشة ؟

- الامر سهل , لو انك ترجع الى الكود الذي نعمل عليه Minimum code , يمكنك فقط تغير عبارة Hello world! بالعبارة التي نريدها , في السطر الذي يكون به printf .
- مثل ما عرفناه printf هي عبارة عن instruction , تامر الكمبيوتر باظهار الرسالة .
- لكن !!  للعلم ان printf هي في الاصل function وظيفة قد تم كتابتها من قبل ادا هي كود داهز و قد اخترعها مُبرمجين قبلك  .

سؤال : اين هذه function نحن لم نضع الا main في الكود و الباقي instruction  ؟

هل تتذكر السطرين في البداية ؟
قلنا انه يمكن اضافة مكتبات Libraries في برنامجك , هذه المكتبات هي عبارة عن عدد ضخم من ال function مخزنة فيها و جاهزة   للاستعمال.
هذه الملفات stdlib.h و stdio.h يمتلكان اغلب الوظائف الاساسية التي نحتاجها في البرامج الذي نعمل عليه , stdio.h بالتحديد تمتلك وظائف لاظهار اشياء على الشاشة , مثل printf و ايضا تمتلك function اخرى للطلب من المستعمل القيام باعمال مثلا الكتابة على لوحة المفاتيح لادخال كلمة سر  او شئ من هذا القبيل . سوف نرى هذا في ما بعد .

- ادا في fonction main نقوم باستدعاء fonction printf , وظيفة تنادي اخرى , في المثال main تنادي printf , سوف ترى ان هكذا تسير الامور دوما و انه امر طبيعي في البرمجة بلغة C , وظيفة معبئة بالاوامر تستدعي في وسطها الى وظيفة اخرى و هكدا .

- ادا الامر سهل لاستدعاء function نقوم بكتابة اسمها متبوع بقوصين ( )
- جميل لكن غير كافي على هذه الوضيفة , يجب ادلال ما سيظهر على الشاشة , لفعل هذا يجب اعطاء الوظيفة printf النص اللازم , قم بفتح علامات الاقتباس " " داخل القوصين , بداخلها علامات الاقتباس اكتب النص مثال : "hello tehgeektools"
- لا تنسى المنقوطة في النهاية ابدا, هي تقوم بادلال ان ال instruction تنتهي في ذالك المكان لكي لا تختلط ببعضها البعض .

الان سوف يصبح معنا كود Source code على هذا الشكل 

ادا لدينا 2 instructions التي تامر الكمبيوتر على هذا النحو
1 - اظهار" Hello Thegeektools" على الشاشة
2 - ال fonction main انتهت , اإرجاع 0 , البرنامج يتوقف .

اعد العملية بالكود الجديد 


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

الى الدرس القادم
By