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

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

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

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

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

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

تعلم-البرمجة-لغة-C

مقدمة

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

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

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

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

بعض الانجازات التي سوف نحققها في الدورة

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

ما هي البرمجة ؟

بكل بساطة هي تصميم و انشاء برامج رقمية IT (تكنولوجيا المعلومات) و هذه البرامج تعطي اوامر لجهاز الكمبيوتر .

الكمبيوتر او الحاسوب معبأ بالبرامج 

  • الالة الحاسبة هي برنامج 
  • معالج النص هو برنامج 
  • ادات الدردشة هي برنامج 
  • العاب الفيديو هي برنامج 
عمل مبرمج بعد انتهاء الدورة

خلاصة

البرامج هي موجدة في كل مكان و بامكانها القيام باي شئ على جهاز الكمبيوتر, يمكنك تصميم برنامج تشفير البيانات او لعبة 3D ثلاثية الابعاد على الانترنت … لا يهم حاسوبك بامكانه القيام بكل هذا و اكثر .

طبعا تصميم لعبة من الصفر لا تكون بين ليلة وضحاها التصميم يتطلب الكثير من الجهد و العمل .

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

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

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

ما معنى لغة C اصلا ؟

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

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

هذه اول مشكلة :

كيف نتكلم مع الكمبيوتر بلغة اسهل من 0 و 1 ؟

الكمبيوتر لا يتكلم اي لغة من لغات البشر, و من غير المعقول البرمجة باستعمال binary لتصميم برنامج, حتى مجانين البرمجة لا يعملون هذا .

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

سوف نستعمله لترجمة “حساب العملية 3+ ” التي سوف تمر عبر برنامج الترجمة و نحصل على نتجة : 0010110110010011010011110 .  

تعلم البرمجة
رسم تبياني للشرح الذي طرحناه

معجم البرمجة 

– لحد الان لم نستعمل الا عبارات “عامة”, لكي تكون لك فكرة توجد كلمة لكل شيء في البرمجة , و في هذه الدورة سوف نتعلم المعجم المستعمل , ليس فقط لتتظاهر و التتفاخر بانك تفهم ما تَقول 😝 لا . لكن لتتمكن في المستقبل (و هذا سوف يحصل) التواصل مع مُبرمج اخر , ستستطيع ايصال المعلومة بوضوح , لا تكترث لكلام الناس الذين سوف ينظرون اليك مثل كائن فضائي .. مع الوقت سوف تعتاد 😆 .   نعود الى الرسم التبياني السابق

الحالة الاولة هي ان ” برنامجك مكتوب بلغة مُبسطة ” هذه اللغة المُبسطة تُسمى لغة عالية المستوى

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 ,MacOS ,Windows “وكانني قلت جميعها 😄” .  

س : هل البرمجة صعبة ؟

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

  • الجمع
  • الطرح
  • القسمة
  • الضرب

الامر مبهر اليس كذلك … ! في الدروس القادمة سوف نشرح كيف يقوم الحاسوب بتنفيد هذه العمليات الحسابية .

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

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

ادا اين الفخ ! اين الصعوبة ؟

يجب عليك معرفة طريقة عمل الكمبيوتر للبرمجة بلغة C , من هذه الناحية لا تقلق سوف نتطرق اليها بالتفصيل .

المبرمج يجب ان تتوفر فيه الصفات التالية : 

* الصبر : البرامج لا تعمل دائما في المرة الاولى , يجب عليك المثابرة .

* التحلي بحس المنطق : لا يستلزم عليك ان تكون تكسب معارف كبيرة في الرياضيات , لكن يجب عليك تخديم عقلك .

* الهدوء : لا .. لا نضرب الكمبيوتر بعصى , … لن يجعل من البرنامج يعمل .  

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

خلاصة 

– لتصميم برنامج يجب عليك ان تكتبه في لغة يفهمها الكمبيوتر .

– يوجد العديد من لغات البرمجة التي يمكن ترتيبها على حسب المستوى , اللغات التي تسمى ” high language ” عالية المستوى تكون عادتا اسهل للاستعمال .

– اللغة التي سوف نتعلمها في هذه الدورة “C” تعتبر كلغة برمجة منخفضة المستوى ” Low level ”
– source code هو عبارة عن تعليمات او اوامر مكتوبة بلغة المعلوماتية .

– compiler هو برنامج يحول source code الى binary , الذي بعدها يمكن للمعالج ‘CPU’ تنفيده على شكل .exe , التي ما هي الا برامج من binary فيها الكثير من source code بداخلها .

– البرمجة في حد ذاتها لا تتطلب معرفة متقدمة في الريا ضيات , الا فيحالة ما كان برنامجك مبني لفعل حسابات معقدة مثل التشفير

– الحس المنطقي مطلوب ويجب ان تكون منهجي .

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