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

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

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

طريقة العمل 

العملية يتحكم فيها عدة عوامل منها لغة البرمجة أو حجم العنصر في المصفوفة أو مكان التواجد في الذاكرة.

يتم تخصيص ذاكرة ديناميكية بواسطة طلب كومة من الذاكرة، ذاكرة الكمبيوتر محدود ويمكن أن تستنفد. فلا توجد ضمانات بأن جميع طلبات تخصيص الذاكرة تمنح من قبل النظام.

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

اما بالنسبة لخطوات تحجيم المصفوفة تكون كالتالي:

 يتم تحديث الحقل حجم
 يتم حجز الذاكرة للمجموعة الجديدة مع الحجم الجديد.
 يتم ملئ المجموعة الجديدة بقيمة افتراضية (null – 0).
 يتم نسخ العناصر من مجموعة ثابتة القديمة إلى مجموعة جديدة
 يتم تغيير مؤشر مجموعة ثابت إلى مجموعة جديدة.
 يتم التخلص من ذاكرة المجموعة القديمة

من الناحية الفنية هناك حالات يمكن أن تغير من الخطوات:

 إذا كان هناك مساحة في الذاكرة كافية بعد آخر عنصر في المجموعة، فقط الخطوة رقم 1 و 3 ستعمل ويتم الاستغاء عن باقي الخطوات.
 إذا كانت العملية هي تقليص سعة المصفوفة، فقط الخطوة رقم 1 و 6 ستعمل.
 إذا كان هناك من متغيرات (مؤشر) يشير إلى عنصر من المجموعة، لن يتم التخلص من مجموعة القديمة، لأن المتغيرات الأخرى سوف تستمر للإشارة إلى البيانات القديمة.

الأداء 

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

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

مراجع 

أنواع البيانات
بنى البيانات
المصفوفات الديناميكية أو المصفوفة الحيوية ( بالإنجلزية : dynamic array ) هي نوع خاص من البايانات في لغات البرمجة ، تحتوي على عدد متغير من العناصر مرتبة ب شكل أعمدة وحقول متعدد ال أبعاد . كل العناصر لدي ها نفس النوع ، ويسمى « النوع الداخلي » للمجموعة ، على عكس المصفوفة الثابتة التي يحدد حجم ها و نوع العنصر في وقت البرمجة ، المصفوفة الديناميكية يحدد نوع العنصر فقط ، و يتم تغيير سعة الإستيعاب في وقت التنفيذ . لا يقصد بالمصفوفة الديناميكية حجم أو قيمة العنصر و لا عدد العناصر بل بالاستعاب الأقصى ل عدد العناصر . في المصفوفة ديناميكية ، الطول الأولي للمجموعة هو صفر . يجب تعيين طول الفعلي للمجموعة بستخدام وظيفة توفر ها لغة البرمجة ، و التي س تقوم ب حجز الذاكرة اللازمة ل تخزين عناصر المصفوفة . قد يتم ال حجز في نفس المكان أو قد يتم نقل كل المصفوفة إلى منطقة جديدة في الذاكرة و نقل قيم العناصر في ها ويسمى « النسخ المتماثل » و هي عملية ل الحفاظ على قيمة ومكان كل عنصر من المجموعة داخل المصفوفة . طريقة العمل العملية يتحكم في ها عدة عوامل من ها لغة البرمجة أو حجم العنصر في المصفوفة أو مكان التواجد في الذاكرة . يتم تخصيص ذاكرة ديناميكية ب واسطة طلب كومة من الذاكرة ، ذاكرة الكمبيوتر محدود و يمكن أن تستنفد . ف لا توجد ضمانات ب أن جميع طلبات تخصيص الذاكرة تمنح من قبل النظام . في الكثير من لغات البرمجة اسم المصفوف ه هو مؤشر يشير إلى أول عنصر من عناصر المصفوف ه ب معنى أن الاسم هو مكان ي حجز في الذاكرة يحتوى على عنوان أول عنصر في ها ، و يمكن استخدام اسم المصفوف ه كمؤشر تجرى علي ه العمليات الخاصة ب المؤشرات . اما ب النسبة ل خطوات تحجيم المصفوفة تكون ك التالي : يتم تحديث الحقل حجم يتم حجز الذاكرة للمجموعة الجديدة مع الحجم الجديد . يتم ملئ المجموعة الجديدة ب قيمة افتراضية ( null – يتم نسخ العناصر من مجموعة ثابتة القديمة إلى مجموعة جديدة يتم تغيير مؤشر مجموعة ثابت إلى مجموعة جديدة . يتم ا التخلص من ذاكرة المجموعة القديمة من الناحية الفنية هناك حالات يمكن أن تغير من الخطوات : إذا كان هناك مساحة في الذاكرة كافية بعد آخر عنصر في المجموعة ، فقط الخطوة رقموس تعمل و يتم الاستغاء عن باقي الخطوات . إذا كانت العملية هي تقليص سعة المصفوفة ، فقط الخطوة رقموس تعمل . إذا كان هناك من متغيرات ( مؤشر ) يشير إلى عنصر من المجموعة ، لن يتم ا التخلص من مجموعة القديمة ، لأن المتغيرات الأخرى سوف تستمر للإشارة إلى البيانات القديمة . الأداء ل الحصول على أداء سريع في البرامج ، ف إن ه من المهم ف هم الآثار المترتبة على خطوة ملئ المجموعة الجديدة ب قيمة افتراضية و عملية نسخ العناصر . كلما قمت ب تغيير حجم المصفوفة الديناميكية ، س يتم نسخ مجموعة ، و هو ما يعني بال تكرار ال حجز و التحرير في الذاكرة ، سيأخذ هذا وقت يتناسب مع حجم المصفوفة ، ف كلما زاد حجم المصفوفة زاد الوقت المطلوب ل تغيير الحجم . المصفوفة الديناميكية تمتلك العديد من المزايا عن المصفوفة العادية ، في استخدام ذاكرة التخزين المؤقت للبيانات ، الاكتناز ( استخدام ذاكرة منخفضة ) ، و الوصول العشوائي . . هذا يجعل المصفوفات الحيوية أداة جذابة ل بناء هياكل البيانات سهلة في ذاكرة التخزين المؤقت . و مع ذلك ، في لغات مثل بايثون أو جافا التي تفرض دلالات مرجعية ، المصفوفة الديناميكية عموما لن تخزن البيانات فعليا ، بل س يتم تخزين المؤشر إلى العنصر المتواجد في مناطق أخرى من الذاكرة . في هذه الحالة ، سوف لن تترتب العناصر ب شكل متجاور في الذاكرة ، و يتم فقدان العديد من المزايا من تخص ذاكرة التخزين المؤقت . مراجع أنواع البيانات بنى البيانات