تعلم لغة السي بلاس بلاس ++c

تعلم لغة C++ ؟

إذا كنت مبتدئاً في البرمجة, يجب أن تدرس الخوارزميات قبل أن تبدأ مباشرةً بدراسة لغة C++, لأنك بحاجة لمعرفة مبادئ البرمجة قبل أن تتعلم أي لغة برمجة.
لا تقلق إذا لم يسبق لك أن تعلمتها لأننا شرحنا الخوارزميات من الصفر.يمكنك تعلم ذلك هنا .

If you are a beginner in programming, you should study algorithms before you start directly studying C ++, because you need to know programming principles before you learn any programming language. Don't worry if you've never learned it because we've explained algorithms from scratch. You can learn that here

نصيحة هامة 

لا تحاول تعلم لغة C++ ما لم تتعلم الخوارزميات قبلها لأنك قد تواجه صعوبة كبيرة في فهم الكود أحياناً حتى لو كان الكود مشروح بتفصيل و سهل الفهم.
و قم بدراسة جميع الدروس بنفس الترتيب الموضوعين فيه لأننا شرحنا جميع الأفكار بشكل مترابط.

Do not try to learn C ++ unless you learn the algorithms before it, because you may have great difficulty understanding the code sometimes, even if the code is explained in detail and easy to understand. Study all the lessons in the same order that they are placed in them because we have explained all the ideas coherently.

ما هي لغة C++ ؟

C++ تكتب سي بلاس بلاس باللغة العربية و هي لغة برمجة تجميعية ( Compiled ) و كائنية ( Object Oriented ) تضم العديد من مميزات لغات البرمجة عالية المستوى ( High Level ) و منخفضة المستوى ( Low Level ) و هذا يعني أنك قادر على فعل ما تشاء بها.
هذه اللغة الرائعة مصممة لتعمل على جميع أنظمة التشغيل المعروفة مثل ويندوز, ماك, لينكس, إندرويد إلخ.. و هي تعتبر من أقوى و أشهر لغات البرمجة على الإطلاق و يطلق عليها "أم اللغات" نظراً لأنها لغة قوية و موجودة منذ زمن طويل .

تم بناء هذه اللغة بالأساس كتطوير للغة C من قبل Bjarne Stroustrup أثناء عمله في مختبرات Bell لتكون أطروحته في رسالة الدكتورا عام 1979.
من ذلك الحين و حتى وقتنا الحالي تم تطوير هذه اللغة بشكل مستمر و اخر إصدار رسمي لها هو C++ 17.

لا يوجد شعار رسمي للغة C++ و لكن في العادة و عند البحث عن دورات لتعلمها أونلاين فإنك تجدهم يستخدموا شعار يشبه التالي.


ماذا يمكنني ان أطور بلغة C++ ؟

لغة C++ تعتبر لغة عامة الهدف ( General Purpose ) مما يعني انها قادرة على بناء أي برنامج.
القوة الحقيقة لها تتجلى في المشاريع والبرامج الكبيرة مثل:

  • بناء و تطوير انظمة التشغيل ومن اشهر انظمة التشغيل المبنية بهذه اللغة Windows, Linux, MacOS, Android.

  • بناء و تطوير البرامج الكبيرة مثل برامج أدوبي ( مثل Photoshop و Premier ) و المتصفح Firefox.

  • بناء و تطوير الالعاب و من أشهر الألعاب التي طورت بهذه اللغة Counter Strike, MacOSDoom, Warcraft.

مميزات لغة C++ بالنسبة للمطورين

  1. لها شعبية هائلة و هناك الكثير من المراجع لمن يريد تعلمها.

  2. القدرة على التحكم باستخدام الذاكرة بشكل كبير.

  3. خفيفة وسريعة وتستهلك موارد نظام أقل مقارنة بلغات مثل جافا وبايثون.

  4. بالامكان تحويل كود مكتوب بلغة C لكود بلغة C++ بسهولة.

