دورة تعلم لغة C++ أبسط طريقة لتعلم هذه اللغة



0.1- مقدمة لهذه البرامج التعليمية
أهلا بك!
 مرحبًا بك في دروس تعلم C ++! قبل كل شيء ، تهدف هذه البرامج التعليمية إلى جعل تعلم لغة C ++ أمرًا سهلاً.
 على عكس العديد من المواقع والكتب الأخرى ، لا تفترض هذه البرامج التعليمية أن لديك خبرة
 برمجة سابقة. سنعلمك كل ما تحتاج إلى معرفته أثناء تقدمك ، مع الكثير من الأمثلة على طول الطريق.
 سواء كنت مهتمًا بتعلم C ++ كهواية أو للتطوير المهني ، فأنت في المكان الصحيح!
هيكل تعليمي
 تهدف البرامج التعليمية في هذا الفصل التمهيدي إلى إعطائك بعض السياق حول ما هو C ++ ، 
وكيف حدث ، وكيف تعمل البرامج ، وما هي البرامج التي تحتاج إلى تثبيتها لإنشاء برامجك 
الخاصة. ستكتب حتى أول برنامج خاص بك. سوف تستكشف فصول أخرى أجزاء مختلفة من لغة C ++.
 في الفصل الأول (الفصل 1) ، ستحصل على نظرة عامة واسعة ولكن ضحلة من العديد من 
مفاهيم C ++ الأساسية ، حتى نتمكن من البدء في كتابة بعض البرامج البسيطة. مزيد من
 الفصول سوف تستكشف هذه المفاهيم في العمق ، أو إدخال مفاهيم جديدة.
 يحتوي كل فصل على موضوع عام ، مع ارتباط جميع الأقسام الموجودة تحته بهذا الموضوع.
 لا يوجد مقدار الوقت المقترح الذي يجب أن تنفقه مع كل درس أو فصل ؛ التقدم من خلال المواد
 بوتيرة مريحة بالنسبة لك.
 الأهداف
 قبل البدء ، دعنا نلقي بهدفين هامين من هذه البرامج التعليمية:
  تغطي مواضيع البرمجة بالإضافة إلى C ++. تقوم الكتب المدرسية التقليدية بعمل جيد في
 تدريس أساسيات لغة برمجة معينة ، ولكنها غالبًا لا تغطي موضوعات البرمجة ذات الصلة بالغة. على سبيل المثال ، 
ستقوم الكتب بحذف الأقسام الخاصة بنمط البرمجة والمزلات الشائعة وتصحيح الأخطاء وممارسات البرمجة الجيدة /
 السيئة والاختبار. وبالتالي ، عند الانتهاء من الكتاب ، فهمت كيفية البرمجة بلغة ، ولكن لديك الكثير من العادات السيئة
 التي ستعود إلى عضك لاحقًا! يتمثل أحد أهداف هذه البرامج التعليمية في التأكد من تغطية جميع هذه الموضوعات العرضية على 
طول الطريق ، في الأقسام التي يكون من الطبيعي أن تناقش فيها. عند الانتهاء ، لن تعرف فقط كيفية البرمجة في C ++ ، ستعرف
 كيف لا يمكن البرمجة في C ++ ، التي يمكن القول أنها مهمة.
قدمنا الكثير من الأمثلة. يتعلم معظم الناس الكثير أو أكثر من متابعة الأمثلة كما يفعلون 
من قراءة النص. سيسعى هذا البرنامج التعليمي إلى توفير الكثير من الأمثلة الواضحة
 والمختصرة لإظهار كيفية تطبيق المفاهيم التي تتعلمها. سوف نتجنب أيضًا (قدر الإمكان) 
الشرور الثنائية: موجة اليد السحرية (المعروفة أيضًا باسم ...) ، حيث يتم إغفال جزء 
الفضاء من أحد الأمثلة ، والمفهوم الجديد غير المبرر ، حيث يكون المفهوم الجديد هو يتم 
تقديم جزء لا يتجزأ من المثال دون أي ذكر لما هو عليه أو كيف يعمل. كل من هذه تميل إلى أن تتعثر.
 توفير برامج التدريب. سوف تحتوي نهاية العديد من الدروس والأقسام على بعض التمارين التي
 يمكنك محاولة الإجابة عليها بنفسك ، إلى جانب الحلول. يمكنك مقارنة الحل الخاص بك ضدنا 
