تعريف وتهيئة المصفوفات ثنائية الأبعاد
جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 2 من 66.
يمكن إنشاء مصفوفة ثنائية الأبعاد (2D array) في لغة C# باستخدام المصفوفات المتعرجة (jagged arrays)، وهي عبارة عن مصفوفات من المصفوفات، مما يسمح لك بتخزين البيانات في هيكل يشبه الشبكة.
لإنشاء مصفوفة متعرجة (jagged array) من الأعداد الصحيحة بـ 3 صفوف و 4 أعمدة:
int[][] grid = new int[3][];
grid[0] = new int[4];
grid[1] = new int[4];
grid[2] = new int[4];يقوم الكود أعلاه بإنشاء مصفوفة ثنائية الأبعاد تبدو كالتالي (تمت تهيئة جميع العناصر إلى 0):
[0, 0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]تهيئة مصفوفة متعرجة (jagged array) بالقيم:
int[][] matrix = new int[2][];
matrix[0] = new int[] {1, 2, 3};
matrix[1] = new int[] {4, 5, 6};يؤدي هذا إلى إنشاء مصفوفة ثنائية الأبعاد تتكون من صفين و3 أعمدة، وتحتوي على القيم التالية:
[1, 2, 3]
[4, 5, 6]للحصول على عدد الصفوف والأعمدة:
int rows = matrix.Length; // يعيد 2
int columns = matrix[0].Length; // يعيد 3 (للصف الأول)يتطلب الوصول إلى العناصر في مصفوفة ثنائية الأبعاد فهرسين: أحدهما للصف والآخر للعمود.
تعيين قيمة لموقع محدد (الصف 1، العمود 2):
grid[1][2] = 42;قراءة قيمة من موضع محدد (الصف 0، العمود 3):
int value = grid[0][3];تذكر أن فهارس المصفوفة تبدأ من 0، لذا فإن النطاقات الصالحة هي:
- الصفوف: من 0 إلى 2 (لمصفوفة مكونة من 3 صفوف)
- الأعمدة: من 0 إلى 3 (لمصفوفة مكونة من 4 أعمدة)
إذا حاولت الوصول إلى عنصر خارج هذه النطاقات (مثل grid[3][2])، فستحصل على IndexOutOfRangeException.
ورقة مرجعية
إنشاء مصفوفة متعرجة (مصفوفة ثنائية الأبعاد) في C#:
int[][] grid = new int[3][];
grid[0] = new int[4];
grid[1] = new int[4];
grid[2] = new int[4];التهيئة بالقيم:
int[][] matrix = new int[2][];
matrix[0] = new int[] {1, 2, 3};
matrix[1] = new int[] {4, 5, 6};الحصول على الأبعاد:
int rows = matrix.Length; // عدد الصفوف
int columns = matrix[0].Length; // عدد الأعمدة في الصف الأولالوصول إلى العناصر باستخدام فهرسين [row][column]:
grid[1][2] = 42; // تعيين قيمة
int value = grid[0][3]; // قراءة قيمةتبدأ فهارس المصفوفة من 0. يؤدي الوصول إلى فهارس خارج النطاق إلى حدوث IndexOutOfRangeException.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادتعريف وتهيئة المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادالمصفوفات المتعرجة (Jagged Arrays)عمليات المصفوفات الشائعةمراجعة - المصفوفات متعددة الأبعاد4تقنيات التحكم في التدفق
الإرجاع المبكرشروط الحمايةجمل القفز (goto)Break و Continueتسطيح الشروط المتداخلة7المعاملات المنطقية المتقدمة
التقييم المختصرالمعاملات المنطقية الشرطيةأولوية المعاملاتمراجعة - المعاملات المتقدمة2اتخاذ القرارات المتقدم
الشروط المتعددةالمنطق البولياني المعقدمقارنة بين If و Switchجمل Switch المتداخلةمراجعة - القرارات المتقدمة5معالجة الاستثناءات
أساسيات Try-Catchأنواع الاستثناءاتكتل Catch المتعددةالتعامل مع الملفاتكتلة FinallyUsing مقابل Try-Finallyاستثناءات مخصصةمراجعة - معالجة الأخطاء8نظام تحليل البيانات
إعداد جمع البياناتمنطق إدخال البيانات11HashSet الجزء الأول
ما هو الـ HashSet؟إضافة عنصرحذف عنصرالتحقق من وجود عنصرالفراغ والحجمملخص - HashSet3تحسينات الحلقات التكرارية
أداء الحلقات التكراريةالتكرار عبر البيانات المعقدةأنواع الحلقات التكراريةإعادة هيكلة الحلقات التكراريةملخص - الحلقات المحسنة6التعامل مع الـ Null
أساسيات الـ Null Referenceأنواع القيم القابلة للـ Nullأنماط التحقق من الـ Nullالبرمجة الدفاعيةملخص - أمان الـ Null