مميزات لغة C++ عن باقي لغات البرمجة

  1. مفتوحة المصدر
    لن تدفع أي مبلغ لتعمل على لغة C++, فهي مصدر مفتوح و مجانية و ستبقى مجانية مدى الحياة.


  2. خفيفة
    تستطيع البرمجة بها حتى و لو كان حاسوبك ضعيفاً أو قديماً.


  3. البساطة
    تعلمها سهل جداً بعد أن تفهم برمجة الكائنات.


  4. سرعة الترجمة
    تتم ترجمة لغة C++ إلى أوامر يفهمها الجهاز بشكل سريع جداً.


  5. لغة كائنية ( Object Oriented )
    مع أن لغة C++ صممت لتكون قريبة من عتاد الجهاز و قريبة للغات منخفضة المستوى إلا أنها تتيح لمستخدمها بناء الكلاسات والتعامل معها بطرق منهجيات البرمجة الكائنية ( OOP ) مثل الوراثة و تعدد الأشكال و غيرها من المبادئ التي ستتعلمها لاحقاً في الدورة.


  6. متعددة النماذج
    تسمح لغة C++ لمستخدمها باختيار الطريقة المناسبة له لكتابة الكود البرمجي من بين عدة نماذج مختلفة مثل النموذج الهيكلي ( Structural ) الشبيهة بلغة C والنموذج الكائني ( Object Oriented ) الشبيه بلغة جافا.


  7. الدعم الكبير
    لغة C++ من اللغات القديمة نسبيا والمنتشرة بشكل كبير مما جعل منها لغة ذات شعبية كبيرة و مصادر تعلم مختلفة و متعددة و دعم كبير من قبل مجتمع المطورين.

لمن تم إعداد هذا الدورة تعلم السي بلاس بلاس ؟

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

This resource is designed for all people who want to learn. So, whether you are an amateur, student or programmer, this reference will help you understand the basics of C ++ and reach a very advanced level.


 تحميل و تنصيب أدوات C++

في هذا  الدرس  سنرشدك لتحميل الأدوات التي سنستخدمها لبناء و تشغيل كود C++ على حاسوبك.

طريقة عمل برنامج مكتوب بلغة C++

الكود الذي تكتبه على الكمبيوتر لا يعمل بشكل مباشر بل يمر بعدة مراحل تباعاً حتى يعمل تماماً كما في الصورة التالية.

إذاً يمر الكود المكتوب بلغة C++ بثلاث مراحل حتى يصبح في النهاية برنامج يمكن تشغيله على الحاسوب.
في البدابة يقوم الـ preprocessor بتشذيب وتجهيز الملفات النصية لتدخل بعدها في عملية التجميع ( Compiling ) حيث يتم تحويل الملفات النصية الى ملفات ( نوعها Binary ) يفهمها الحاسوب مع المحافظة على بعض صفات الكود مثل أسماء المتغيرات والدوال ومن ثم يقوم الموصل ( Linker ) بوصل كل أجزاء البرنامج المختلفة ودمجها مع بعضها لتصبح ملف تنفيذي واحد ( نوعه EXE ) يمكن تشغيله في أي وقت مثل أي تطبيق عادي .

So the code written in C ++ language passes through three stages until it finally becomes a program that can be run on the computer. In the beginning, the preprocessor trims and prepares the text files to then enter into the compiling process, where the text files are converted into (binary type) files that the computer understands while preserving some code characteristics such as names of variables and functions, and then the linker connects all parts The different program and merging them together to become a single executable file (its type is EXE) that can be run at any time like any normal application.

معلومة تقنية هامه

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

Important technical information The preprocessor, the compiler and the linker are just small programs that work together in a coherent way so that all the code that we have written in the project becomes a regular program that can be run with one click.

تجهيز بيئة العمل لتطوير تطبيقات بلغة C++

يوجد الكثير من بيئات العمل التي تمكنك من العمل على تطوير البرامج بلغة C++ مهما كان نظام التشغيل الذي تستخدمه مثل:
Eclipse - CodeBlocks - CLion - Dev C++ الخ..

