مصفوفة (حوسبة)

من ويكيبيديا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث
مصفوفة ثنائية البعد

المصفوفة هي تركيبة من البيانات يتم إنشائها بشكل برمجي في الحاسوب ، يمكنها تخزين العديد من العناصر من نفس النوع و كل عنصر يحمل قيمة ، يتم حجز مساحة من الذاكرة لتحمل قيمة و مكان كل عنصر بشكل متسلسل ، المصفوفة لها سعة ثابتة [1] و لا تتغير خلال وقت التنفيذ لهذا يجب تحديد سعة المصفوفة خلال وقت البرمجة. المصفوفة يمكن أن تحتوي بيانات ببعد واحد أو أكثر . المصفوفة الثنائية البعد يمكن تصورها على أنها مصفوفات داخل اخرى . فالبعد الأول يمكن اعتباره المصفوفة الرئيسية أما البعد الثاني فهو مصفوفة داخل البعد الأول . كل عنصر من المصفوفة له حجم خاص به و حسب نوع المصفوفة ، السعة الكلية للمصفوفة عبارة عن حجم العنصر مضروب في عدد العناصر .

الأداء والقيود[عدل]

يتم تمثيل العناصر في الذاكرة في شكل مناطق متجاورة [2] ، هذا ما يجعل عمليات الإدراج والحذف مستحيلة ، إلا إذا قمت بإنشاء مصفوفة جديد . فمن الضروري نسخ جميع العناصر من الجدول الأصلي إلى الجدول الجديد، ومن ثم تحرير مساحة الذاكرة المخصصة للمجموعة القديمة ، او يمكن استخدام المصفوفة الديناميكية. في بعض لغات البرمجة اسم المصفوفة هو مؤشر لأول عنصر في الفهرس [3] . توجد حالات قد تشكل مشكلة في النظام او ثغرة أمنية أو خطأ في سير البرنامج [4] و هي الإشارة إلى عنصر خارج المجموعة . على سبيل المثال. إذا تم تصميم مصفوفة تحتوي على 50 عدد صحيح وقمت بكتابة قيمة إلى المؤشر أكبر من 50 ، فهذه القيمة ستكتب خارج ذاكرة المخصصة للمصفوفة ، ولكن في بعض الأحيان نظام التشغيل يمنع هذا . سعة المصفوفة المحدود له ميزة ثبات زمن الوصول إلى قيمة العنصر ، بغض النظر عن مكان العنصر المطلوب. ويرجع ذلك إلى أن العناصر هي مجموعة متجاورة في الذاكرة .

مؤشر الفهرسة[عدل]

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

  • الفهرسة من 0 : في هذا الوضع العنصر الأول من المصفوفة يتم الإشارة إليه بصفر ("0") . وفقا لذلك، فإن اي عنصر من المصفوفة يمكن الوصول إلى قيمته بإنقاص 1 من رقم ترتيبه. في لغة C هي مثال نموذجي يستخدم هذا الأسلوب من الفهرسة[5] .
  • الفهرسة من 1 : الفهرسة على هذا النحو ، العنصر الأول من المصفوفة يتم الإشارة إليه برقم "1" ، واي عنصر من المجموعة يمكن الإشارة إليه برقم ترتيبه[6] .
  • الفهرسة المستندة ن (ن): هذا الوضع من الفهرسة يتنوع فيها المؤشر و قد يكون حرف او رمز و هي تنستند إلى قيمة . كما يمكنها قبول قيمة سالبة .

الاستخدامات[عدل]

تستخدم المصفوفات لتمثيل الهياكل المعقدة للبيانات مثل :

او في الخوارزميات على سبيل المثال - خوارزمية بحث ثنائي .

أمثلة[عدل]

الامثلة التالية بلغة البرمجة سي (c) .

مصفوفة ببعد واحد[عدل]

int mydata[10]; // إنشاء مصفوفة بسعة 10 عناصر
mydata[0] = 22;  // إسناد قيمة '22' لأول عنصر في المصفوفة
mydata[1] = 1;
mydata[2] = 11;
mydata[3] = 2;
mydata[9] = 33; // إسناد قيمة '33' لأخر عنصر في المصفوفة

مصفوفة ببعدين[عدل]

 int mydata[10] [10] //  عشرة مصفوفات بسعة عشرة عناصر
 mydata[0] [5] = 64; //إسناد قيمة للعنصر الخامس في المصفوفة الأولى

إسناد قيمة للعناصر في وقت الإنشاء[عدل]

int mydata[5] = {6, 3335, 42, 85, 50};

مراجع[عدل]

  1. ^ - Bothell Computing & Software Systems- University of Washington، اطلع عليه بتاريخ 15-08-2014 نسخة محفوظة 01 أغسطس 2017 على موقع واي باك مشين.
  2. ^ - الحوسبة المتوازية EECS COLLEGE OF ENGINEERING UC Berkeley، اطلع عليه بتاريخ 15-08-2014 نسخة محفوظة 23 سبتمبر 2015 على موقع واي باك مشين.
  3. ^ - اللغة البرمجية C- http://boredzo.org/pointers/#arrays، اطلع عليه بتاريخ 15-08-2014 نسخة محفوظة 19 أغسطس 2014 على موقع واي باك مشين.
  4. ^ Efficient Array & Pointer Bound Checking Against Buffer Overflow Attacks - University of Texas at Dallas ، اطلع عليه بتاريخ 15-08-2014 نسخة محفوظة 16 أبريل 2007 على موقع واي باك مشين.
  5. ^ One-Based and Zero-Based Indexing، اطلع عليه بتاريخ 15-08-2014 نسخة محفوظة 19 أغسطس 2014 على موقع واي باك مشين.
  6. ^ Introduction to Arrays، اطلع عليه بتاريخ 15-08-2014 نسخة محفوظة 15 أبريل 2017 على موقع واي باك مشين.