المصفوفة أحادية البعد One Dimensional Array (1)

وقت القراءة: 7 دقائق 150 مشاهدة

المصفوفة عبارة عن بنية بيانات تقوم بتخزين مجموعة من العناصر من نفس نوع البيانات. يتم تخزين هذه العناصر في مواقع ذاكرة متجاورة، ويمكن الوصول إليها باستخدام index. توفر المصفوفات طريقة لإدارة ومعالجة مجموعة كبيرة من البيانات بكفاءة.

في لغة C++، يمكنك الإعلان عن مصفوفة عن طريق تحديد نوع بياناتها وعدد العناصر التي ستحتوي عليها. إليك بناء الجملة التالي:

data_type array_name[array_size];

المصفوفات في لغة C++ تبدأ فهرستها بصفر، مما يعني أنه يتم الوصول إلى العنصر الأول باستخدام index 0، والعنصر الثاني باستخدام index 1، وهكذا. يمكنك الوصول إلى عناصر المصفوفة وتعديلها باستخدام الأقواس المربعة:

array_name[index] = new_value;

مثال:

#include <iostream>
using namespace std;

int main()
{
    int x[5];
    x[0] = 10;
    x[1] = 20;
    cout << x[0] << endl;
    x[2];
    x[3];
    x[4];

    return 0;
}

1. int x[5];

يعلن هذا السطر عن مصفوفة أعداد صحيحة تسمى x بحجم 5. وهذا يعني أن x يمكنها تخزين خمس قيم صحيحة. ومع ذلك، في هذه المرحلة، تكون القيم الموجودة في المصفوفة غير مهيأة، مما يعني أنها تحتوي على بيانات عشوائية.
2. x[0] = 10;

هنا، نقوم بتعيين القيمة 10 للعنصر الأول في المصفوفة x. في لغة C++، تكون المصفوفات مفهرسة بصفر، لذلك يشير x[0] إلى العنصر الأول.
3. x[1] = 20;

وبالمثل، فإننا نخصص القيمة 20 للعنصر الثاني في المصفوفة x، وهو x[1].
4. cout << x[0] << endl;

يطبع هذا السطر قيمة العنصر الأول من المصفوفة x، وهو 10، إلى شاشة المخرجات. ويستخدم (object) cout من مكتبة C++ لإخراج القيمة، متبوعًا بحرف نهاية السطر (endl) للتنسيق.
5. x[2];

يبدو أن هذه الأسطر تصل إلى العنصر الثالث في المصفوفة x، لكنها لا تفعل أي شيء. إنها في الأساس عملية "noop"، وتظل القيمة في x[2] غير مهيأة أو دون تغيير.
6. x[3]; and x[4];

كما هو الحال في السطر السابق، تصل هذه الخطوط إلى العنصرين الرابع والخامس من المصفوفة x، لكنها أيضًا لا تؤدي أي عملية ذات معنى.

المخرجات:

10

مثال إضافي:

#include <iostream>

using namespace std;

int main()
{
    int x[5];
    x[0] = 10;
    x[1] = 5;
    x[4] = x[0] + x[1];
    cout<< x[4] << endl;

    return 0;
}

المخرجات:

15

المصفوفات تقبل فقط حجم ثابت للمصفوفة، مثال:

#include <iostream>

using namespace std;

int main()
{
    const int t = 5;
    int x[t];

    return 0;
}

يعلن هذا الكود عن مصفوفة أعداد صحيحة `x` بحجم 5، ويتم تحديد الحجم بواسطة الثابت `t`، الذي تم ضبطه على 5. وتضمن الـ(keyword) `const` عدم إمكانية تغيير `t` لاحقًا في البرنامج . لا يقوم هذا الكود بتنفيذ أي عمليات أخرى على المصفوفة؛ إنه يوضح ببساطة كيفية الإعلان عن مصفوفة بحجم يحدده ثابت.

يمكنك أيضًا الإعلان عن حجم المصفوفة الخاصة بك، والإعلان عن القيم الأولية للمصفوفة الخاصة بك:

#include <iostream>

using namespace std;

int main()
{
    int x[5] = { 1,4,8,7,2 };
    cout << x[0] << endl;

    return 0;
}

يعلن هذا الكود عن مصفوفة أعداد صحيحة x بحجم 5 ويقوم بتهيئتها بالقيم 1 و4 و8 و7 و2. ثم يقوم بطباعة العنصر الأول من المصفوفة، وهو 1، إلى شاشة المخرجات. يوضح هذا الكود كيفية إنشاء مصفوفة والوصول إلى عناصرها في لغة C++.

ولكن ماذا لو لم تعلن عن أي قيم أولية في المصفوفة؟

#include <iostream>

using namespace std;

int main()
{
    int x[5];
    cout << x[3] << endl;

    return 0;
}

يعلن هذا الكود عن مصفوفة أعداد صحيحة x بحجم 5 ولكنه لا يقوم بتهيئة عناصره. لذلك، عند محاولة طباعة قيمة العنصر الرابع، سيتم عرض قيمة عشوائية أو غير صحيحة. من المهم تهيئة عناصر المصفوفة قبل استخدامها لتجنب السلوك غير المتوقع في برامجك.

