مقال

مرجع c++

22 نوفمبر 202515 مشاهدة

مرجع شامل ومطوّل للغة C++ — بدون برمجة كائنية

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

هذا الدليل مخصص للطلاب الذين نسوا الأساسيات أو يحتاجون لمراجعة قوية وواضحة وموسّعة.


  1. ما هي لغة C++؟

C++ لغة تم إنشاؤها كامتداد للغة C التقليدية، لكنها تمنحك قدرة أكبر على التحكم بالذاكرة وبناء برامج عالية الأداء.

ما الذي يميز C++؟

السرعة العالية.

الوصول المباشر للذاكرة عبر المؤشرات.

التحكم في موارد النظام (ملفات، ذاكرة، مدخلات ومخرجات).

الدقة في التعامل مع الأرقام.

إمكانية استخدام أسلوب C القديم أو الأسلوب الحديث.

وتُعتبر اللغة الأولى التي يتعلمها الكثير من الطلاب لأنها تكشف تفاصيل البرمجة الحقيقية.


  1. المتغيرات وأنواع البيانات (شرح موسّع)

المتغير هو “صندوق” يخزن بيانات داخل ذاكرة الكمبيوتر. كل متغير له:

  1. اسم (identifier)

  2. نوع (int – float – double – char – string – bool …)

  3. قيمة

  4. عنوان في الذاكرة (يمكن الوصول إليه بالمؤشرات)

أنواع البيانات الأساسية:

  1. int

يستخدم لتخزين الأعداد الصحيحة مثل:

-10, 0, 25, 1000

يحتل عادة 4 بايت.

  1. float

يخزن الأعداد العشرية بدقة متوسطة:

3.14 , 10.5

  1. double

مثل float لكنه يوفر دقة أعلى، ويستخدم أكثر في الحسابات العلمية.

  1. char

يخزن حرف واحد فقط بين علامتي تنصيص مفردة:

'A', 'b', '2'

  1. string

يخزن نص كامل. (يحتاج مكتبة string)

  1. bool

يخزن:

true أو false

مفيد جدًا في الشروط.


  1. الجمل الشرطية if / else (شرح مطوّل جدًا)

الجمل الشرطية هي التي تجعل البرنامج “يفكر” ويتخذ قرارات.

البرنامج يختبر شرطًا:

إذا تحقق → ينفذ كود معين

إذا لم يتحقق → ينفذ كود آخر (إن وجد)

صيغة if الأساسية:

