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

انشاء اول برنامج لك بلغة البرمجة 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 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 لها بداية و نهاية معرفة بحاضنتين {  } ,  دالة  main موجودة بين حاضنتين , داخلها يوجد امامنا سطرين . سوف ننتقل الان الى تحليلها هي الاخرة .

هذه الاسطر داخل ال function لها اسم , نسميها تعليمات “instructions” ( كل هذه العباراة يجب حفظها عن ظاهر القلب لذلك نحاول استعمالها كثيرا في كل درس 😉)
كل instruction هي عبارة عن امر 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 ( دالة ) قد تم كتابتها من قبل , ادا هي كود جاهز و قد اخترعها مُبرمجين قبلك  و هنالك الكثير من هذا القبيل في لغة البرمجة C .

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

هل تتذكر السطرين في البداية ؟

قلنا انه يمكن اضافة مكتبات ( Libraries ) في برنامجك , هذه المكتبات هي عبارة عن عدد ضخم من ال functions مخزنة فيها و جاهزة   للاستعمال.
هذه المكتبات  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 , البرنامج يتوقف .

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

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

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

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