لمعرفة ما فعلناه بشكل مختلف ، أو ، إذا واجهتك مشكلة ، كيف حل المشكلة. ثم يمكنك العودة وإعادة التركيز
 على المناطق التي تحتاج إلى مزيد من العمل عليها.
 الأهم من ذلك: المتعة. قد تكون البرمجة ممتعة كثيرًا ، وإذا لم تكن دائمًا ممتعًا ، فأنت 
لست في عقلية مناسبة للبرمجة. يخطئ المبرمجون المتعبون أو غير السعداء ، ويميل تصحيح 
الأخطاء إلى أخذ وقت أطول من كتابته بشكل صحيح في المقام الأول! في كثير من الأحيان ، يمكنك
 توفير بعض الوقت من خلال الذهاب إلى السرير ، والحصول على ليلة نوم جيدة ، والعودة إلى مشكلة في الصباح.
الحصول على أقصى استفادة من هذه البرامج التعليمية
 أثناء استعراض هذه البرامج التعليمية ، نوصي بعدد من الممارسات لتحقيق أقصى قدر من 
الخبرة التعليمية:
 اكتب الأمثلة باليد وقم بتجميعها بنفسك. لا تنسخها ولصقها! سيساعدك هذا على معرفة 
الأماكن التي تصادف فيها الأخطاء بشكل شائع ، بالإضافة إلى التعرف على التحذيرات والأخطاء في
 الترجمة. أثناء الكتابة في الأمثلة ، فكر في الأسباب التي تجعل كل من الأشياء التي تكتبها منطقية.
  عند ارتكاب الأخطاء أو العثور على أخطاء في البرنامج ، قم بإصلاحها. حاول حل مشكلاتك 
الخاصة قبل أن تطلب من الآخرين المساعدة.
  تجربة مع الأمثلة. تغيير الأرقام والنص لمعرفة ما يحدث. تعديل البرامج للقيام بأشياء 
إضافية (على سبيل المثال ، إذا كان البرنامج يضيف رقمين ، اجعله يضيف ثلاثة أرقام). حاول
 إيجاد طرق مختلفة لكسر البرامج (إذا طلب برنامج إدخال المستخدم ، جرّب مجموعة متنوعة من 
المدخلات المختلفة). ستتعلم الكثير من تعديل الأمثلة كما تفعل عن طريق متابعتها.
   اكتب البرامج القصيرة الخاصة بك باستخدام المفاهيم التي تعلمتها. لا شيء أفضل من الممارسة.
   تعلم كيفية تصحيح برامجك عندما لا تعمل. هذا أمر بالغ الأهمية لحل مشاكلك الخاصة ، وهو مهارة يتخطاها 
العديد من المبرمجين الجددلإلحاق الضرر بهم. سنحصل على مزيد من المعلومات حول كيفية القيام بذلك في درس مستقبلي.
ملاحظة: 
غالبية الأمثلة في البرامج التعليمية هي برامج كاملة يمكنك تجميعها وتشغيلها بنفسك. ومع 
ذلك ، ستكون الأمثلة أحيانًا "مقتطفات" من التعليمات البرمجية المصممة لتوضيح مفهومًا 
سريعًا. نظرًا لأن هذه البرامج ليست كاملة ، فلن يتم تجميعها بدون بعض الأعمال الإضافية. 
يمكنك تحويلها إلى برامج كاملة بنفسك ، إذا كنت ترغب في ذلك.
 
هل تتوفر نسخة PDF من هذا الموقع للمشاهدة في وضع عدم الاتصال؟
 لسوء الحظ ، لا يوجد. يمكن للموقع البقاء مجانًا للجميع نظرًا لرعايتنا - هذا النموذج لا 
يعمل ببساطة بتنسيق PDF. يمكنك تحويل الصفحات من هذا الموقع إلى تنسيق PDF (أو أي تنسيق 
آخر) لاستخدامك الخاص ، طالما أنك لا تقوم بتوزيعها.
تمت كتابة هذه البرامج التعليمية في عام 2007. هل لا تزال ذات صلة؟
 نعم بالتاكيد. لا تتغير C ++ كثيرًا ، وقد تم تحديث هذه البرامج التعليمية إلى حد كبير.
 ماذا يجب أن أفعل إذا تعثرت؟
 إذا كنت لا تفهم شيئًا ، فاقرأ التعليقات. ربما واجه القراء الآخرون تحديات مماثلة. ثانيًا ، جرّب إجراء المسح خلال الدرس 
