الأحد، 18 ديسمبر 2016

تعلم البرمجة بلغة C للمبتدئين : 4 الاحرف الخاصة للتحكم في النص الظاهر على الشاشة و تعليقات المُبرمجين

أكمل المقال
بعد ان قمنا بانشاء اول برنامج بلغة البرمجة C, الذي كان يظهر لنا رسالة على الشاشة  "hello اسمك" , او اي شئ تريد كتابته داخل البرنامج , اليوم سوف نتعلم حروف او بالاصح Special characters , التي هي مخصص للبرمجة بلغة C للتحكم في ما يظهر على الشاشة , من فراغات و تنضيم , لكي لا تتداخل ببعضها البعض و تبدو صعبة للقراء او غير مفومة .
تعلم البرمجة بلغة C للمبتدئين : 4 الاحرف الخاصة للتحكم في النص الظاهر على الشاشة و تعليقات المُبرمجين

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

- لحل هذه الاشكالية علينا بالرجوع الى  اول السطر بعد الشئ الذي كتبناه في المثال hello thegeektools , نعم لكن لفعل ذلك لا يمكننا التعامل مع البرنامج مثل اي محرر نص مثال اوفيس office او notepad , لا يمكنك الرجوع لاول السطر من خلال الضغط على انتر , حتى و ان فعلت فهذا لن يكون عليه اي تاثير في النتيجة النهائية لبرنامجك .
- بالنسبة للبرمجة بلغة C سوف نستعمل حروف او رموز مميزة و خاصة بهذه اللغة من البرمج Special characters .

ما هي Special characters في لغة C ؟

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

  • \n : للرجوع الى السطر 
  • \t : للجدول 

في حالة برنامجنا " الرائع 😉 " سوف نكتب فقط \n للرجوع الى اول السطر 

الان نعيد تشعيل البرنامج , لكن قبل ذالك نقوم  بالحفظ اولا .


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



كل ما تكتبه بعد \n سوف يظهر في سطر جديد , يمكنك اتمام الكتابة كما تشاء

انظر الى النتيجة 

الان صرنا نعرف طريقة الرجوع الى السطر سوف نتعرف على  البقية لاحقا .

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

تعليقات المبرمجين 

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

سؤال : ما هي هذه التعليقات و ما هو دورها ؟

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

فوائد التعليقات 

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

توجد عدة طرق لاضافة تعليق داخل الاكواد , هي ترتبط بطول النص الذي هو في التعليق و هدفه 

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


الى هنا نكون قد انتهينا من الحروف الخاصة التي سوف نتعمق فيها في درس اخر و التعليقات .
الى الدرس القادم .... يتبع 

الخميس، 15 ديسمبر 2016

تعلم البرمجة بلغة 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 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 , البرنامج يتوقف .

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


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

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

الأحد، 10 يوليو 2016

تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

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

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

الادوات اللازمة للبرمجة
- لو انت تتذكر و تمعنت في الدرس الماضي , سوف تكون على علم ان اي برنامج نتحدث ؟ نعم هو compiler , هذا البرنامج الرائع الذي يترجم لعتك C الى binary .
- مثل ما اشرنا له في الدرس السابق يوجد العديد من compiler لللغة C , سوف نرى ان الاختيار بالنسبة لنا لن يكون  معقد .
- لن نطيل و نعقد الامر اكثر هذا ما نحتاجه للبرمجة :
* محرر النص : لكتابة source code البرنامج , نظريا Notepad على الويندوز او VI على اللونيكس يقوم بالواجب , لكن الافضل هو ان نجد محرر نص ذكي يلون لوحده الاكواد , لكي تستطين ان تجد المعالم و لا تختلط عليك الامور .
* compiler : لعمل compile البرنامج من source الى binary .
* debugger : هذا البرنامج يستعمل في رصد الاخطاء الموجودة , نعم لسوء الحظ لم يتم اختراع المصحح corrector , الذي ان وجد سوف يصحح الاخطاء لوحده , لذالك توجب عليك استعمال debugger  و البحث على الاخطاء لوحدك و حلها , ادا عرفت استعماله سوف يكون الامر سهل .