if (condition) { // code }

ما هو الـ condition (الشرط)؟

هو تعبير منطقي ينتج:

true

false

أمثلة على الشروط:

x > 10

age == 18

temperature <= 0

name == "Ali"

مثال مع شرح موسّع:

افترض أننا نريد التأكد هل الطالب ناجح أم لا:

int grade = 70;

if (grade >= 50) { cout << "الطالب ناجح"; }

شرح السطر:

grade >= 50 يعني: هل قيمة المتغير grade أكبر أو تساوي 50؟

إذا نعم → البرنامج يطبع “الطالب ناجح”

إذا لا → يتجاهل الكود داخل if كأنه غير موجود.


if – else

عندما نريد تنفيذ كود آخر عند فشل الشرط.

int grade = 40;

if (grade >= 50) { cout << "ناجح"; } else { cout << "راسب"; }

الفرق هنا:

إذا الشرط صحيح → ينفذ القسم الأول فقط.

إذا الشرط خطأ → ينفذ القسم داخل else.


if – else if – else (شرح موسّع جدًا)

نستخدمها عندما يكون لدينا عدة حالات.

مثال: تحديد تقدير الطالب:

int grade = 85;

if (grade >= 90) { cout << "امتياز"; } else if (grade >= 75) { cout << "جيد جدا"; } else if (grade >= 60) { cout << "جيد"; } else if (grade >= 50) { cout << "مقبول"; } else { cout << "راسب"; }

الاستخدام المثالي لـ else if يكون عندما تحتاج التحقق من شروط متعددة واحدًا بعد الآخر.

نصائح مهمة لفهم if بعمق:

الشرط يُفحص من الأعلى إلى الأسفل.

أول شرط يتحقق يتم تنفيذ كوده، والباقي يتم إهماله.

يفضل ترتيب الشروط من الأكبر إلى الأصغر أو العكس لتسريع الأداء.

استخدام == شي حساس، يجب ألا تخلطه مع =.


  1. الحلقات Loops (شرح مطوّل)

الحلقات تجعل البرنامج يعيد تنفيذ نفس الكود مرات عديدة بشكل تلقائي.

أنواع الحلقات:

  1. for — عندما تعرف عدد مرات التكرار مسبقًا

  2. while — عندما لا تعرف العدد وتنتظر شرطًا

  3. do-while — يتم تنفيذها مرة واحدة على الأقل قبل فحص الشرط


  1. حلقة for (شرح موسّع)

شكل الحلقة:

for (initialization; condition; update) { // code to repeat }

شرح:

initialization: تهيئة العداد (مثل i = 0)

condition: الشرط الذي يحدد استمرار الحلقة

update: تحديث العداد (مثل i++)

مثال مفصّل:

for (int i = 1; i <= 5; i++) { cout << "العدد: " << i << endl; }

يعمل كالتالي:

الدورة قيمة i

1 1 2 2 3 3 4 4 5 5

ثم يتوقف لأن i أصبحت 6.

حالات استخدام مهمة:

طباعة أرقام

تكرار عمليات

المرور على عناصر مصفوفة

عمل عدّاد لعدد المحاولات


  1. حلقة while بتفصيل

int i = 0;

while (i < 5) { cout << i << endl; i++; }

تستمر الحلقة طالما الشرط صحيح.

مميزاتها:

مناسبة للمواقف التي لا تعرف فيها عدد المرات مسبقًا مثل قراءة بيانات المستخدم حتى يدخل 0.

ملاحظات:

إذا نسيت تحديث المتغير… → ستقع في حلقة لا نهائية (infinite loop)

يجب التأكد من أن الشرط سيصبح false في وقت ما.


  1. حلقة do-while (شرح مهم)

int x = 0;

do { cout << x << endl; x++; } while (x < 5);

الفرق الرئيسي:

يتم تنفيذ الكود مرة واحدة على الأقل قبل فحص الشرط.

مفيد في:

طلب كلمة مرور من المستخدم

القوائم التفاعلية

أي موقف تريد أن يُنفّذ مرة واحدة مهما كان الشرط


  1. المصفوفات Arrays (شرح موسّع جدًا)

المصفوفة هي سلسلة من العناصر المتجاورة في الذاكرة، كلها من نفس النوع.

تعريف مصفوفة:

int numbers[5] = {10, 20, 30, 40, 50};

الوصول إلى عنصر:

cout << numbers[0]; // 10 cout << numbers[4]; // 50

لماذا نستخدم المصفوفات؟

تخزين مجموعة بيانات لها نفس النوع

مفيدة في:

الدرجات

الأسعار

نتائج البحث

الأسماء (string array)

المرور على المصفوفة:

for (int i = 0; i < 5; i++) { cout << numbers[i] << endl; }


  1. السلاسل النصية Strings (شرح موسّع)

string name = "Mohamed";

عمليات شائعة:

name.length(); // طول النص name[0]; // أول حرف name += " Ali"; // دمج نصوص

السلاسل النصية في ++C قوية جدًا وتساعدك في بناء برامج رسوميات، شات، أنظمة تسجيل دخول.. إلخ.


  1. الدوال Functions (موسّعة)

الدالة هي جزء من البرنامج يقوم بمهمة محددة.

لماذا نستخدم الدوال؟

تقليل تكرار الكود

سهولة صيانة البرنامج

تقسيم البرنامج إلى أجزاء صغيرة واضحة

إمكانية إعادة الاستخدام

شكل الدالة:

returnType functionName(parameters) { // code return value; }

مثال موسّع:

int sum(int a, int b) { int result = a + b; return result; }

الفائدة:

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


  1. المؤشرات Pointers (شرح مبسط وموسع)

المؤشر متغير يخزن عنوان ذاكرة لمتغير آخر.

int x = 10; int* p = &x;

&x → يعطي عنوان المتغير x

p → يخزن العنوان

*p → يعطي قيمة المتغير الموجود في ذلك العنوان

لماذا نستخدم المؤشرات؟

الوصول المباشر للذاكرة

تمرير المتغيرات للدوال بدون نسخ

التعامل مع المصفوفات

بناء هياكل البيانات مثل linked list

فهم المؤشرات ضروري لطلاب البرمجة لأنه أساس إدارة الذاكرة في C++.


  1. التعامل مع الملفات File Handling (شرح مفصل)

يتيح لك:

حفظ بيانات المستخدم

تسجيل الأنشطة

تخزين نتائج البرامج

قراءة بيانات من ملفات كبيرة

الكتابة لملف:

ofstream file("data.txt"); file << "Hello"; file.close();

القراءة من ملف:

ifstream file("data.txt"); string line;

while (getline(file, line)) { cout << line << endl; }

file.close();


خلاصة المرجع

هذا المقال يشمل جميع أساسيات C++ بدون OOP وبشكل مفصّل لتقوية الطلاب وإزالة أي ارتباك لديهم.

يغطي المقال:

المتغيرات

الشروط

الحلقات

المصفوفات

الدوال

المؤشرات

الملفات

السلاسل النصية