التالي في السلسلة - قد تتم الإجابة عن سؤالك هناك. ثالثًا ، استخدم محرك بحث (نوصي Google) لمعرفة ما إذا كان سؤالك 
(أو رسالة الخطأ) قد تم تناوله في مكان آخر. رابعًا ، اطرح سؤالك على أحد المواقع المصممة لبرمجة الأسئلة والأجوبة ، 
مثل Stack Overflow.
 إذا فشلت كل الأمور الأخرى ، فتجاوز المادة التي لا تفهمها ، وعد إليها عند الحاجة. قد تجد 
أن شيئًا كان من الصعب فهمه أسهل مع المعرفة والسياق الإضافيين اللذين توفرهما المقالات 
الأخرى.حسنًا ، دعنا نتواصل معها!


0.2 - مقدمة في لغات البرمجة
أجهزة الكمبيوتر الحديثة سريعة بشكل لا يصدق ، وتزداد سرعة في كل وقت. ومع هذه السرعة 
تأتي بعض القيود المهمة. أجهزة الكمبيوتر فقط فهم أصلاً لمجموعة محدودة للغاية من 
التعليمات ، ويجب أن يقال بالضبط ما يجب القيام به. برنامج (يُعرف أيضًا باسم تطبيق أو
 برنامج) عبارة عن مجموعة من الإرشادات التي تخبر الكمبيوتر بما يجب القيام به. آلية 
الكمبيوتر الفعلية التي تنفذ التعليمات هي الأجهزة.

لغة الآلة

وحدة المعالجة المركزية للكمبيوتر غير قادرة على التحدث بـ C ++. وتسمى مجموعة التعليمات 
المحدودة للغاية التي يفهمها CPU أصلاً رمز الآلة (أو لغة الآلة أو مجموعة التعليمات). 
إن طريقة تنظيم هذه التعليمات تتجاوز نطاق هذه المقدمة ، ولكن من المثير للاهتمام ملاحظة
 أمرين. أولاً ، تتكون كل تعليمات من عدد من الأرقام الثنائية ، كل منها يمكن أن 
يكون 0 أو 1 فقط. وغالباً ما تسمى هذه الأرقام الثنائية بتات (اختصار للأرقام الثنائية).
 على سبيل المثال ، تحتوي مجموعة إرشادات بنية MIPS دائمًا على إرشادات يبلغ طولها 32 بت.
 تحتوي البُنى الأخرى (مثل x86 ، التي تستخدمها على الأرجح) على إرشادات يمكن أن تكون بطول
 متغير.فيما يلي مثال لتعليم لغة جهاز x86: 10110000 01100001


 ثانيا، يتم ترجمة كل مجموعة من الأرقام الثنائية بواسطة وحدة المعالجة المركزية إلى تعليمات تخبرها بإجراء مهمة محددة جدًا ، 
مثل مقارنة 
هذين الرقمين ، أو وضع هذا الرقم في موقع الذاكرة هذا. عادةً ما تحتوي أنواع مختلفة من وحدات المعالجة المركزية على
 مجموعات تعليمات
 مختلفة ، بحيث لا تعمل الإرشادات التي تعمل على Pentium 4 على جهاز كمبيوتر يعمل بنظام 
Macintosh PowerPC. عندما تم اختراع أجهزة الكمبيوتر لأول مرة ، كان على المبرمجين أن يكتبوا البرامج مباشرة 
في لغة الآلة ، وهو أمر صعب جدا ويستغرق وقتا طويلا.



 لغة التجميع
 نظرًا لأنه من الصعب جدًا برمجة لغة الآلة ، فقد تم اختراع لغة التجميع. في لغة التجميع ، 
يتم تعريف كل تعليمة باسم قصير (بدلاً من مجموعة من البتات) ، ويمكن تحديد المتغيرات
 بالأسماء بدلاً من الأرقام. هذا يجعلها أسهل بكثير في القراءة والكتابة. ومع ذلك ، فإن وحدة
 المعالجة المركزية لا يمكن أن نفهم لغة التجميع مباشرة. بدلاً من ذلك ، يجب أن يترجم
 إلى لغة الجهاز باستخدام مجمّع. تميل لغات التجميع إلى أن تكون سريعة جدًا ، ولا يزال
 التجميع يُستخدم اليوم عندما تكون السرعة حرجة. ومع ذلك ، السبب في لغة التجميع سريع 
جداً لأن لغة التجميع مصممة خصيصًا لوحدة المعالجة المركزية الخاصة. لن تعمل برامج التجميع
 المكتوبة لوحدة المعالجة المركزية (CPU) على وحدة معالجة مركزية أخرى. علاوة على ذلك ، 