- الان  لدينا الخيار لجلب هذه البرامج
* اما نجلب كل برنامج على حدى , هذه هي الطريقة الاكثر تعقيد خصوصا على اللونيكس , المبرمجين يفضلون استعمال 3 برامج مختلفة , لن نتطرق الى هذه الطريقة في هذا الشرح .
* توجد طريقة اخرى و هي تكمن في استعمال برنامج ثلاثة في واحد , والذي يجمع بين محرر النص، المترجم وكاشف الاخطاء , مثل هذه البرامج تسمى IDE " Integrated development environment  "

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

اختيار IDE
يبدو من البديهي ان نطرح لكم عدد من IDE في هذا الشرح و نعرض عليكم الاكثر شهرة و استعمال في عالم البرمجة  .
* يوجد IDE يسمى Code::Blocks , مجاني و يشتغل على اغلب انظمة التشغيل Windows , Mac و Linux  , الذي انصح به كثيرا , خصوصا في هذه الدورة .
* اشهر IDE على الويندوز هو ++Microsoft : Visual C  , متوفر بنسختسن الاولى مدفوعة "باهضة الثمن " و اخرى و الحمد لله مجانية اسمها Visual Studio Express , توجد لهذا الاخير نسخة قديمة اسمها Visual C++ Express , الاختلاف بين النسختين المجانية و المدفوعة طفيف , المجاني ايضا يملك debugging قوي لاكتشاف الاخطاء البرمجية .
* على الماك Mac يوجد Xcode , عادتا ما يكون مرفوق بقرص نظام التشغيل Mac OS X , هو برنامج IDE محبوب جدا لمستعملي الماك و له خصائص جيدة ايضا .
ملاحظة على اللونيكس Linux  يوجد العدلد من برامج IDE , لكن المُبرمجون على هذا النظام يَمِيلُون اكثر الى استعمال الطريقة الاولى و هي استعمال كل برنامج على حدى , او حتى يقومون بعملة compile يدويا , عمل فيه قليل من الصعوبة على المبتدئين , نحن سوف نستعمل IDE في هذه الدورة , انصحكم ان تُنصبوا Code::Blocks  حتى و ان  كنت على اللونيكس .

ما هو افضل IDE ؟
كل هذه IDE سوف تُمكنكم من البرمجة و تتبع هذه الدورة و الشروحات الى الاخر , توجد منها ما هو يمتلك العديد من الاعدادات  المتقدمة و اخرى ابسط للستعمال , لكن في اخر المطاف البرنامج الذي تصممه سوف يكون نفسه على اي IDE مهما كان , اذا لا يوجد اي فرق بينهم لكن ادا كنت تريد الحصول على نفس الشاشة و الصور التي سوف تظهر في الدورة استعمل Code::Blocks لانه البرنامج الذي سوف نكمل به كل الشروحات القادمة .

Code::Blocks  
هو  IDE حر و مجاني , يشتغل على انظمة الويندوز , ماك و اللونيكس .
- Code::Blocks متوفر حاليا الا باللغة الانجليزية , لا تكترث نحن اللغة التي تهمنا هي لغة C لا شيء اخر , لكن الجدير بالذكر ان في البرمجة سوف تطر الى التعامل مع الانجليزية , هذا حافز اضافي لك لكي تتعلم بعض الشيء من هذه اللغة .

تحميل برنامج Code::Blocks
اضغط هنا لتحميل البرنامج

- اذا كنت على الويندوز , حمل البرنامج الذي يحمل اسم mingw , مثل codeblocks-16.01mingw-setup.exe  , النُسخ الاخرى لا تحاوي على compiler فقط ابحث عن الرابط الذي به كلمة mingw .
- التنصيب سهل و سريع دع كل الاعدادات كما هي لا تغيير في شيء .
- بعد التنصيب و فتح البرنامج سوف تجد اربع اقسام رئيسية في الواجهة
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

1. شريط الادوات : فيها العديد من الازرار لكن سوف نستعمل منها الا عدد قليل على الدوام سوف نرجع لها لاحقا .
2. قائمة ملفات  المشروع : على اليسار يظهر جميع ملفات كود source البرنامج , في هذه الصورة نلاحظ انه لا يوجد اي ملف لاننا لم ننساء مشروع بعد , سوف نحرص على ملئها  خلال 5 دقائق ^__^ .
3. المجال الرئيسي : في هذا المكان يمكنك الكتابة بلغة C .
4. منطقة الإعلام و التنبيه : اسمها الحقيقي dead zone منطقة الموت , في هذه المنطقة سوف تظهر لك اخطاء compilation , هذا سوف يحدث مرارا و تكرارا .