في هذه الدورة سنعلمك كيف تقوم بتحميل, تنصيب و استخدام برنامج CodeBlocks المجاني من أجل كتابة و تجربة الكود حاسوبك الشخصي.
كما سنعلمك أيضاً كيف تستخدم خدمة أونلاين في حال أردت كتابة كود C++ بدون تنصيب أي برنامج على حاسوبك.


ملاحظة هامه 

في حال كنت تستخدم نظام ويندوز و تستخدم برنامج Visual Studio فيمكنك استخدامه نفسه لكتابة الكود بدل برنامج CodeBlocks.
لمعرفة كيف تكتب كود C++ باستخدام برنامج Visual Studio إبحث في يوتيوب عن: visual studio setup for c++ و شاهد أي فيديو تريد.

في حال كنت تستخدم نظام ماك و تستخدم برنامج XCode فيمكنك استخدامه نفسه لكتابة الكود بدل برنامج CodeBlocks.
لمعرفة كيف تكتب كود C++ باستخدام برنامج XCode إبحث في يوتيوب عن: xcode setup for c++ و شاهد أي فيديو تريد .

If you are using Windows and using Visual Studio, you can use it itself to write code instead of CodeBlocks. To find out how to write C ++ code using Visual Studio, search YouTube for: visual studio setup for c ++ and watch any video you want. If you are on a Mac and use XCode, you can use it itself to write code instead of CodeBlocks. To find out how to write C ++ code using XCode, search YouTube for: xcode setup for c ++ and watch any video you want.



الشكل العام لأي برنامج مكتوب بلغة C++

الملف الأساسي في المشروع يجب أن يكون شكله كالتالي.

#include <iostream>

int main()
{
    // هنا يجب أن تضع الأوامر التي ستتنفذ عند تشغيل البرنامج
    return 0;
}
	

  • الكود الذي يتنفذ مباشرةً عند تشغيل البرنامج هو الكود الذي نكتبه بداخل حدود الدالة main() و قبل الأمر return 0.

  • سنتطرق إلى مزيد من التفاصيل في الدرس التالي.

فائدة السطر using namespace std;

عند إنشاء أي مشروع جديد تلاحظ في الملف main.cpp أنه يوجد الأمر using namespace std; في السطر الثالث كالتالي.

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world!" << endl;     // نستخدمه لطباعة أي نص نريد للمستخدم لكن لا تشغل بالك به الآن cout << الأمر
    return 0;
}
	


لماذا أجد الأمر using namespace std; موضوع ضمن كود المشروع إذا لم يكن وجوده إجبارياً؟

في البداية هذا السطر معناه أنك تريد تضمين الأشياء الموجودة بداخل المكتبة std بشكل مباشر في المشروع.
في حال أردت إزالة هذا السطر ستكون مجبر على تحديد إسم المكتبة التي تستخدم منها الأمر cout و cin و غيرها من الأوامر التي سنتعلمها في دروس لاحقة.

الآن سيكون شكل الكود كالتالي في حال أردت إزالة الأمر using namespace std; منه.

#include <iostream>

int main()
{
    std::cout << "Hello world!" << endl;   // مكان وجود هذا الأمر C++ حتى نحدد لمترجم لغة cout قبل كلمة std:: لاحظ أننا أضفنا
    return 0;
}
	


في هذه الدورة سنقوم بتضمين المكتبة std في أغلب الأمثلة حتى يكون حجم الكود أصغر و أسهل عليك في القراءة, أي سنبقي الأمر using namespace std; في الكود.


ملاحظة 

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

___In this course we will include the std library in most examples so that the code size is smaller and easier for you to read, i.e. we will keep the command using namespace std; In the code. Note From now until the end of the series of C ++ lessons, your lessons will be small explanations for each new concept you learn, and in this way you will understand all of its principles. _____________


