انشاء اول برنامج لك بلغة البرمجة C
نعم , في نهاية هذا الدرس سوف تتمكن من انشاء اول برنامج لك , حتى و ان كان الا بالابيض و الاسود و لا ينفع لشئ , الا ان يقول لك صباح الخير 😅 .
وحدة التحكم "Console" أو النافذة؟
لقد تكلمنا بشكل سريعة عن " برامج Console " و " برامج النوافذ " في هذا الشطر مترجمنا IDE يطلب منا اي نوع نريد انشائه , اجيبك بسرعة سوف نستخدم " برامج Console " .يجب ان تعلم انه يوجد نوعين من البرامج لا اكثر
- - برامج Console
- - برامج بالنوافذ
البرمج بالنوافذ
هي البرامج التي يعرفها العامة , هذه الصورة تمثل برنامج بالنوافذ لا يوجد من لا يعرفه
- اذا هذا برنامج بنوافذ , واعتقد انك ترغب في انشاء مثله .... لن تستطيع ذلك حاليا 😅 .
- طبعا انشاء برامج تعتمد على النوافذ امر ممكن جدا بلغة C , لكن لمبتداء في البرمجة ... الامر معقد قليلا .
- للبداية الافضل هو البرمجة على وحدة التحكم "Console"
برامج Console
هي اول البرامج التي تم اختراعها , في ذلك الزمن الكمبيوتر لم يكن قادر الا على بث الابيض و الاسود , و لم يكن قوي كفاية لانشاء نوافذ مثل ما هو عليه الحال اليوم .
طبعا مر الوقت و تطور نظام " ويندوز" ( ترجمة كلمة windows تعني نوافذ ) وقد صار الحاسوب قوي و سريع ايضا هو اليوم للاستعمال الواسع و العام , شهرة نظام ويندوز راجعة الى سهولته , نظام التشغيل ويندوز صار شائع لدرجة ان الاكثرية لا تعرف او نسية ما معنها برامج Console و كيفية التحكم فيها .
البرمجة بالكونسول لم تُفقد او انتهت , نظام التشغيل لونيكس Linux يعتمد الا على هذه الطريقة اليك صورة تمثيلية من البرنامج
مُرعبة اليس كذلك !!؟ 😂 ... هذه نبدة فقط عن البرامج بالكونسول .
ملا حظات
- - اليوم حتى على اللونيكس يمكن بث الالوان , لم يعد كل شئ بالابيض و الاسود
- - مثل هذه البرامج لا تعتني بالمستعمل سواء من شرح او طريقة العمل .
- - مثل هذه البرامج لا يستخف بها فهي قوية جدا ان كنت تعرف التحكم بها .
مثل ما اشرنا اليه انشاء برنامج بهذه الطريقة سهل جدا و يمكن البداء بها , ايضا يمكن الان اضافة الالوان او وضع صورة خلفية .
سؤال : هل في الويندوز لا يوجد برامج console ؟
بالطبع موجودة , لكنها مخفية عن من لا يعرف كيف العمل بها و ما هي اصلا , يمكن راية هذا البرنامج بالتوجه الى
Start / Accessories / Command Prompt او Start / Run تكتب في Run الكلمة التالية cmd
صورة لبرنامج console على الويندوز |
اعتقد ان الجميع من يتابع الدورة الان هو على الويندوز , اعلم ادا اننا سوف نقوم بانشاء شئ من هذا القبيل , ادا اخترنا هذا النوع من البرامج و المقدمة لم يكن لمجرد الكلام او لمماطلة , هي عبارات يجب تعلمها عن ظاهر القلب و ايضا البرمج بها هي القاعدة الاولية في عالم البرمجة , سوف تتعلم القواعد الاساسية من الصفر لكي تنتقل الى مرحلة البرمجة بالنوافذ , كن مطمئن حين يكون لنا المستوى في الدورة سوف ننتقل الى برمجة برامج اكثر تعقيد و اكثر نفع و اهمية .
تعلم البرمجة بلغة C للمبتدئين : 1 مقدمة و شرح المفاهيم الاولية
تعلم البرمجة بلغة C للمبتدئين : 1 مقدمة و شرح المفاهيم الاولية
نبداء بقليلا من code "الرموز البرمجية"
لا يهم اي نوع من البرامج التي سوف نعمل عليه , اولا يجب ان تكتب القليل من code , هذا الكود لن يفعل شئ مخصص لكن يجب كتابته " ركز سوف تفهم " .
"كود الحد الأدنى" Minimum code الذي سوف نتعرف عليه الان , سوف يمثل القاعدة لاغلبية برامجك بلغة C .
طلب Minimum code من IDE
من المترجم الذي تحدثنا عنه في الشرح او الدرس الثاني نقوم بانشاء مشروع جديد new project , ارجع الى الدرس السابق ان نسيت طريقة فعل ذلك .
تعلم البرمجة بلغة C للمبتدئين : 2 الادوات اللازمة للبرمجة مع الشرح
تعلم البرمجة بلغة 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 في الكود الذي امامنا يحتوي على كلمة هي في الحقيقة اسم ال 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 .
كل 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 , البرنامج يتوقف .
اعد العملية بالكود الجديد
مبروك الان صرت تتحكم في النص , في الدرس القادم سوف نتطرق الى التحكم اكثر في الشئ الذي يظهر على الشاشة و كيفية ظهوره مثل وضع الفراغات تنسيق و ما شبه .
الى الدرس القادم
0 comments
Post a Comment