- الان نبداء بالاهتمام برقم 1 شريط الادوات , سوف تجد هذه الازرارعلى التوالي :
Build
Run
Build  and Run
Rebuild 
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

- هذه هي الازرار التي سوف نستعملها كثيرا , الان سوف نحاول تبسيط وضائفها لكم على حدى 
* Build : كل ملفات source لمشروعك سوف ترسل الى compiler لكي يقوم بانشاء "executable "EXE , ان وجدت اخطاء لن يصنعه , وتظهر لك الاخطاء في اسفل Code::Blocks . 
* Run : هذا الزر يقوم بتشغيل اخر executable بعد ان تنتهي من ترجمته  "compiler" , بمعنى انه سوف يسمح لك بتجربة برنامجك و يعطي لك نظرة مباشرة عنه .
Build  and Run : طبعا كا هو ظاهر من الاسم سوف يقوم بعمل الزرين السابقين في نفس الوقت , و هذا هو االزر الذي سوف تستعمله اكثر بكثير من غيره , تعقيب ان كانت اخطاء لن تستطيع بناء البرنامج و لن يقوم بانشاء exe لكي يعمل , بدلا من التشغيل سوف تحصل على قائمة "جميلة" من الاخطاء .
Rebuild : عندما تقوم بعميلة build اوcompile  برنامج Code::Blocks لا يقوم بإعادة الترجمة "recompile" الا الملفات التي عدلت عليها , في هذه الحالة سوف تطلب من Code::Blocks باعادة الترجمة "recompile" لكل ملفات المشروع . 
- سوف نرى كل هذا في بقية الشرح و الدورة , الان نحن تعرف فقط على البرنامج .
ملاحظة : استخدام المفاتيح افضل من النقر بالفارة مثلا لاستعمال Build  and Run و هو الزر الاكثر استعمال فقط تضغط على مفتاح F9  , ليقوم بالعملية مباشرة .

إنشاء مشروع جديد
لانشاء مشروع جديد العملية سهلة يجب الذهاب الى File ثم New بعد ذالك Project .
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

- في النافدة التي تنفتح اختر Console application 
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

* كما تلاحظ  Code::Blocks يوفر تصميم العديد من انواع البرامج المختلفة التي تستعمل مكتبات "libraries"
* مثل SDL  2D , OpenGL  3D  ايضا Qt و wxWidgets  ... الخ 
* لكن هذه الاضافات حاليا هي للزينة لان المكتبات ليست منصبة على جهازك , لن تستطيع الان تشغيلها , سوف نهتم بمثل هذه البرامج لاحقا في الدورة , الان عليك بالتركيز الا في نوع Console , لانك لا تمتلك المستوى اللازم لتصميم بقية انواع البرامج .
- الان انقر على GO  لانشاء مشروع جديد , تظهر لك نافذة انقر على Next " هذه النافذة غير مهمة " , بعدها تظهر لك نافذة لتختار نوع اللغة التي سوف تبرمج بها اختار لغة C ثم Next .
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح
- بعد هذه الحطوة يطلب منك اسم المشروع و المصار الذي سوف تُحفظ فيه الملفات , ثم Next
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

- و اخير اخر نافذة تعرض عليك خيار كيف سيتم compiled البرنامج , يمكنك تركه كما هو حاليا و لا تغير شئ لانه لن يكون لهذه النافذة الان تاثير على ما سوف نقوم به , فقط احرص على ان خانة Debug او Release تكون مفعلة ثم انقر على finish .
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

- الان قد قمت يانشاء اول مشروع برمجة لك و قد تجن ان Code::Blocks قم كتب القليل من source code 
- على الاجدول الايسر قم بفتح الملفات المشروع حتى تصل الى main.c 
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

خلاصة
* المبرمجون يحتاجون الى 3 برامج text editor , compiler و debugger .
* يمكن تنصيب و استعمال كل برنامج على حدى لان من الاسهل و الشائع هو استعمال برنامج 3 في 1
 اسمه IDE " Integrated development environment " 
* ++Code::Blocks , Visual C  و Xcode  تعد من اشهر برامج IDE .

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

تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

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

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

