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

Header Ads

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

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

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

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

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

مقدمة

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

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

هناك تعليقان (2):