خطوات تحميل برنامج CodeBlocks

  1. إبحث في جوجل عن codeblocks.

  2. أنقر على رابط أول موقع يظهر لك في نتائج البحث و سيكون الموقع هو موقع codeblocks نفسه كما يظهر في الرابط.

  1. بعد أن يفتح موقع codeblocks الرسمي, قم النقر على Downloads حتى تذهب للصفحة التي يمكن فيها إختيار نسخة البرنامح الذي ستستخدمه.

  1. في هذه الصفحة الجديدة ستجد عدة خيارات لتحميل البرنامج.
    قم بالنقر على خيار Download the binary release لأنها أسهل نسخة من ناحية التنصيب على الحاسوب.

  1. في هذه الصفحة ستجد عدة خيارات للتحميل. إنزل في الصفحة حتى تجد قسم التحميل بنظام التشغيل الذي تستخدمه.
    ملاحظة: نحن نسنخدم نظام ويندوز لهذا سنتوجه لخيارات التحميل الخاصة بنظام ويندوز.

  2. بعدها قم بتحميل برنامج mingw-step.exe من خلال النقر على رابط التحميل الذي يظهر بجانبه من موقع FossHUB أو من موقع Sourceforge.net.
    بعد أن تنقر على رابط التحميل من موقع FossHUB ستفتح صفحة جديدة و يبدأ تحميل البرنامج بشكل تلقائي.

إلى هنا, تكون قد قمت بتحميل برنامج CodeBlocks بنجاح و خطوتك التالية هي تنصيبه.

شرح خطوات تنصيب برنامج CodeBlocks

  1. بعد تحميل CodeBlocks قم بفتحه حتى تبدأ بتنصيبه.
    أنقر بزر الفأرة الأيمن على الملف, ثم إختر Run as administrator.

  1. إضغط على Next.

  1. ضع علامة صح على I Agree.

  1. قم بإبقاء كل شيء مختاراً و إضغط على Next.

  1. إضغط على Install.

  1. بعد أن ينتهي تنصيب البرنامج بنجاح سيسألك إن كنت تريد تشغيله الآن.
    إضغط على Yes لأنه يوجد خطوات بسيطة يجب أن تفعلها أول مرة تقوم فيها بتشغيل برنامج CodeBlocks و سنفعلها الآن.

  1. أنقر على GNU GCC Compiler, ثم أنقر على ثم Set as default, ثم أنقر على OK.

  1. الآن ستلاحظ أن واجهة برنامج CodeBlocks ستفتح و سيظهر لك رسالة فيها أربع خيارات.
    إختر Yes, associate Code::Blocks with C/C++ file types ثم إضغط على OK.

إلى هنا, تكون قد قمت بتنصيب برنامج CodeBlocks بنجاح.

شرح خطوات تشغيل برنامج CodeBlocks

لتشيغل البرنامج ستجد أيقونته على سطج المكتب, و إذا لم تجد أيقونته فببساطة إبحث عنه, أي أنقر على زر البحث ثم أكتب codeblocks كالتالي.

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


الآن, قم بالعودة للدرس لتتعلم كيف تنشئ مشروع جديد (أي برنامج) بواسطة CodeBlocks و تقوم بتشغيله.

شرح  خطوات إنشاء مشروع جديد في برنامج CodeBlocks

خطوات إنشاء مشروع جديد

  1. أنقر على File, ثم New, ثم Project كالتالي.

  1. أنقر على Console Application ثم على الزر Go كالتالي.

  1. قم بوضع علامة صح على الخيار Skip this page next time ثم أنقر على Next حتى لا تظهر لك هذه الصفحة مرة أخرى كالتالي.

  1. أنقر على ++C و من ثم أنقر على Next كالتالي.


  1. قم بتحديد الإسم الذي تريد وضعه للمشروع و مسار المجلد الذي تريد أن يتم فيه حفظه على حاسوبك, ثم أنقر على Next كالتالي.


  1. لا تعدل أي شيء في هذه الصفحة, أنقر Next كالتالي فقط.


  1. بعد أن يتم إنشاء المشروع بنجاح سيظهر بداخل قائمة المشاريع كالتالي.


  1. لرؤية الملف الأساسي في المشروع و الذي يمكنك كتابة الكود بداخله, إفتح المجلد Sources ثم أنقر على الملف main.cpp كالتالي.


  1. لتشغيل هذا البرنامج و الذي سيعرض لك فقط جملة "Hello world!" أنقر على الزر Build and run كالتالي.


  1. بعد تشغيل البرنامج سيفتح موجه الأمر (و الذي يسمى CMD أو Console) و يظهر بداخله نتيجة التشغيل كالتالي.