الادوات اللازمة للبرمجة
- لو انت تتذكر و تمعنت في الدرس الماضي , سوف تكون على علم عن اي برنامج نتحدث , نعم هو compiler , هذا البرنامج الرائع الذي يترجم لعتك C الى binary .
- مثل ما اشرنا له في الدرس السابق يوجد العديد من compiler لللغة C , سوف نرى ان الاختيار بالنسبة لنا لن يكون  معقد .
- لن نطيل نعقد الامر اكثر هذا ما نحتاجه ايضا للبرمجة :
* محرر النص : لكتابة source code البرنامج , نظريا Notepad على الويندوز او VI على اللونيكس يقوم بالواجب , لكن الافضل هو ان نجد محرر نص ذكي يلون لوحده الاكواد , لكي تستطين ان تجد المعالم و لا تختلط عليك الامور .
* compiler : لعمل compile البرنامج من source الى binary .
* debugger : هذا البرنامج يستعمل في رصد الاخطاء الموجودة , نعم لسوء الحظ لم يتم اختراع المصحح corrector , الذي ان وجد سوف يصحح الاخطاء لوحده , لذالك توجب عليك استعمال debugger  و البحث على الاخطاء لوحدك و حلها , ادا عرفت استعماله سوف يكون الامر سهل .

- الان  لدينا الخيار لجب هذه البرامج
* اما نجلب كل برنامج على حدى , هذه هي الطريقة الاكثر تعقيد خصوصا على اللونيكس , المبرمجين يفضلون استعمال 3 برامج مختلفة , لن نتطرق الى هذه الطريقة في هذا الشرح .
* توجد طريقة اخرى و هي تكمن في استعمال برنامج ثلاثة في واحد , والذي يجمع بين محرر النص، المترجم وكاشف الاخطاء , مثل هذه البرامج تسمى IDE " Integrated development environment  "

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

اختيار IDE
يبدو من البديهي ان نطرح لكم عدد من IDE في هذا الشرح و نعرض عليكم الاكثر شهرة و استعمال في عالم البرمجة  .
* يوجد IDE يسمى Code::Blocks , مجاني و يشتغل على اغلب انظمة التشغيل Windows , Mac و Linux  , الذي انصح به كثيرا , خصوصا في هذه الدورة .
* اشهر IDE على الويندوز هو ++Microsoft : Visual C  , متوفر بنسختسن الاولى مدفوعة "باهضة الثمن " و اخرى و الحمد لله مجانية اسمها Visual Studio Express , توجد لهذا الاخير نسخة قديمة اسمها Visual C++ Express , الاختلاف بين النسختين المجانية و المدفوعة طفيف , المجاني ايضا يملك debugging قوي لاكتشاف الاخطاء البرمجية .
* على الماك Mac يوجد Xcode , عادتا ما يكون مرفوق بقرص نظام التشغيل Mac OS X , هو برنامج IDE محبوب جدا لمستعملي الماك و له خصائص جيدة ايضا .
ملاحظة على اللونيكس Linux  يوجد العدلد من برامج IDE , لكن المُبرمجون على هذا النظام يَمِيلُون اكثر الى استعمال الطريقة الاولى و هي استعمال كل برنامج على حدى , او حتى يقومون بعملة compile يدويا , عمل فيه قليل من الصعوبة على المبتدئين , نحن سوف نستعمل IDE في هذه الدورة , انصحكم ان تُنصبوا Code::Blocks  حتى و ان  كنت على اللونيكس .

ما هو افضل IDE ؟
كل هذه IDE سوف تُمكنكم من البرمجة و تتبع هذه الدورة و الشروحات الى الاخر , توجد منها ما هو يمتلك العديد من الاعدادات  المتقدمة و اخرى ابسط للستعمال , لكن في اخر المطاف البرنامج الذي تصممه سوف يكون نفسه على اي IDE مهما كان , اذا لا يوجد اي فرق بينهم لكن ادا كنت تريد الحصول على نفس الشاشة و الصور التي سوف تظهر في الدورة استعمل Code::Blocks لانه البرنامج الذي سوف نكمل به كل الشروحات القادمة .

Code::Blocks  
هو  IDE حر و مجاني , يشتغل على انظمة الويندوز , ماك و اللونيكس .
- Code::Blocks متوفر حاليا الا باللغة الانجليزية , لا تكترث نحن اللغة التي تهمنا هي لغة C لا شيء اخر , لكن الجدير بالذكر ان في البرمجة سوف تطر الى التعامل مع الانجليزية , هذا حافز اضافي لك لكي تتعلم بعض الشيء من هذه اللغة .

تحميل برنامج Code::Blocks
اضغط هنا لتحميل البرنامج

