الوصول إلى عناصر المصفوفة ثنائية الأبعاد
جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 3 من 66.
يستخدم الوصول إلى العناصر في مصفوفة ثنائية الأبعاد بناء جملة مشابهاً للمصفوفات العادية، ولكنه يتطلب فهرسين: أحدهما للصف والآخر للعمود.
ملاحظة: في لغة C#، يوجد نوعان من المصفوفات متعددة الأبعاد: المصفوفات المستطيلة (int[,]) والمصفوفات المتعرجة (int[][]). يغطي هذا الدرس المصفوفات المتعرجة، حيث يكون كل صف عبارة عن مصفوفة بحد ذاته.
أنشئ مصفوفة متعرجة (jagged array) تحتوي على 3 صفوف و4 أعمدة:
int[][] grid = new int[3][];
grid[0] = new int[4];
grid[1] = new int[4];
grid[2] = new int[4];تعيين قيمة لموقع محدد (فهرس الصف 1، فهرس العمود 2):
grid[1][2] = 42;قراءة قيمة من موضع محدد (فهرس الصف 0، فهرس العمود 3):
int value = grid[0][3];بما أن الفهارس تبدأ من 0، فإن فهرس الصف 0 هو الصف الأول وفهرس العمود 3 هو العمود الرابع.
تذكر أن فهارس المصفوفة تبدأ من 0، لذا فإن نطاقات الفهرس الصالحة هي:
- الصفوف: الفهرس من 0 إلى 2 (لمصفوفة مكونة من 3 صفوف — الصف الأول هو الفهرس 0، والثاني هو الفهرس 1، والثالث هو الفهرس 2)
- الأعمدة: الفهرس من 0 إلى 3 (لمصفوفة مكونة من 4 أعمدة — العمود الأول هو الفهرس 0، والثاني هو الفهرس 1، وهكذا)
grid[3][2])، فستحصل على IndexOutOfRangeException.التحدي
متوسطاكتب طريقة تسمى getElement تأخذ ثلاث وسائط:
- مصفوفة صحيحة ثنائية الأبعاد (
int[][] matrix) - فهرس الصف (
int row) - فهرس العمود (
int col)
يجب أن تعيد الطريقة العنصر الموجود في الموقع المحدد إذا كانت الفهارس صالحة. إذا كان أي من الفهرسين خارج النطاق، يجب أن تعيد الطريقة -1.
ورقة مرجعية
الوصول إلى العناصر في مصفوفة ثنائية الأبعاد باستخدام فهرسين: [row][column]
إنشاء مصفوفة ثنائية الأبعاد:
int[][] grid = new int[3][];
grid[0] = new int[4];
grid[1] = new int[4];
grid[2] = new int[4];تعيين قيمة:
grid[1][2] = 42;قراءة قيمة:
int value = grid[0][3];تبدأ فهارس المصفوفة من 0. يؤدي الوصول إلى العناصر خارج النطاقات الصالحة إلى حدوث IndexOutOfRangeException.
جرّب بنفسك
public class GetElement
{
public static int getElement(int[][] array, int row, int col)
{
// اكتب كودك هنا
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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