خطوات تشغيل المشروع بشكل صحيح

قبل تشغيل أي مشروع يجب أن تقوم بتحويل كود المشروع لملف تنفيذي نوعه EXE و هنا في حال كان الكود فيه أي مشكلة ستظهر لك.
عندما تقوم بتحويل كل كود المشروع لملف تنفيذي EXE فأنت بذلك تفعل ما يسمى Build للمشروع.
ملاحظة: هذا الأمر تفعله بنقرة واحدة فقط و ستتعلم كيف تفعل ذلك بكل سهولة بعد قليل.

في برنامج CodeBlocks يمكنك أن تحول كود المشروع لملف تنفيذ و تشغله بنقرة واحدة فقط إن أردت و هذا الأمر يسمى Build and Run.


إنتبه جيداً

إذا قمت بتعديل كود المشروع و حفظته فقط بدون أن تفعل Build - أي بدون أن تقوم بتحويل كود المشروع لملف تنفيذي - ثم قمت بتشغيله فسيظهر لك عند التشغيل نتيجة آخر مرة فعلت فيها Build و ليس نتيجة الكود الذي حفظته آخر مرة.

لذلك ننصحك دائماً بان تفعل Build في حال أردت فقط التشييك على كود المشروع.
و ننصحك بأن تفعل Build and Run دفعة واحدة في حال أردت التشييك على كود المشروع و تشغيله.

_________

 خطوات تحديد إصدار المترجم في برنامج CodeBlocks

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

كمثال بسيط, إذا أردت استخدام الكلمة auto في الكود, يجب أن تحدد لبرنامج CodeBlocks أنك تتعامل مع إصدار المترجم [-std=c++11] لأن الإصدارات الأقدم من هذا الإصدار لم تكن الكلمة auto قد أضيفت فيها بعد و هذا يعني أنها تعتبر شيء غير معروف بالنسبة للإصدارات القديمة و يؤدي لظهور مشاكل في الكود عند تشغيله.


الآن لتحديد رقم الإصدار الذي تتعامل معه, يمكنك اتباع هذه الخطوات البسيطة:


 أسلوب كتابة الكود في لغة C++

مبادئ كتابة الكود في C++

في البداية عليك معرفة أن كل ما ستتعلمه في هذا الدرس عبارة عن شرح نظري لأساليب كتابة الكود.
إذاَ في هذا الدرس ستتعلم كيف تكتب كود C++ بشكل صحيح يفهمه الكمبيوتر و يفهمه أي شخص يحاول قراءة الكود الذي ستقوم أنت بكتابته مستقبلاً عند بناء تطبيقاتك الخاصة.


Case Sensitivity  في السي بلاس بلاس

لغة C++ تطبق مفهوم الـ Case Sensitivity, و هذا يعني أنها تميز بين الأحرف الكبيرة و الأحرف الصغيرة.

مثال: note و Note ليسوا شيئاً واحداً.



Strictly Typed  في السي بلاس بلاس

لغة C++ تطبق مفهوم الـ Strictly Typed, و هذا يعني أنه يجب تحديد نوع المتغير مباشرةً عند تعريفه (مثل عدد صحيح , حرف , عدد عشري , الخ..) و لا يمكن تغيير نوع البيانات المخزنة فيه لاحقاً كما هو الحال في لغة جافا C و C#, و على خلاف بعض اللغات الأخرى مثل بايثون و جافا سكريبت.



إسم الكلاس  في السي بلاس بلاس

يفضل أن يبدأ إسم الكلاس بحرف كبير و في حال كان إسم الكلاس يتألف من أكثر من كلمة, إجعل أول حرف من كل كلمة كبيراً.

أمثلة

في حال كان إسم الكلاس يتألف من كلمة واحدة.

                    class Car{ }
                  

في حال كان إسم الكلاس يتألف من أكثر من كلمة.

                    class CppFirstClass{ }
                  


إسم المتغير  في السي بلاس بلاس