- اذا كنت على الويندوز , حمل البرنامج الذي يحمل اسم mingw , مثل codeblocks-16.01mingw-setup.exe  , النُسخ الاخرى لا تحاوي على compiler فقط ابحث عن الرابط الذي به كلمة mingw .
- التنصيب سهل و سريع دع كل الاعدادات كما هي لا تغيير في شيء .
- بعد التنصيب و فتح البرنامج سوف تجد اربع اقسام رئيسية في الواجهة
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

1. شريط الادوات : فيها العديد من الازرار لكن سوف نستعمل منها الا عدد قليل على الدوام سوف نرجع لها لاحقا .
2. قائمة ملفات  المشروع : على اليسار يظهر جميع ملفات كود source البرنامج , في هذه الصورة نلاحظ انه لا يوجد اي ملف لاننا لم ننساء مشروع بعد , سوف نحرص على ملئها  خلال 5 دقائق ^__^ .
3. المجال الرئيسي : في هذا المكان يمكنك الكتابة بلغة C .
4. منطقة الإعلام و التنبيه : اسمها الحقيقي dead zone منطقة الموت , في هذه المنطقة سوف تظهر لك اخطاء compilation , هذا سوف يحدث مرارا و تكرارا .

- الان نبداء بالاهتمام برقم 1 شريط الادوات , سوف تجد هذه الازرارعلى التوالي :
Build
Run
Build  and Run
Rebuild 
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

- هذه هي الازرار التي سوف نستعملها كثيرا , الان سوف نحاول تبسيط وضائفها لكم على حدى 
* Build : كل ملفات source لمشروعك سوف ترسل الى compiler لكي يقوم بانشاء "executable "EXE , ان وجدت اخطاء لن يصنعه , وتظهر لك الاخطاء في اسفل Code::Blocks . 
* Run : هذا الزر يقوم بتشغيل اخر executable بعد ان تنتهي من ترجمته  "compiler" , بمعنى انه سوف يسمح لك بتجربة برنامجك و يعطي لك نظرة مباشرة عنه .
Build  and Run : طبعا كا هو ظاهر من الاسم سوف يقوم بعمل الزرين السابقين في نفس الوقت , و هذا هو االزر الذي سوف تستعمله اكثر بكثير من غيره , تعقيب ان كانت اخطاء لن تستطيع بناء البرنامج و لن يقوم بانشاء exe لكي يعمل , بدلا من التشغيل سوف تحصل على قائمة "جميلة" من الاخطاء .
Rebuild : عندما تقوم بعميلة build اوcompile  برنامج Code::Blocks لا يقوم بإعادة الترجمة "recompile" الا الملفات التي عدلت عليها , في هذه الحالة سوف تطلب من Code::Blocks باعادة الترجمة "recompile" لكل ملفات المشروع . 
- سوف نرى كل هذا في بقية الشرح و الدورة , الان نحن تعرف فقط على البرنامج .
ملاحظة : استخدام المفاتيح افضل من النقر بالفارة مثلا لاستعمال Build  and Run و هو الزر الاكثر استعمال فقط تضغط على مفتاح F9  , ليقوم بالعملية مباشرة .

إنشاء مشروع جديد
لانشاء مشروع جديد العملية سهلة يجب الذهاب الى File ثم New بعد ذالك Project .
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

- في النافدة التي تنفتح اختر Console application 
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

* كما تلاحظ  Code::Blocks يوفر تصميم العديد من انواع البرامج المختلفة التي تستعمل مكتبات "libraries"
* مثل SDL  2D , OpenGL  3D  ايضا Qt و wxWidgets  ... الخ 
* لكن هذه الاضافات حاليا هي للزينة لان المكتبات ليست منصبة على جهازك , لن تستطيع الان تشغيلها , سوف نهتم بمثل هذه البرامج لاحقا في الدورة , الان عليك بالتركيز الا في نوع Console , لانك لا تمتلك المستوى اللازم لتصميم بقية انواع البرامج .
- الان انقر على GO  لانشاء مشروع جديد , تظهر لك نافذة انقر على Next " هذه النافذة غير مهمة " , بعدها تظهر لك نافذة لتختار نوع اللغة التي سوف تبرمج بها اختار لغة C ثم Next .
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح
- بعد هذه الحطوة يطلب منك اسم المشروع و المصار الذي سوف تُحفظ فيه الملفات , ثم Next
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

