المصفوفات الثلاثية (Three-Dimensional Arrays) في البرمجة
تُعد المصفوفات (Arrays) من أهم هياكل البيانات في البرمجة، حيث تُستخدم لتخزين مجموعة من العناصر المتشابهة داخل متغير واحد. وعندما نحتاج إلى تمثيل بيانات أكثر تعقيدًا من الصفوف والأعمدة، نلجأ إلى المصفوفات الثلاثية الأبعاد (3D Arrays) التي تسمح بتخزين البيانات في ثلاثة محاور: الطول والعرض والعمق.
ما هي المصفوفة الثلاثية؟
يمكن اعتبار المصفوفة الثلاثية امتدادًا للمصفوفة الثنائية.
- المصفوفة الأحادية: قائمة عناصر.
- المصفوفة الثنائية: جدول مكوّن من صفوف وأعمدة.
- المصفوفة الثلاثية: مجموعة من الجداول الثنائية مكدسة فوق بعضها البعض.
الشكل التصوري:
Layer 0 [1 2 3] [4 5 6] Layer 1 [7 8 9] [10 11 12]
في هذا المثال لدينا:
- بعد أول (Layer) = 2
- بعد ثانٍ (Row) = 2
- بعد ثالث (Column) = 3
كيفية تمثيل المصفوفة الثلاثية
الصيغة العامة:
array[depth][row][column]
حيث:
- depth = الطبقة أو العمق.
- row = الصف.
- column = العمود.
مثال:
array[1][0][2]
يعني:
- الطبقة رقم 1
- الصف رقم 0
- العمود رقم 2
مثال عملي بلغة C++
إنشاء مصفوفة ثلاثية
#include <iostream>
using namespace std;
int main() {
int numbers[2][2][3] = {
{
{1, 2, 3},
{4, 5, 6}
},
{
{7, 8, 9},
{10, 11, 12}
}
};
cout << numbers[1][0][2];
return 0;
}
الناتج:9/
لأن: numbers[1][0][2] يشير إلى العنصر 9.
الوصول إلى جميع العناصر
باستخدام ثلاث حلقات متداخلة:
#include <iostream>
using namespace std;
int main() {
int arr[2][2][3] = {
{
{1,2,3},
{4,5,6}
},
{
{7,8,9},
{10,11,12}
}
};
for(int i=0; i<2; i++) {
for(int j=0; j<2; j++) {
for(int k=0; k<3; k++) {
cout << arr[i][j][k] << " ";
}
cout << endl;
}
cout << "------" << endl;
}
return 0;
}
الناتج:
1 2 3 4 5 6 ------ 7 8 9 10 11 12 ------
مثال بلغة Python إنشاء مصفوفة ثلاثية:
array = [
[
[1, 2, 3],
[4, 5, 6]
],
[
[7, 8, 9],
[10, 11, 12]
]
]
print(array[1][1][0])
الناتج:10
استخدامات المصفوفات الثلاثية
تُستخدم المصفوفات الثلاثية في العديد من التطبيقات العملية، منها:
1. معالجة الصور الملونة
الصورة الملونة تتكون من:
- Red (R)
- Green (G)
- Blue (B)
يمكن تمثيلها كمصفوفة ثلاثية:
image[height][width][RGB]
مثال:
image[100][200][0]
يمثل قيمة اللون الأحمر للبكسل الموجود عند الإحداثيات (100, 200).
2. الألعاب ثلاثية الأبعاد
في ألعاب الفيديو يمكن تمثيل العالم على شكل مكعبات:
world[x][y][z]
كل عنصر يمثل كتلة أو جسمًا في موقع معين داخل العالم.
3. البيانات الزمنية
مثال على تخزين درجات الحرارة:
temperature[month][day][hour]
بحيث يمكن معرفة درجة الحرارة في ساعة معينة من يوم معين في شهر معين.
مميزات المصفوفات الثلاثية
- تنظيم البيانات المعقدة بسهولة.
- سرعة الوصول إلى العناصر باستخدام الفهارس (Indexes).
- مناسبة لتمثيل البيانات متعددة الأبعاد.
- مفيدة في الرسومات والمحاكاة والألعاب.
عيوب المصفوفات الثلاثية
- تستهلك ذاكرة أكبر من المصفوفات الأحادية والثنائية.
- قد تصبح إدارة الفهارس معقدة عند زيادة عدد الأبعاد.
- حجمها غالبًا ثابت بعد إنشائها في كثير من اللغات.
الفرق بين المصفوفة الثنائية والثلاثية
المصفوفة الثنائية : صفوف وأعمدة , المصفوفة الثلاثية : طبقات وصفوف وأعمدة
المصفوفة الثنائية : arr[row][column] , المصفوفة الثلاثية : arr[layer][row][column]
المصفوفة الثنائية : تمثل جدولًا , المصفوفة الثلاثية : تمثل مجموعة جداول
المصفوفة الثنائية : أبسط في التعامل , المصفوفة الثلاثية : أكثر تعقيدًا
المصفوفة الثلاثية هي بنية بيانات تسمح بتخزين المعلومات في ثلاثة أبعاد، مما يجعلها مناسبة لتمثيل الصور الملونة، والعوالم ثلاثية الأبعاد، والبيانات الزمنية المعقدة. ورغم أنها تحتاج إلى ذاكرة أكبر وإدارة أدق للفهارس، فإنها توفر طريقة فعالة ومنظمة للتعامل مع كميات كبيرة من البيانات متعددة الأبعاد داخل البرامج.