لا تزال لغات التجميع تتطلب الكثير من الإرشادات للقيام بمهام بسيطة ، وليست قابلة للقراءة
 من قبل البشر.
 هنا هو نفس التعليمات المذكورة أعلاه في لغة التجميع
لغات عالية المستوى
 لمعالجة هذه المخاوف ، تم تطوير لغات البرمجة عالية المستوى. C و C ++ و Pascal و Java 
و Javascript و Perl ، جميعها لغات عالية المستوى. تتيح اللغات عالية المستوى للمبرمج
 كتابة البرامج دون الحاجة إلى القلق بشأن نوع الكمبيوتر الذي يتم تشغيل البرنامج عليه. 
يجب ترجمة البرامج المكتوبة بلغات عالية المستوى إلى نموذج يمكن أن تفهمه وحدة المعالجة
 المركزية قبل أن يتم تنفيذها. هناك طريقتان أساسيتان يتم القيام بهما: التجميع
 والترجمة.
 المحول البرمجي هو برنامج يقوم بقراءة الكود وينتج برنامجًا تنفيذيًا مستقلًا يمكن أن تفهمه
 وحدة المعالجة المركزية مباشرةً. بمجرد أن يتم تحويل التعليمات البرمجية الخاصة بك إلى
 قابل للتنفيذ ، لن تحتاج إلى برنامج التحويل البرمجي لتشغيل البرنامج. على الرغم 
من أنه قد يبدو بديهياً أن اللغات عالية المستوى ستكون أقل كفاءة بكثير من لغات التجميع ،
 إلا أن المترجمين الحديثين يقومون بعمل ممتاز لتحويل اللغات عالية المستوى إلى ملفات 
تنفيذية سريعة. في بعض الأحيان ، يقومون بعمل أفضل من المبرمجين البشريين في لغة التجميع!
هنا تمثيل مبسط لعملية التجميع:
مترجم فوري هو برنامج يقوم بتنفيذ التعليمات البرمجية الخاصة بك دون الحاجة إلى تجميعها 
في كود الآلة أولاً. يميل المترجمون الشفويون إلى أن يكونوا أكثر مرونة ، لكنهم أقل كفاءة
 عند تشغيل البرامج لأن عملية الترجمة يجب أن تتم في كل مرة يتم فيها تشغيل البرنامج. 
هذا يعني أن هناك حاجة لمترجم في كل مرة يتم فيها تشغيل البرنامج.
في ما يلي تمثيل مبسّط لعملية التفسير:
يمكن ترجمة أي لغة أو تفسيرها ، ومع ذلك ، يتم عادةً تصنيف اللغات مثل C و C ++ و Pascal 
، في حين يتم تفسير لغات "البرمجة النصية" مثل Perl و Javascript. تستخدم بعض اللغات ،
 مثل Java ، مزيجًا من الاثنين.
 
للغات عالية المستوى العديد من الخصائص المرغوبة.
 
أولاً ، تكون اللغات عالية المستوى أسهل للقراءة والكتابة.
 
إليك نفس التعليمات المذكورة أعلاه في C / C ++: a = 97؛
 
ثانياً ، تتطلب تعليمات أقل لأداء نفس المهمة مثل لغات المستوى الأدنى. في C ++ يمكنك 
القيام بشيء مثل a = b * 2 + 5؛ في خط واحد. في لغة التجميع ، قد يستغرق ذلك 5 أو 6
 تعليمات مختلفة.
 
ثالثًا ، لا يتعين عليك الاهتمام بالتفاصيل مثل تحميل المتغيرات في سجلات وحدة المعالجة 
المركزية. المترجم أو مترجم يعتني كل هذه التفاصيل بالنسبة لك.
 
ورابعا ، يتم نقلهم إلى معماريات مختلفة ، باستثناء واحد رئيسي ، سنناقشه.
الاستثناء من إمكانية النقل هو أن العديد من الأنظمة الأساسية ، مثل Microsoft Windows ،
 تحتوي على وظائف خاصة بالنظام الأساسي يمكنك استخدامها في التعليمات البرمجية. هذه يمكن
 أن تجعل الأمر أسهل بكثير لكتابة برنامج لمنصة معينة ، ولكن على حساب قابلية النقل. في 
هذه البرامج التعليمية ، سنوضح بوضوح متى نعرض عليك أي شيء محدد في النظام الأساسي.
 


شارك الموضوع

مواضيع ذات صلة