- و اخير اخر نافذة تعرض عليك خيار كيف سيتم compiled البرنامج , يمكنك تركه كما هو حاليا و لا تغير شئ لانه لن يكون لهذه النافذة الان تاثير على ما سوف نقوم به , فقط احرص على ان خانة Debug او Release تكون مفعلة ثم انقر على finish .
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

- الان قد قمت يانشاء اول مشروع برمجة لك و قد تجن ان Code::Blocks قم كتب القليل من source code 
- على الاجدول الايسر قم بفتح الملفات المشروع حتى تصل الى main.c 
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح

خلاصة
* المبرمجون يحتاجون الى 3 برامج text editor , compiler و debugger .
* يمكن تنصيب و استعمال كل برنامج على حدى لان من الاسهل و الشائع هو استعمال برنامج 3 في 1
 اسمه IDE " Integrated development environment " 
* ++Code::Blocks , Visual C  و Xcode  تعد من اشهر برامج IDE .

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

الخميس، 7 يوليو 2016

تعلم البرمجة بلغة C للمبتدئين : 1 مقدمة و شرح المفاهيم الاولية

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

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

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

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

حقوق المؤلف
- الجدير بالذكر ان جميع الشروحات التي سوف نعرضها  في هذه الدورة على مدونة خبير الانترنت هي منقولة من اشهر درس للبرمجة في الغرب , كل ما سوف يطرح هو نقل و ترجمة من الكتاب ندخل عليها اضافات و تعيدل .
المصدر هو : موقع openclassrooms , المؤلف والكاتب هو Mateo21 

مقدمة
- ان كنت ترغب في تعلم البرمج و لا تعرف من اين تبداء لشدة تعقيد بعض الشرحات المتوفرة على الانترنت , فهاذه الدورة و الدروس هي مصنوعة من اجلك .
- لغة C هي لغة برمجة مفتوحة و لا يمكن التحكم بها في المطلق , تم اختراعها في السبعينيات , ولحد اليوم هي تستعمل في انظمة التشغيل و الروبوتيك الحديثة , لا يخفى عليك انها لغة معقدة لكن حين تتمكن منها سوف تكون لك قاعدة صلبة في المجال و يمكنك الانتقال الى لغات اخرى و انت تمتلك مفاهيم و اسس متينة .
- في هذه الدورة سوف نتطرف الى الذاكرة , المتغيرات , الشروط , الحلقات , بعدها سوف ننتقل الى انشاء واجهات جرافيزم "GUIs" بمكتبة SDL ( العاب فيديو  وغيرها ) , سوف نتعلم طريقة التحكم في هياكل البيانات لتنظيم و تسوية المعلومات المخزنة , lists, stacks, queues, hash tables وغيرها .

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

ما هي البرمجة ؟
- بكل بساطة هي تصميم و انشاء برامج رقمية IT (تكنولوجيا المعلومات) و هذه البرامج تعطي اومر لجهاز الكمبيوتر .
- الكمبيوتر او الحاسوب معبأ بالبرامج 
* الالة الحاسبة هي برنامج 
* معالج النص هو برنامج 
* ادات الدردشة هي برنامج 
* العاب الفيديو هي برنامج 
تعلم البرمجة بلغة C للمبتدئين : 1 مقدمة و شرح المفاهيم الاولية
عمل مبرمج بعد انهاء الدروة
- خلاصة القول ان البرامج هي موجدة في كل مكان و بامكانها القيام باي شئ على جهاز الكمبيوتر , يمكنك تصميم برنامج تشفير البيانات او لعبة 3D ثلاثية الابعاد على الانترنت , لا يهم حاسوبك بامكانه القيام بكل هذا و اكثر .
- طبعا تصميم لعبة من الصفر لا تكون بين ليلة وضحاها , التصميم يتطلب الكثير من الجهد و العمل .
- في البداية لن نحاول تصميم لعبة ثلاثية الابعاد "صعبة " , سوف نبداء بعمل برامج بسيطة جدا , و من ضمن اول الاشياء التي سوف نتعلمها هي كيفية اظهار رسالة على شاشة الحاسوب , نعم النتيجة في حد ذاتها لا تبعت الحماس , لكن مجرد هذه العملية تتطلب معارف وليست بالسهولة التي تظنها .

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

ما معنى لغة C اصلا ؟
للعلم ان الحاسوب هو الة غريبة , لايمكن التعامل و التواصل معه الى من خلال 0 و 1 , من هذا المنطلق اذا ترجمنا له " حساب العملية 3+5 " سوف نجد النتيجة على الشكل التالي :
0010110110010011010011110

