الصلاة و السلام على أشرف المرسليـن ..
الحمد لله وحده نحمده و نشكره و نستعينه و نستغفره و نعود بالله من شرور أنفسنا و من سيئات أعمالنا ...
...من يهده الله فلا مظل له و من يظلل فلن تجد له ولياً مرشدا ...
...و أشهد ألا إلاه إلا الله وحده لا شريك له و أن محمداً عبده و رسوله صلى الله عليه و سلم ...
... و على آله و صحبه أجمعين و من تبعهم بإحسان إلى يوم الدين ...
...ربنا لا علم لنا إلا ما علمتنا إنك أنت العليم الخبير ...
...ربنا لا فهم لنا إلا ما فهمتنا إنك أنت الجواد الكريم ...
...ربي اشرح لي صدري و يسر لي أمري و احلل عقدة من لساني يفقهوا قولي ...
...أما بعد ...
______________________________________________
::مقدمة::
أهلا و سهلا بكل عضو يريد الاستفادة في دورتي
لتعليم البرمجة بلغة C/C++ للمبتدئين .. سأكون مرشدتكم ( أو أستاذتكم لو صح
القول ) . لننتقل إليكم، لكم هدف معيّن و هو تعلّم البرمجة ، لا تعرفون
شيئا عنها و لو كان صغيرا، و لهذا سأساعدكم على فتح بوابة هذا العالم و منه
انطلقوا بابداعاتكم إلى الأمام.
لكن، ماذا تعني كلمة المبرمج بلغة C/C++ ؟ و هل أنتم قادرون على تحمل
الأعباء و الصبر على هذه المغامرة الصغيرة ؟ ، دعوني أقدّم لكم المجال
أوّلا و أجيب على أتفه الأسئلة التي تدور ببالكم . تابعوني في هذا الدرس
الافتتاحي و لا تنسوا بأن في كلّ نهاية مجال أضع تمارين و المشاركين لهم
جوائز !
بالتوفيق لنا و لكم
______________________________________________
من هو المبرمج ؟
لن
أتعبكم و اعطيكم أصل كلمة "programmer" ، لكننى سأختصر كل شيء في جملة :
البرمجة تعني صنع برامج كومبيوتر . و هذه البرامج التي تصنعها تأمر الجهاز
بالقيام بإجراءات و أفعال معيّنة .
جهازك الخاص يحتوى على كثير من هذه البرامج و بمختلف أنواعها :
- الآلة الحاسبة هي أحد البرامج.
- معالج النصوص هو أحد البرامج.
- برنامج محادثتك MSN هو أحد البرامج.
- ألعاب الفيديو برامج كذلك .
باختصار ، البرامج موجودة في كلّ جهاز تعرفه، و
هي التي تعطي للكومبيوتر بداهته في التصرف مع مختلف الأعراض التي تحول
إليه، و هذا يوضح ذكاء الكومبيوتر الخارق، يمكنك أن تصنع أي برنامج تشفير
من هذه البرامج و كذا صنع لعبة 3D أو 2D من أي نوع كانت .
______________________________________________
أشهر لعبة Half-Life 2 مبرمجة بلغة الـ: C++
ملاحظة : لم أقل أن صنع لعبة يتطلب إغماض العين و فتحها، لكن أذكركم بأن صنع لعبة يتطلب عملا و جهدا كبيرين و صبرا كثيرا !
لن أدخل مباشرة في درس برمجة لعبة 3D لأن الدخول
إلى ذلك يتطلب العبور بمراحل قاعدية ، سهلة و بسيطة جدّا و أوّلها كيفية
إظهار نص معين بالشاشة .. طبعا ستقولون مادخل هذا بصنع الألعاب لكن وجب
الوثوق بي . لأنى ساعلمكم أشياء تافهة تعتبر قاعدة البرمجة و بدونها لا
يمكنكم الإنطلاق في صنع برنامج. هدف هذا المجال هو أن أعرّفكم على كلّ شيء
يتعلق باللغتين كي تتعاملوا مع أب نوع من البرامج كان ، المهم مبرمج بإحدى
اللغتين .
البرمجة، بأي لغة يا ترى ؟
جهازك الخاص هو آلة غريبة جدّا، لأننا غالبا ما نتعامل معها أثناء البرمجة بالأرقام ، فمثلا أنا إذا طلبت منه حساب 3 + 5 بلغة الكومبيوتر خاصته
( أثناء البرمجة مثلا )، يعطيني نتائج أعرفها أنا ( التي أبرمج عليه ) لكن
لا يفهمها أحد آخر لأنها داخلة في نطاق لغة الكومبيوتر و البرمجة كما قلت!
مثلا يعطيني إجابة : 0010110110010011010011110 .. لا تتفاجؤوا أنا عائدة
إليكم .
كما ذكرت للكومبيوتر لغته الخاصة نسميها اللغة الثنائية المزدوجة ( إحفظوا هذا المصطلح جيدا ! )
مشكلتنا الآن، كيف يمكننا التعامل مع جهازنا بطريقة أسهل من اللغة المزدوجة ؟ هل من وسيط يا ترى ؟
جهازك
الخاص لا يفهم الإنجليزية و لا الفرنسية بل يفهم هذه اللغة فقط،، لهذا
طوّره بعد المكتشفين ووضعوا فيه جهاز ترجمة ذاتي ( يترجم لغات البرمجة
المختلفة إلى لغة الحاسب ) يقوم بتحليل اللغة البرمجة العادية ( كالـ:C
مثلا ) ثم يترجمها إلى لغة الجهاز المزدوجة فيفهمها و يقوم بصنع البرنامج .
فبهذا بدل أن يدرس كلّ مبرمج لغة الحاسب المعقّدة، يمكنه تعلّم أحد اللغات
الأخرى و التي تعتبر أسهل بكثير من الأولى !
تكتب البرنامج بلغة مبسّطة ( أحسب 5+3) --> يترجمها المترجم إلى لغة مزدوجة --> ينفذ الجهاز بنتيجة 0010110110010011010011110
قليل من المفردات !
كلّ ما تحدّثت به سابقا كان بالبسيط، لكن يجب أن تعلموا بأنه في
المعلومات هناك مصطلحات علمية لكل شيء ذكرته من قبل. و هذه فرصتكم مع
الدورة لتعلم مصطلحات و مفردات جديدة و بالتالى فعند تحدّثكم مع مبرمج
كفائته عالية تفهمون ما يقول.
نرجع لآخر نقطة وصلنا لها قبل قليل، قلنا بأن البرنامج الذي تعمل عليه يُكتب بلغة مبسّطة، هذه اللغة نسميها في البرمجة باللغة عالية المستوى
، هناك مستويات عديدة في لغات البرمجة ، و أسهلهم في التعامل هي اللغة
عالية المستوى . لا تفرحوا كثيرا لأن لهذا المستوى سلبيات سنتعرّفت عليها
مستقبلا.
هناك العديد من لغات البرمجة ذات المستويات المختلفة ، أشهرها:<li> C
</li><li> C++
</li><li>Java
</li><li>Visual Basic
</li><li>Delphi
</li><li>و العديد العديد
كما تلاحظون لم أرتب لكم مستوياتها و لم أذكرها، لكن ألا
تتخيّلون كذلك بأن الأول بالقائمة أسهل بالكثير من الأخير بها ؟ عموما تبقى
اللائحة طويلة و المستويات كثيرة. و بما أنكم مبتدءون سنبدء بالأسهل C إلى
أن نصل الى الـ: C++ و نعرف الفرق بينهما.
مصطلح آخر سأريكم إياه و هو : كود السورس
، هو ببساطة الكود الخاص ببرنامجكم الذي تبرمجونه بلغة عالية المستوى ،
نفهم من هذا أن المبرمج هو من يكتب الكود سورس و المترجم يحوله إلى لغة
الحاسب المزدوجة و يطبّق الأوامر.
نرجع إلى " المترجم التلقائي " ، الذي يحول اللغة عالية مستوى ( كالـ:C و الـ:C++ ) إلى لغة مزدوجة، نسميه ببساطة المترجم أو المصنف . و الترجمة هي التصنيف .
ملاحظة هامة : هناك أنواع متعددة من المصنفات، كلّ واحد يختص بترجمة لغة معيّنة من مستوى معين !
للغتين C و الـ:C++ في حدّ ذاتهما مصنفات عديدة، فهناك الذي
يكتب من الـ:Microsoft و هناك من الـ:GNU ..إلخ. سنتعرّفت على كلّ هذا في
المجال القادم .
لحسن الحظ هذه المصنفات تقريبا متطابقة، و هناك اختلافات طفيفة بينها، نتعرف عليها لاحقا .
أخيرا، البرنامج المزدوج المبرمج من طرف المصنّف نسميه : القابل للتنفيذ أو التعديل، هذا ما يفسّر وجود معظم البرامج بصيغة ".exe" و التي هي مشتقة من كلمة فرنسية هي : EXEcutable بمعنى القابل للتنفيذ .
تبرمج بلغة عالية المستوى ( أحسب 5+3) --> المصنف --> برنامج قابل للتنفيذ في الويندوز 0010110110010011010011110
لماذا نختار تعلّم لغتي الـ:C و الـ: C++ ؟
مثلما قلت لكم في الأعلى، هناك الكثير من اللغات عالية المستوى، فهل ينبغى لنا أن نبدأ بإحداهما على وجه الخصوص ؟ سؤال عظيم !
على أي حال يجب أن نختار بأي لغة سنبدء البرمجة عاجلا أم آجلا، و بالتالى لديك الخيار في إختيار البدء بـ:
1-
لغة ذات مستوى عالي جدّا : سهلة للاستخدام أو " عامة " ، من بينها
لغة Python، Ruby، Visual Basic و آخرين .. هذه الغات تسمح بكتابة البرنامج
بشكل أسرع، و يجب أن ترفق لها ملفات مساعدة قابلة للتنفيذ كملف الـ:" الشل
" .
2- لغة بمستوى منخفضة المستوى عن الأولى بقليل: ( فريق المستوى
بينهما ليس كبير ! ) : التعامل مع هذه اللغات أصعب بقليل. فلهذا مع لغة مثل
الـ:C أو C++ ستتعلّم الكثير من الأمور البرمجة و تكتشف سير عمل كمبيوترك
الخاص ! و هذا ما جعلنى أختار لكم هذه اللغة، و خصوصا أنه إذا أتقنتموها
سيصبح من السهل تعلم أي لغة كانت و من أي مستوى .
و كمعلومة، معظم البرامج التي تعرفونها و تستخدمونها مبرمجة بهتين اللغتين C و C++ ، إذا هما لغتان عاميتان .
كلّ
هذا يجعلنى أتحمس أكثر لتعليمكن هذه اللغة قبل أخرى، لا أقول بأنه لا يمكن
البدء بلغة أخرى لكن أذكر بأنه الإختيار الأمثل للدخول في هذا المجال.
أثرثر كثيرا لكن أعرف ما أقوله فهذا يرسّخ المعلومات في رأس المتعلّم،
هناك منكم من هو مثقف قليلا بالبرمجة لكن لابأس إذا أعاد من الصفر ليثبّت
معلوماته أكثر .
- توقفي ! أنا سأتعلّم لغة تسمى "C / C++" أو لغتين إحداهما تسمى C و الأخرى C++ ؟؟
ببساطة، ستتعلمون لغتين مختلفتين معى، لكن لا
تقلقوا لن أضاعف لكم العمل! بل بالتسلسل، سأشرح، اللغتين C و C++ هما لغتان
تقريبا متماثلتان، فعندما أقصدهما بكلامى معا ، أكتبهما بالشكل "C /
C++" .
هذا ما ينقص لتعرفوه عن الاختلافات بينهما، قبل أن نمضى بطبيعة الحال :
1- أولا و عند بداية تطور هذا المجال، أي تعلمنا أن نقيس أطوال بيوتنا بالحاسب، تم اختراع لغة برمجة نسميها Algol .
2- بعدها، تطورت الأمور أكثر و تم اختراع لغة CPL التي تطورت بحد ذاتها إلى الـ: BCPL ثم أخذت إسم اللغة B ( إن لم تفهموا ما أعنيه فلا عليكم إذ أننى أعطيكم بعضا من الثقافة التي أكتسبها لا أكثر )
3- مع مضي الزمن توصل الخبراء إلى لغة الـ:C، التي كانت معدّلة بشكل كبير، و بقيت لحد الآن من أكثر اللغات شعبية.
4-
تقدم الزمن أكثر، أردنا أن نضيف أشياء جديدة للغة C ، يمكننا أن نسيه نوعا
من التحسن، و النتيجة سميناها بما يعرف بلغة الـ:C++ ، هذه الأخيرة أساسها
و قاعدتها الأساسية هي لغة الـ:C .. و بهذا نتوصل إلى أن الـ:C++ هي تطوير
للغة الـ:C ، أطلعكم على التطوّرات في درس لاحق.
هناك طرق متعددة لتعلم البرمجة، قلتها لكم سابقا، البعض يعتقد بأنه من
الجيد تدريس مباشرة لغة C++ لكن هذا بالامر الصعب على المتعلم و على الشارح
.. بالنسبة لي، سأخلط كلّ شيء في بعضه البعض و أدرّس اللغتين معاً، و بهذا
نرتب الفهرس هكذا :
- لغة C
- لغة C++
إذا تعلّمنا جيدا لغة الـ:C و ننتقل إلى الـ:C++ ستسهل الأمور علينا
كثيرا و نتعلم الثانية بسرعة، أنا لن أطلعكم على كل أساسيات الـ:C لكن
سأطلعكم على كل التغييرات و الإضافات التي تم إجراؤها على اللغة .
لكى لا يكون هناك أي سوء تفاهم، لغة الـ:C++ ليست الأحسن من الـ:C ، فقط البرمجة بهما مختلفة، و الثانية أسرع .
ليس
لأن لعبة Half Life برمجت بلغة C++ يعني أنه لبرمجة لعبة احترافية وجب تلك
اللغة، و كما أن لغة الـ:C ليست لغة عجوز من عهد قديم، لا بل هي من الأكثر
استخداما في هذا العصر، و التي تعتبر أساس الكثير من أنظمة التشغيل كـ:
Linux و Mac OS و Windows . و بهذا فاللغتين مكملتين لبعضهما البعض .
البرمجة، صعبة يا ترى ؟
هذا سؤال يعذب أرواحكم جميعا، فهل وجب أن تكون عقلا مفكّرا بالرياضيات
كي تستطيع الشروع في تعلم البرمجة ؟ الجواب هو : لا بطبيعة الحال.
سأسهل عليكم الأمرو أعطيكم ما يجب أن تدركوه في الرياضيات حتى تستطيعون الشروع في البرمجة :
1- الجمع
2- الطرح
3- القسمة
4- الضرب
أعتقد بأنكم تعرفون القيام بكل ذلك، سأشرح لكم في مجال قادم، كيف يقوم الحاسب بتنفيذ هذه العمليات الأساسية.
هناك أشياء أخرى يجب أن تتعلمها في المادة الرياضية، تعتمد على نوع
البرمجة الذي ستقوم بها، فإن كنت ستبرمج برنامجا ببرمجيات التشفير
cryptage، يجب أن تعرف بعض الأشياء. و إن كنت مثلا ستبرمج برنامجا يعتمد
ثلاثيات الأبعاد يجب أن تتعلّم مجال : الهندسة الفضائية.
على العموم سنحوال التبسيط في هذه الدروس قدر المستطاع لتجنب الوقوع في هذه التعقيدات.
- إذا أين هو الفخ ؟ و أين تكمن الصعوبة ؟
يجب أن تعرفوا كيف يعمل جهازكم الخاص، هذا من وجهة نظرى، لكن لا تقلق سأعلّمك ذلك طبعا .
المبرمج له صفات أيضت كـ:
1- الصبر : إذا لم تكن صبورا فأنصحك عدم دخول المجال لأنك ستتعرض كثيرا لخيبات الأمل و ستعاود العمل من جديد .
2- حسّ المنطق : صحيح قلت ليس مهما أن تكون قويا بالرياضيات، لكن يجب أن تحلل بمنطقك و تكون ذكيا على الأقل !
3-
الهدوء: كي يعمل البرنامج الذي تبرمجه، لا يجب أن تكون عصبيا و تضرب
الجهاز و ماشابه لأنك ستوتر نفسك فقط و البرنامج يبقى على حاله!
</li>
وأخيرا
أقول بأن السيّء بالرياضيات يمكنه أن يتعلم البرمجة بشكل عادي جدا، فقط
يجب أن يكون ذكيا و صبورا و هادئا حينها كل شيء سيفتح أمامه و يصل لمراده
بحول الله ، هكذا ينتهى المجال الأول ، أو الدرس الأول لو صح القول في
البرمجة ، آمل أن تستفيدوا و لا تنسوا متابعة باقي الدروس! ، سأستجوب فهمكم
ببضعة اسئلة في الرد التالي، كي أعرف من فهم الدرس و من لم يفهم .
:: تمرين ::
أجب على هذه الأسئلة باختيار الإجاية الصحيح و التنقيط سيكون على 5
1- البرمجة بلغة عالية مستوى هو :
- لغة معقدة و مركبة قريبة من اللغة المزدوجة
- لغة سهلة قريبة للغة العادية
- لغة لا تستخدم إلا بارتفاع عالي.
2- البرمجة تعطينا برامج من أي نوع ؟
- قابلة للتنفيذ (*.exe في الـ: Windows)
- صور *.jpg, *.png, *.bmp...)
- فيديوهات *.avi, *.mov...)
3- هل الـ:C أو الـ:C++ يمكننا نمذجة أكثر الأشياء بها؟
- C
- C++
- كلاهما قادر على ذلك
4- البرنامج الذي يترجم اللغة البرمجة إلى لغة مزدوجة نسميه :
- المزدوج
- المكلف
- المصنف
5-أي الغات سنبدء بتعلّمها في دورتي ؟
- C
-C++
- كلاهما .
[/size]