إستخدم الأحرف الصغيرة عند اختيار أسماء للمتغيرات و في حال كان إسم المتغير يتألف من أكثر من كلمة إبدأ كل كلمة بحرف كبير ابتداءً من الكلمة الثانية.

أمثلة

في حال كان إسم المتغير يتألف من كلمة واحدة.

                    int color;
                  

في حال كان إسم المتغير يتألف من أكثر من كلمة.

                    int firstCarColor;
                  


إسم الدالة  في السي بلاس بلاس

إستخدم الأحرف الصغيرة عند اختيار أسماء للدوال و في حال كان إسم الدالة يتألف من أكثر من كلمة إبدأ كل كلمة بحرف كبير ابتداءً من الكلمة الثانية.

أمثلة

في حال كان إسم الدالة يتألف من كلمة واحدة.

                    void color();
                  

في حال كان إسم الدالة يتألف من أكثر من كلمة.

                    void changeCarColor();
                  


التعليقات في السي بلاس بلاس

نستخدم التعليقات لنضع ملاحظات حول الكود الذي كتبناه فقط, لكي لا ننسى كيف برمجنا الكود في حال أردنا مراجعته أو التعديل عليه بعد وقت طويل.
التعليقات لا تؤثر إطلاقاً على الكود المكتوب, و في لغة C++ يوجد أسلوبين لوضع التعليقات:

  • تعليق على سطر واحد.

  • تعليق على عدة أسطر.


أمثلة

في حال كان التعليق يتألف من سطر واحد, نضع الرمز // قبل كتابة التعليق.

                    // this is a one line comment    تعليق سطر واحد
                  

في حال كان التعليق يتألف من عدة أسطر, نبدأ التعليق بالرمز /* و ننهيه بالرمز */.

                    /*
                    This is multlines comment 
                    هذا تعليق
                    يتألف من
                    عدة سطور
                    */
                  

تذكر: أنت لست مجبراً على وضع تعليقات في برامجك. و لكننا ننصحك بوضع تعليقات دائماً حتى تساعدك في فهم الكود الذي كتبته.

الأحرف المستخدمة في وضع الأسماء في C++

أي إسم نضعه لمتغير, دالة, كلاس, كائن إلخ.. يسمى identifier في البرمجة.
في C++ كل عنصر نريد خلقه علينا إعطاءه إسم خاص, أي علينا تحديد الـ identifier له.
إذاً يتم التمييز بين العناصر في C++ من خلال أسمائهم, أي من خلال الـ Identifiers.


قواعد إلزامية عند إعطاء الأسماء

  1. جميع الـ Identifiers يجب أن يبدأوا بحرف كبير بين A-Z أو حرف صغير بين a-z أو الشحطة _.

  2. يمنع بدء الـ Identifiers برقم.

  3. يمنع استخدام الـ Literals أي القيم true, false.

  4. يمنع إستخدام أي كلمة من الكلمات المحجوزة ( Keywords ).

  5. لا تنسى أن C++ تطبق مبدأ الـ Case Sensitive.


ركز على أول حرف فقط

أمثلة للأسماء التي يسمح باستخدامها: Harmash , name , _number

أمثلة للأسماء التي يمنع استخدامها: 1st , -cash , @user

ماهي الكلمات المحجوزة في C++

جميع الكلمات التالية محجوزة للغة C++, أي لا يمكن إستخدامها كـ Identifiers.

alignas
alignof and
and_eq
auto
bitand
bitor
bool
break
case
catch
char
char16_t
char32_t
class
compl
const
constexpr
const_cast
continue
decltype
default
delete
do
double
dynamic_cast
else
enum
explicit
export
extern
false
float
for
friend
goto
if
inline
int
long
mutable
namespace
new
noexcept
not
not_eq
nullptr
operator
or
or_eq
private
protected
Public
register
reinterpret_cast
requires
return
short
signed
sizeof
static
static_assert
static_cast
struct
switch
template
this
thread_local
throw
true
try
typedef
typeid
typename
union
unsigned
using
virtual
void
volatile
wchar_t
while
xor
xor_eq
_____________

 أمر الطباعة cout >>