- ما تراه في النتيجة هي لغة الحاسوب التي تسمى binary language ( احفظ جيدا هذه العبارة ) , جهازك لا يعرف الا هذا النوع من الكلام و من الواظح ان مثل هذا الكلام غير مفهوم بتاتا لنا .

- هذه اول مشكلة : كيف نتكلم مع الكمبيوتر بلغة اسهل من 0 و 1 ؟ 
- الكمبيوتر لا يتكلم اي لغة من لغات البشر , و من غير المعقول البرمجة باستعمال binary لتصميم برنامج , حتى مجانين البرمجة لا يعملون هذا .
- من هذا المنطلق تم اختراع لغات جديدة التي سوف تحول كلامنا الى binary كلام الكمبيوتر , اصعب شيء هو انشاء برنامج يقوم بالترجمة , اطمئن هذا البرنامج موجود و لن تطر لاختراعه , سوف نستعمله لترجمة كلمات مثل " حساب العملية 3+5 " التي سوف تمر عبر برنامج الترجمة و نحصل على نتجة 0010110110010011010011110 .
رسم تبياني للشرح الذي طرحناه
معجم البرمجة 
- لحد الان لم نستعمل الا عبارات "عامة" , لكي تكون لك فكرة توجد كلمة لكل شيء في البرمجة , و في هذه الدورة سوف نتعلم المعجم المستعمل , ليس فقط لتتظاهر و التتفاخر بانك تفهم ما تَقول o_O لا , لكن لتتمكن في المستقبل "و هذا سوف يحصل " التواصل مع مُبرمج اخر, ستستطيع ايصال المعلومة بوضوح , لا تكترث لكلام الناس الذين سوف ينظرون اليك مثل كائن فضائي سوف تعتاد .

- نعود الى الرسم التبياني السابق
* الحالة الاولة هي ان " برنامجك مكتوب بلغة مُبسطة " هذه اللغة المُبسطة تُسمى لغة عالية المستوى high-level language .
- يوجد العديد من مستويات اللغة , كل ما كانت رفيعة او عالية المستوى كل ما اقتربت من اللغة البشرية , ادا لغة عالية المستوى هي سهلة الاستعمال , لكن في نفس الوقت لها سلبيات سوف نتعرف عليها لاحقا .
- توجد العديد من اللغات من صنف عالية المستوى في البرمجة التي يمكنك استعمالها لتصميم برامجك مثل :
* ++C
* JAVA
* Visual Basic
* Delphi
* C
- ليكن في علمك ان الترتيب كان عشوائيا و لا تجعل في ذهنك ان الاول اسهل و افضل من الاخير او العكس , مجرد امثلة , طبعا توجد لغات عديدة اخرى و لا يمكن وضعها جميع للتيسير عليكم .
- الفرق بينها هو اختلاف عُلُو المستوى , بطبيعة الحال توجد لغات اسهل للاستعمال من اخرى .

- كلمة اخرى للحفظ هي الشفرة المصدرية " source code " ما نسميه الكود سورس هو ببساطة كود برنامجك مكتوب بلغة عالية المستوى , بمعنى انت من يكتب " source code " الذي سوف يترجم الى binary .

- ننتقل الى " برنامج الترجمة " الذي سوف يترجم لغتنا عالية الممستوى (مثل C او C++ ) الى binary , هذا البرنامج في حد داته له اسم , في المعجم اسمه the compiler و الترجمة تسمى the compilation .
- مهم جدا : يوجد compiler لكل نوع من اللغات عالية المستوى , امر بديهي مادامة كلها مختلفة لا يمكن ان يكون المترجم يستعمل لها جميعا .
ملاحظة سوف تعرف لمذا بالذات يوجد عدت برامج "compiler" بالنسبة للغة C , يوجد مترجم من شركة Microsoft و اخر من GNU  و عدد اخر , سوف نتعمق في الامر اكثر في الدرس القادم , هي تقريبا شبيهة ببعضها لكن بها اختلاف طفيف سوف نتعلم ما هي بالتحديد .
- اخيرا و ليس باخر برنامج binary المُتَرجَم على compiler يسمى the executable , لهذا السبب تجد ان اغلب البرامج على الويندوز لها " extension " امتداد « .exe » اصلها من كلمة EXEcutable .

