🔥 أحدث الأخبار

موقع يهتم بكل ماهو جديد في عالم التكنولوجيا والرياضة

كورس C++ المتوسط – الحلقة السابعة: Structures و Enumerations

 


كورس C++ المتوسط – الحلقة السابعة: Structures و Enumerations

#برمجة

مقدمة

في البرامج الحقيقية لا نتعامل دائماً مع متغير واحد فقط، بل مع مجموعة بيانات مرتبطة ببعضها.

مثلاً الطالب لديه:

  • اسم
  • عمر
  • درجة

بدلاً من إنشاء متغير لكل شيء:

string name;
int age;
double mark;

يمكننا جمعها داخل كيان واحد باستخدام:

Structure (Struct)


ما هو Struct؟

الـ Struct يسمح بتجميع عدة متغيرات مختلفة داخل نوع واحد.


مثال

#include <iostream>
using namespace std;

struct Student
{
    string name;
    int age;
    double mark;
};

int main()
{
    Student s1;

    s1.name = "Ahmed";
    s1.age = 20;
    s1.mark = 95.5;

    cout << s1.name << endl;
    cout << s1.age << endl;
    cout << s1.mark;

    return 0;
}

الناتج

Ahmed
20
95.5

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

بدلاً من:

string studentName[100];
int studentAge[100];
double studentMark[100];

يمكننا كتابة:

Student students[100];

ويصبح الكود أسهل بكثير.


إنشاء أكثر من طالب

Student s1;
Student s2;
Student s3;

مصفوفة من Struct

Student students[3];

مثال عملي

#include <iostream>
using namespace std;

struct Student
{
    string name;
    int age;
};

int main()
{
    Student students[3];

    for(int i = 0; i < 3; i++)
    {
        cout << "Name: ";
        cin >> students[i].name;

        cout << "Age: ";
        cin >> students[i].age;
    }

    cout << "\nStudents:\n";

    for(int i = 0; i < 3; i++)
    {
        cout << students[i].name
             << " - "
             << students[i].age
             << endl;
    }

    return 0;
}

Struct داخل Struct

struct Address
{
    string city;
};

struct Student
{
    string name;
    Address addr;
};

الاستخدام

Student s;

s.addr.city = "Sanaa";

الدوال مع Struct

struct Student
{
    string name;
    int age;
};

void printStudent(Student s)
{
    cout << s.name << endl;
    cout << s.age << endl;
}

تمرير Struct بالمرجع

بدلاً من نسخ البيانات:

void printStudent(const Student& s)
{
    cout << s.name;
}

وهذه طريقة أفضل وأسرع.


ما هو Enum؟

Enum اختصار:

Enumeration

ويستخدم لإنشاء مجموعة قيم ثابتة.


مثال

enum Day
{
    Saturday,
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday
};

الاستخدام

Day today = Monday;

مثال كامل

#include <iostream>
using namespace std;

enum Day
{
    Saturday,
    Sunday,
    Monday
};

int main()
{
    Day today = Monday;

    cout << today;

    return 0;
}

الناتج

2

لأن:

Saturday = 0
Sunday = 1
Monday = 2

إعطاء قيم خاصة

enum Status
{
    Success = 200,
    NotFound = 404,
    ServerError = 500
};

مثال

#include <iostream>
using namespace std;

enum Status
{
    Success = 200,
    NotFound = 404
};

int main()
{
    cout << Success;

    return 0;
}

الناتج

200

مشروع عملي: نظام طلاب

#include <iostream>
using namespace std;

struct Student
{
    string name;
    int age;
    double mark;
};

int main()
{
    Student s;

    cout << "Name: ";
    cin >> s.name;

    cout << "Age: ";
    cin >> s.age;

    cout << "Mark: ";
    cin >> s.mark;

    cout << "\nStudent Info\n";

    cout << "Name: " << s.name << endl;
    cout << "Age: " << s.age << endl;
    cout << "Mark: " << s.mark << endl;

    return 0;
}

مشروع عملي: حالة الطلب

#include <iostream>
using namespace std;

enum OrderStatus
{
    Pending,
    Processing,
    Completed
};

int main()
{
    OrderStatus order = Processing;

    if(order == Processing)
    {
        cout << "Order is processing";
    }

    return 0;
}

الفرق بين Struct و Class

Struct Class
public افتراضياً private افتراضياً
للبيانات البسيطة للأنظمة الكبيرة
أبسط أكثر احترافية

أخطاء شائعة

❌ نسيان النقطة:

student.name

❌ كتابة:

student->name

بدون مؤشرات.

❌ استخدام أرقام عشوائية بدلاً من Enum.


تمارين

التمرين 1

أنشئ Struct باسم Book يحتوي:

  • title
  • author
  • price

التمرين 2

أنشئ مصفوفة تحتوي 5 كتب.


التمرين 3

أنشئ Enum باسم TrafficLight.


التمرين 4

اصنع برنامجاً يحدد حالة الإشارة باستخدام Enum.


التمرين 5

اصنع نظام طلاب يحتوي على:

  • اسم
  • عمر
  • درجة
  • طباعة البيانات

ملخص الحلقة السابعة

تعلمنا:

  • Struct
  • Arrays of Structs
  • Nested Structs
  • Functions with Structs
  • Enum
  • القيم المخصصة داخل Enum
  • بناء أنظمة بيانات منظمة

في الحلقة الثامنة سنتعلم:

🔥 Linked List (القوائم المرتبطة)

وهي أول بنية بيانات حقيقية (Data Structure) يستخدمها المبرمجون المحترفون في الأنظمة الكبيرة والمقابلات التقنية. 🚀


تعليقات

💬 🙋🏻‍♂️