تخطَّ إلى المحتوى

مقدمة في C++‎: لغة الأداء العالي

الدرس 1 من 11 · C++

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

C++‎ (تُنطق «سي بلس بلس») لغة برمجة طورها العالم الدنماركي بيارنه ستروستروب (Bjarne Stroustrup) في الثمانينيات. بدأت باسم «C with Classes» أي «C مع الكلاسات»، لأن فكرتها كانت إضافة مزايا جديدة إلى لغة C، وأهمها البرمجة الكائنية.

حتى الاسم فيه نكتة برمجية: العلامة ++ في لغة C تعني «زِد واحداً». فـ C++‎ تعني «C بعد خطوة للأمام».

C++‎ مبنية على C، وأغلب كود C يعمل داخل C++‎. لكن C++‎ أضافت أدوات كثيرة تجعل بناء البرامج الكبيرة أسهل وأكثر تنظيماً.

تخيّل أن C ورشة نجارة فيها أدوات يدوية قوية ودقيقة. و C++‎ هي نفس الورشة بعد أن أُضيفت إليها آلات حديثة: ما زالت الأدوات اليدوية موجودة لمن يحتاج الدقة، لكنك تستطيع الآن بناء أثاث كبير ومعقد بسرعة أكبر.

  • الألعاب: محركات ألعاب شهيرة مثل Unreal Engine مكتوبة بـ C++‎، وكثير من الألعاب الكبرى تعتمد عليها.
  • المتصفحات: أجزاء أساسية من متصفحات مثل Chrome و Firefox.
  • البرامج الاحترافية: برامج التصميم وتحرير الصور والفيديو.
  • الأنظمة والأجهزة: قواعد البيانات، وأنظمة التشغيل، والروبوتات، والسيارات الذكية.
  • المسابقات البرمجية: اللغة المفضلة لكثير من المتسابقين في مسابقات حل المشكلات بسبب سرعتها.

السبب المشترك في كل هذه المجالات: السرعة والتحكم الكامل. عندما يجب أن يعمل البرنامج بأقصى سرعة ممكنة، يختار المطورون C++‎.

البرمجة الكائنية باختصار

Section titled “البرمجة الكائنية باختصار”

البرمجة الكائنية (Object-Oriented Programming) طريقة لتنظيم البرنامج حول «كائنات» تجمع البيانات والأفعال معاً. مثلاً في لعبة: كائن «لاعب» له بيانات (الاسم، والنقاط، والصحة) وأفعال (يقفز، ويجري، ويهاجم).

ستتعلم هذا بالتفصيل في درس الكلاسات. المهم الآن أن تعرف أنها من أكبر إضافات C++‎ على C.

hello.cpp
#include <iostream>
int main() {
std::cout << "Hello, C++!" << std::endl;
return 0;
}
الناتج
Hello, C++!

لنفهم كل سطر:

  • #include <iostream>: نضيف مكتبة الإدخال والإخراج في C++‎ (Input/Output Stream).
  • int main(): الدالة الرئيسية التي يبدأ منها البرنامج، كما في C تماماً.
  • std::cout: «مخرج الطرفية». تخيّله مثل أنبوب يصب ما تعطيه في الشاشة.
  • <<: علامة «أرسل إلى». النص يُرسل عبر الأنبوب إلى الشاشة.
  • std::endl: نهاية السطر (end line)، وتنقلك إلى سطر جديد.
  • return 0;: انتهى البرنامج بنجاح.

وماذا تعني std::؟ هي اختصار لـ standard، أي أن cout موجودة في «المكتبة القياسية» للغة. ستراها كثيراً.

vars.cpp
#include <iostream>
#include <string>
int main() {
std::string name = "Sara";
int age = 14;
std::cout << "Name: " << name << ", Age: " << age << std::endl;
return 0;
}
الناتج
Name: Sara, Age: 14

لاحظ كيف تربط عدة قيم بـ << المتكررة، فيصب كل شيء في الأنبوب بالترتيب. ولاحظ النوع std::string للنصوص، وهو من إضافات C++‎ التي تجعل التعامل مع النصوص أسهل بكثير من C.

مثل C، تحتاج مترجماً يحوّل الكود إلى ملف تنفيذي:

  • أونلاين: ابحث عن «C++‎ Online Compiler» وجرّب في المتصفح مباشرة.
  • على جهازك: ثبّت مترجم g++ (يأتي مع GCC)، ثم:
نافذة طرفيّة
g++ hello.cpp -o hello
./hello

اكتب برنامجاً بـ C++‎ يطبع بيانات لاعب في لعبة: اسمه، ومستواه، ونقاطه، في سطر واحد باستخدام <<. ثم اطبع في سطر ثانٍ النقاط بعد مضاعفتها:

الناتج
Player: Ali | Level: 3 | Score: 250
Double score: 500
  • نسيان std::: كتابة cout وحدها تسبب خطأ 'cout' was not declared. اكتب std::cout.
  • عكس اتجاه العلامة: std::cout >> "Hello" خطأ. للإخراج نستخدم <<.
  • نسيان الفاصلة المنقوطة في نهاية الأمر.
  • حفظ الملف بامتداد .c: ملفات C++‎ تُحفظ بامتداد .cpp.

سؤال

ما أهم ما أضافته C++‎ إلى لغة C؟

سؤال

أي سطر يطبع كلمة Hi في C++‎ بشكل صحيح؟

  • C++‎ لغة مبنية على C، وأضافت البرمجة الكائنية وأدوات حديثة كثيرة.
  • تُستخدم حيث تهم السرعة والتحكم: الألعاب والمتصفحات والبرامج الاحترافية.
  • #include <iostream> ثم std::cout << ... << std::endl; للطباعة.
  • std::string للنصوص، والمتغيرات تحتاج نوعاً.
  • تحتاج مترجماً مثل g++ لتحويل الكود إلى ملف تنفيذي.