- الان لنعد صياغة الرسم التبياني في لغة البرمجة الحقيقية سوف تكون كالتالي 

لمذا اختيار تعلم لغة البرمجة C ؟
- مثل ما شرحناه توجد العديد من اللغات للبرمجة , هل يجب بداء التعلم من احدهن ؟ سؤال وجيه .
* يجب عليك الاختيار للبداية في التعلم و الخيارات متعددة :
- very high-level language لغة عالية جدا في المستوى : هي لغة سهلة الاستعمال , من ضمنها نجد Python, Ruby, Visual Basic , و عدد اخر من نفس القبيل , لكن تجد انها مرفوقة بملفات لكي تستطيع الاشتغال .
- high-level language لغة من مستوى أقل قليلا : سوف تجد انها اصعب قليلا , لكن بلغة مثل C سوف تتعلم اكثر عن البرمجة و طريقة عمل الكمبيوتر , بعدها سوف يكون بامكانك تعلم لغات مغايرة بسهولة اكبر , سوف تحصل على استقلال و تحرر داتي .

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

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

سؤال عشوائي 
يوجد شئ لا افهمه ما هو الفرق بين مختلف لغات البرمجة ؟ مثلا ما هو الفرق بين لغة C و ++C  ؟
اللغة C و ++C  متشابهين كثيرا لمعرفة اوجه التقارب علينا الرجوع الى تاريخ اختراعهما :

- في البداية حين كان الكمبيوتر يزن اطنان و حجمه يستلزم غرفة بسعة منزلك , تم اختراع اول لغة و اسمها Algol .
- بعد التطور تم اختراع لغة اسمها CPL , الذي تم تطويره الى BCPL , الذي بعدها اخد اسم " اللغة B " .
- بعدها بفترة تم اختراع لغة جديدة و هي C , هذه الاخيرة حتى و ان تم التعديل عليها تبقى الى اليوم الاكثر استعمال .
- مرة وقت فتم اقتراح اضافة اشياء اخرى على C , على شكل "تحسين" حتى و ان كان المعنى لكلمة تحسين الا مجاز,  سُمية باللغة ++C التي هي تعتبر فقط C مع اضافات تسمح بالبرمجة بطريقة اخرى . 

- لنتفق على هذه النقطة بالذات , ++C ليس افضل من C , هو يسمح بالبرمجة على نحو مغاير و قد يسمح باتساع في اشياء , بعد هذه الدورة سوف تجد سهولة كبيرة مع ++C ان قررت تعلمه .
- ليس لان ++C معاصر على C , يتوجب عليك حتما المرور من C الى ++C , لغة C ليست لغة قديمة  مفقودة الى الان تستعمل كاساس لانظمة التشغيل الاكتر رواج في العالم منها Linux , Mac OS , Windows  "وكانني قلت جميعها ^__^" .

هل البرمجة صعبة ؟
- سؤال يدور في اذهان الجميع وخصوصا الراغبين في قطع اول الاشواط , هل يجب ان تكون متمكن في الرياضيات و حاصل على شهادات عليا لكي تتمكن من بداية البرمجة ؟
- الجواب لا قطعا , طبعا لا , لا يستلزم عليك ان تكون ذو معرفة من مستوى عالي في الرياضيات للبرمجة , كل مايستلزم عليك مرفته هي العمليات الاربعة الاساسية للحساب 
* الجمع
* الطرح
* القسمة
* الضرب

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

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

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

خلاصة 
- لتصميم برنامج يجب عليك ان تكتب في لغة يفهمها الكمبيوتر .
- يوجد العديد من لغات البرمجة التي يمكن ترتيبها على حسب المستوى , اللغات التي تسمى " high language " عالية المستوى تكون عادتا اسهل للاستعمال .
- اللغة التي سوف نتعلمها في هذه الدورة "C" تعتبر كلغة برمجة منخفضة المستوى " Low level "
- source code هو عبارة عن تعليمات او اوامر مكتوبة بلغة المعلوماتية .
- compiler هو برنامج يحول source code الى binary , الذي بعدها يمكن للمعالج 'CPU' تنفيده على شكل .exe , التي ما هي الا برامج من binary فيها الكثير من source code في داخلها .
- البرمجة في حد ذاتها لا تتطلب معرفة متقدمة في الريا ضيات , الا فيحالة ما كان برنامجك مبني لفعل حسابات معقدة مثل التشفير , الحس المنطقي مطلوب ويجب ان تكون منهجي .

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