شرح أمر الطباعة cout

بشكل عام, نستخدم الأمر cout لطباعة أي شيء نريد في الكونسول.
عند إستخدام الأمر cout يجب أن تضع العامل << قبل أي شيء تريد تمريره له حتى يتم طباعته.


مثال

main.cpp
                    #include <iostream>

                    int main()
                    {
                    std::cout << "alawiri.com";
                    return 0;
                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    alawiri.com
                  

شرح الكود

  • الأمر #include <iostream> الموجود في السطر الأول يقوم بتضمين الحزمة iostream التي تحتوي على الأوامر الأساسية التي نحتاجها في التطبيقات التي تعتبر Console Application و التي سنستخدمها في أغلب البرامج مثل أمر الطباعة cout و غيره من الأوامر و الدوال الجاهزة التي ستمر معك لاحقاً في الدورة.

  • سبب وضع std:: قبل cout هو أن الأمر cout موجود فيه.

  • الدالة main() التي قمنا بتعريفها ابتداءاً من السطر الثالث يجب أن يكون نوعها int لأنها تمثل نقطة البداية في البرنامج.

  • وضع return 0; في السطر السادس و كآخر أمر في الدالة main() هو أمر متعارف عليه, و فكرته إرسال الرقم 0 لنظام التشغيل عند انتهاء أو إغلاق البرنامج بشكل طبيعي. هكذا سيتمكن نظام التشغيل من التفريق بين الإنهاء الطبيعي للبرنامج والإنهاء المفاجئ ( Crash ) الذي يحدث نتيجة خطأ ما.



مبادئ الطباعة الأساسية في C++

عليك مراعاة المبادئ التالية عند استخدام الأمر cout.

  • لعرض رقم, ضعه كما هو.

  • لعرض قيمة متغير, ضعه كما هو.

  • لعرض حرف يجب وضعه بين ' '.

  • لعرض كلمة أو نص, يجب وضعه بين " ".

طباعة عدة أشياء دفعة واحدة بواسطة الأمر cout في C++

لدمج عدة أشياء مختلفة و عرضها باستخدام الأمر cout نضع الرمز << بين كل شيئين نريد طباعتهما.


في المثال التالي, قمنا بإنشاء برنامج يحتوي على متغيرين name و year.
بعدها قمنا بعرضهما كجملة واحدة.

مثال

main.cpp
                    #include <iostream>

                    int main()
                    {
                    char *name = "Ali";
                    int year   = 1996;

                    std::cout << "Hello my name is " << name << ", I born in " << year;
                    return 0;
                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    Hello my name is Ali, I born in 1996
                  

عرض المحتوى على سطر جديد C++

عند عرض المحتوى بواسطة الأمر cout يمكنك تحديد نهاية السطر من خلال وضع العامل endl و عندها سيظهر أي شيء تطبعه بعده على سطر جديد.
معلومة: endl إختصار لجملة End Line.


مثال

main.cpp
                    #include <iostream>

                    int main()
                    {
                    std::cout << "alawiri.com" << std::endl << "C++ course";
                    return 0;
                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    alawiri.com
                    C++ course
                  

سبب وضع std:: قبل العامل endl هو أن العامل endl موجود فيه.

أهمية الكلمة using في C++

في البداية, سنشرح الكلملة using بتفصيل ممل في درس لاحق نظراً لأهميتها في المشاريع.
الآن, إذا أردت أن تكتب الأمرين cout و endl بشكل مباشر بدون الحاجة لأن تكتب قبلهما std::, قم بتضيمن النطاق std مرة واحدة في الملف و عندها تصبح قادر على استخدام أي شيء موجود فيه بشكل مباشر.

لتضمين النطاق std في الملف main.cpp نكتب using namespace std; فوق الدالة main().


الآن, سنعيد نفس المثال السابق مع تضمين النطاق std بشكل مباشر.

مثال

main.cpp
                    #include <iostream>
                    using namespace std;   // std هنا قمنا بتضيمن النطاق

                    int main()
                    {
                    cout << "alawiri.com" << endl << "C++ course";
                    return 0;
                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    alawiri.com
                    C++ course
                  

النزول على سطر جديد بواسطة الرمز \n في C++

إذا أردت النزول على سطر جديد بدون الحاجة لكتابة << endl فيمكنك تمرير \n كنص.
ملاحظة: أغلب المبرمجين يفضلون تمرير \n بدل كتابة << endl لأنها مختصرة أكثر.

معلومة: \n إختصار لجملة New Line.


في المثال التالي قمنا بتمرير \n كنص للأمر cout من أجل النزول على سطر جديد.

مثال

main.cpp
                    #include <iostream>
                    using namespace std;

                    int main() {
                    cout << "alawiri.com\nC++ course";
                    return 0;
                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    alawiri.com
                    C++ course
                  


هنا قمنا بإعادة المثال السابق تماماً مع كتابة أمرين cout هذه المرة.
ملاحظة: هذا الأسلوب أسهل من ناحية القراءة و التعديل و لهذا ننصح باعتماده بدلاً من الأسلوب السابق.

مثال

main.cpp
                    #include <iostream>
                    using namespace std;

                    int main() {
                    cout << "alawiri.com\n";
cout << "C++ course"; return 0; }

سنحصل على النتيجة التالية عند التشغيل.

                    alawiri.com
                    C++ course
                  

وضع عدة مسافات فارغة بواسطة الرمز \t في C++

إذا أردت وضع عدة مسافات فارغة دفعة واحدة و بشكل مرتب فالأفضل أن تستخدم الرمز \t بدل وضع المسافات بنفسك.
من الأشياء التي قد تجعلك تستخدم \t هي أنه عند طباعة عدة أسطر تجده يحاول عرضهم لك بشكل متناسق لإظهار المحتوى بشكل أسهل للقراءة.

معلومة: \t إختصار لجملة Tab Space.


في المثال التالي قمنا بوضع الرمز \t بين الكلمات من أجل وضع مسافة تلقائية بينهم بشكل مرتب.

مثال

main.cpp
                    #include <iostream>
                    using namespace std;

                    int main()
                    {
                    cout << "Name:\tAli Rabeei\n";
                    cout << "Job:\tProgrammer";
                    return 0;
                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    Name:   Ali Rabeei
                    Job:    Programmer
                  

إصدار صوت تنبيه بواسطة الرمز \a في C++

إذا أردت إصدار صوت تنبيه لجعل المستخدم ينتبه للكونسول, يمكنك ذلك بكل سهولة من خلال تمرير الرمز \a كنص للأمر cout.

معلومة: \a إختصار لكلمة Alert.


في المثال التالي قمنا باستخدام الرمز \a لتشغيل صوت تنبيه في جهاز المستخدم.

مثال

main.cpp
                    #include <iostream>
                    using namespace std;

                    int main()
                    {
                    cout << "Yes, you hear the alert :)\a";
                    return 0;
                    }
                  

لا تنسى رفع صوت الحاسوب حتى تسمع صوت التنبيه عند التشغيل و سيظهر لك النص التالي أيضاً.

                    Yes, you hear the alert :)
                  

المسافات الفارغة و ترتيب الكود في C++

لغة C++ لا تتأثر بالمساحات البيضاء ( White Spaces ) مثل المسافات والأسطر الفارغة حتى انه يمكن كتابة بعض البرامج بالكامل في سطر واحد و لكن لا ننصح ابداً بذلك و يفضل ترك مسافات و أسطر فارغة حتى تكون قادر على مراجعة و استيعاب الكود بسهولة تامة عند الرجوع إليه.


في المثال التالي قمنا بكتابة نفس المثال السابق على سطر واحد.
تنبيه: رغم أن الأسلوب التالي لا يوجد فيه أي مشكلة برمجياً, إلاّ أننا ننصحك بعدم إعتماد هذا الأسلوب إطلاقاً عند كتابة الكود.

مثال

main.cpp
                    #include <iostream>
                    using namespace std; int main() {cout << "alawiri.com"<<endl<<"C++ course";return 0;}

سنحصل على النتيجة التالية عند التشغيل.

                    alawiri.com
C++ course
____________