تعريف وتهيئة المصفوفات ثنائية الأبعاد
جزء من قسم 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.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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