ماذا لو أعلنت قيمة أولية واحدة فقط تساوي 0؟

#include <iostream>

using namespace std;

int main()
{
    int x[5] = {0};
    cout << x[3] << endl;

    return 0;
}

يعلن هذا الكود عن مصفوفة أعادد صحيحة x بحجم 5 ويقوم بتهيئة جميع عناصرها إلى 0. ثم يقوم بطباعة قيمة العنصر الرابع من المصفوفة، وهو 0، إلى شاشة المخرجات. يوضح هذا الكود كيفية إنشاء مصفوفة بقيم أولية محددة في لغة C++.

يمكنك أيضًا الإعلان عن حجم المصفوفة والإعلان عن بعض القيم الأولية الأولى، على سبيل المثال:

#include <iostream>

using namespace std;

int main()
{
    int x[5] = {1,2,3};
    cout << x[3] << endl;

    return 0;
}

يعلن هذا الكود عن مصفوفة أعداد صحيحة x بحجم 5 ويقوم بتهيئة العناصر الثلاثة الأولى بقيم، بينما تتم تهيئة العنصرين المتبقيين تلقائيًا إلى 0. ثم يقوم بطباعة قيمة العنصر الرابع، وهو 0، إلى شاشة المخرجات.

أو يمكنك الإعلان عن عدم وجود حجم لمصفوفتك والإعلان فقط عن القيم الأولية لمصفوفتك:

#include <iostream>

using namespace std;

int main()
{
    int x[] = {1,2,3,4,5};
    cout << x[3] << endl;

    return 0;
}

يعلن هذا الرمز عن مصفوفة أعداد صحيحة x ويقوم بتهيئتها بقيم باستخدام قائمة تهيئة المصفوفة. ثم يقوم بطباعة قيمة العنصر الرابع من المصفوفة، وهو 4، إلىشاشة المخرجات. يوضح هذا الرمز كيفية إنشاء مصفوفة والوصول إلى عناصرها في لغة C++.

كيف يقوم الـ compiler بتخزين القيم في المصفوفة؟

يقوم الـ compiler بتخزين قيم المصفوفة في مواقع الذاكرة المتجاورة. وهذا يعني أنه يتم تخزين قيم عناصر المصفوفة بجانب بعضها البعض في الذاكرة. يقوم المترجم بتخصيص جزء من الذاكرة كبير بما يكفي لتخزين كافة عناصر المصفوفة، ثم يقوم بتخزين قيم العناصر الموجودة في هذا الجزء من الذاكرة.

يقوم الـcompiler بتتبع عنوان العنصر الأول في المصفوفة، ثم يستخدم هذا العنوان للوصول إلى العناصر الأخرى في المصفوفة. على سبيل المثال، للوصول إلى العنصر الموجود في الفهرس i، يضيف الـ(compiler) i إلى عنوان العنصر الأول.

تعتمد الطريقة المحددة التي يقوم بها المترجم بتخزين قيم المصفوفة على نوع بيانات عناصر المصفوفة. على سبيل المثال، إذا كانت عناصر المصفوفة عبارة عن أعداد صحيحة، فسيقوم المترجم بتخزين كل عدد صحيح في موقع ذاكرة واحد. ومع ذلك، إذا كانت عناصر المصفوفة عبارة عن بنيات، فسيقوم المترجم بتخزين كل بنية في كتلة متجاورة من مواقع الذاكرة.

يوضح لك هذا الكود كيفية قراءة وتخزين مدخلات المستخدم في مصفوفة في لغة C++، فهو يسمح للمستخدم بإدخال قيمة عددية للعنصر الأول في المصفوفة، arr[0]، ثم يعرض القيمة التي تم إدخالها.

#include <iostream>

using namespace std;

int main()
{
    int arr[50];
    cout << "Enter arr[0]: " << endl;
    cin >> arr[0];
    cout << arr[0] << endl;

    return 0;
}

 

لاجتياز عناصر المصفوفة، يمكنك استخدام حلقات الدوران مثل for أو while. يتيح لك التكرار عبر المصفوفة تنفيذ العمليات على كل عنصر بشكل منهجي.

مثال:

#include <iostream>

using namespace std;

int main()
{
    int arr[10];
    for (size_t i = 0; i < 10; i++)
    {
        cout << "Enter arr[" << i << "]: ";
        cin >> arr[i];
    }
    for (size_t i = 0; i < 10; i++)
    {
        cout << "arr[" << i << "] = " << arr[i] << endl;
    }

    return 0;
}

يسمح هذا الكود للمستخدم بإدخال 10 قيم صحيحة، واحدة لكل عنصر من عناصر المصفوفة، ثم يعرض القيم مع مؤشراتها. ويوضح كيفية قراءة وتخزين مدخلات المستخدم المتعددة في مصفوفة ومن ثم طباعة محتويات المصفوفة في لغة C++.

مشاركة هذا

المصفوفة أحادية البعد One Dimensional Array (1)

Or copy link

المحتوى
Arabic