مقدمة في C++: لغة الأداء العالي
الألعاب الضخمة ذات الرسومات المذهلة، ومتصفحات الإنترنت التي تستخدمها يومياً، وبرامج تحرير الفيديو الاحترافية: كثير منها مبني بلغة C++. في هذا الدرس ستتعرف على هذه اللغة القوية، وعلاقتها بلغة C، وستكتب أول برنامج بها.
ما هي C++؟
Section titled “ما هي C++؟”C++ (تُنطق «سي بلس بلس») لغة برمجة طورها العالم الدنماركي بيارنه ستروستروب (Bjarne Stroustrup) في الثمانينيات. بدأت باسم «C with Classes» أي «C مع الكلاسات»، لأن فكرتها كانت إضافة مزايا جديدة إلى لغة C، وأهمها البرمجة الكائنية.
حتى الاسم فيه نكتة برمجية: العلامة ++ في لغة C تعني «زِد واحداً». فـ C++ تعني «C بعد خطوة للأمام».
علاقتها بلغة C
Section titled “علاقتها بلغة C”C++ مبنية على C، وأغلب كود C يعمل داخل C++. لكن C++ أضافت أدوات كثيرة تجعل بناء البرامج الكبيرة أسهل وأكثر تنظيماً.
تخيّل أن C ورشة نجارة فيها أدوات يدوية قوية ودقيقة. و C++ هي نفس الورشة بعد أن أُضيفت إليها آلات حديثة: ما زالت الأدوات اليدوية موجودة لمن يحتاج الدقة، لكنك تستطيع الآن بناء أثاث كبير ومعقد بسرعة أكبر.
أين تُستخدم C++؟
Section titled “أين تُستخدم C++؟”- الألعاب: محركات ألعاب شهيرة مثل Unreal Engine مكتوبة بـ C++، وكثير من الألعاب الكبرى تعتمد عليها.
- المتصفحات: أجزاء أساسية من متصفحات مثل Chrome و Firefox.
- البرامج الاحترافية: برامج التصميم وتحرير الصور والفيديو.
- الأنظمة والأجهزة: قواعد البيانات، وأنظمة التشغيل، والروبوتات، والسيارات الذكية.
- المسابقات البرمجية: اللغة المفضلة لكثير من المتسابقين في مسابقات حل المشكلات بسبب سرعتها.
السبب المشترك في كل هذه المجالات: السرعة والتحكم الكامل. عندما يجب أن يعمل البرنامج بأقصى سرعة ممكنة، يختار المطورون C++.
البرمجة الكائنية باختصار
Section titled “البرمجة الكائنية باختصار”البرمجة الكائنية (Object-Oriented Programming) طريقة لتنظيم البرنامج حول «كائنات» تجمع البيانات والأفعال معاً. مثلاً في لعبة: كائن «لاعب» له بيانات (الاسم، والنقاط، والصحة) وأفعال (يقفز، ويجري، ويهاجم).
ستتعلم هذا بالتفصيل في درس الكلاسات. المهم الآن أن تعرف أنها من أكبر إضافات C++ على C.
أول برنامج في C++
Section titled “أول برنامج في C++”#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 موجودة في «المكتبة القياسية» للغة. ستراها كثيراً.
لمحة عن المتغيرات
Section titled “لمحة عن المتغيرات”#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++؟
Section titled “كيف تشغّل كود C++؟”مثل C، تحتاج مترجماً يحوّل الكود إلى ملف تنفيذي:
- أونلاين: ابحث عن «C++ Online Compiler» وجرّب في المتصفح مباشرة.
- على جهازك: ثبّت مترجم g++ (يأتي مع GCC)، ثم:
g++ hello.cpp -o hello./helloجرّب بنفسك
Section titled “جرّب بنفسك”اكتب برنامجاً بـ C++ يطبع بيانات لاعب في لعبة: اسمه، ومستواه، ونقاطه، في سطر واحد باستخدام <<. ثم اطبع في سطر ثانٍ النقاط بعد مضاعفتها:
Player: Ali | Level: 3 | Score: 250Double score: 500أخطاء شائعة
Section titled “أخطاء شائعة”- نسيان
std::: كتابةcoutوحدها تسبب خطأ'cout' was not declared. اكتبstd::cout. - عكس اتجاه العلامة:
std::cout >> "Hello"خطأ. للإخراج نستخدم<<. - نسيان الفاصلة المنقوطة في نهاية الأمر.
- حفظ الملف بامتداد
.c: ملفات C++ تُحفظ بامتداد.cpp.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ما أهم ما أضافته C++ إلى لغة C؟
C++ بدأت باسم «C with Classes»، وأهم إضافاتها البرمجة الكائنية.
سؤال
أي سطر يطبع كلمة Hi في C++ بشكل صحيح؟
الإخراج في C++ يكون بـ std::cout مع العلامة <<.
الخلاصة
Section titled “الخلاصة”- C++ لغة مبنية على C، وأضافت البرمجة الكائنية وأدوات حديثة كثيرة.
- تُستخدم حيث تهم السرعة والتحكم: الألعاب والمتصفحات والبرامج الاحترافية.
#include <iostream>ثمstd::cout << ... << std::endl;للطباعة.std::stringللنصوص، والمتغيرات تحتاج نوعاً.- تحتاج مترجماً مثل g++ لتحويل الكود إلى ملف تنفيذي.