تعريف وتهيئة المصفوفات ثنائية الأبعاد
جزء من قسم Logic & Flow في رحلة C# على Coddy. الدرس 2 من 66.
يمكن إنشاء مصفوفة ثنائية الأبعاد في C# باستخدام المصفوفات المتعرجة، وهي مصفوفات من المصفوفات، مما يتيح لك تخزين البيانات في بنية شبيهة بالشبكة.
لإنشاء مصفوفة متعرجة من الأعداد الصحيحة تتكون من 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]هيّئ مصفوفة متعرّجة بقيم:
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;اقرأ قيمة من موضع محدد (row 0، العمود 3):
int value = grid[0][3];تذكّر أن فهارس المصفوفات تبدأ من 0، لذا فإن النطاقات الصالحة هي:
- Rows: من 0 إلى 2 (لمصفوفة مكوّنة من 3 صفوف)
- Columns: من 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تدرّب بنفسك: مترجم C# عبر الإنترنت