أساسيات المصفوفات ثنائية الأبعاد
جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 1 من 66.
في لغة C#، المصفوفة المتعرجة (jagged array) هي مصفوفة من المصفوفات، مما يشكل شبكة أو هيكلاً يشبه المصفوفة (matrix). إنها تشبه جدولاً يحتوي على صفوف وأعمدة، حيث يمكن لكل خلية أن تحتوي على قيمة. تعد المصفوفات المتعرجة مفيدة لتمثيل البيانات التي لها علاقة ثنائية الأبعاد، مثل رقعة الشطرنج، أو مخطط الجلوس، أو لعبة تعتمد على الشبكة.
إليك كيفية التصريح عن مصفوفة متعرجة (jagged array) وتهيئتها في C#:
data_type[][] arrayName = new dataType[numberOfRows][];dataType: نوع العناصر التي ستحتويها المصفوفة (على سبيل المثال، int، string، إلخ).
arrayName: الاسم الذي تطلقه على المصفوفة.
numberOfRows: عدد الصفوف في المصفوفة.
يجب بعد ذلك تهيئة كل صف بشكل منفصل:
arrayName[0] = new dataType[lengthOfFirstRow];
arrayName[1] = new dataType[lengthOfSecondRow];
// وهكذا...على سبيل المثال، لإنشاء مصفوفة متعرجة (jagged array) من الأعداد الصحيحة تتكون من 3 صفوف، حيث يحتوي كل صف على 4 أعمدة، يمكنك كتابة ما يلي:
int[][] matrix = new int[3][];
matrix[0] = new int[4];
matrix[1] = new int[4];
matrix[2] = new int[4];يمكنك أيضاً تهيئة مصفوفة متعرجة (jagged array) بالقيم مباشرةً:
int[][] matrix = new int[][] {
new int[] {1, 2, 3},
new int[] {4, 5, 6},
new int[] {7, 8, 9}
};ملاحظة: تستخدم هذه المنصة مترجمًا (compiler) لإصدار أقدم من C# 12. إن بناء جملة تعبيرات المجموعة الأقصر (collection expression syntax) الذي تم تقديمه في C# 12 (على سبيل المثال، int[][] matrix = [[1, 2], [3, 4]];) غير مدعوم هنا. يرجى استخدام بناء جملة التهيئة التقليدي new int[][] { ... } الموضح أعلاه.
التحدي
سهلقم بتهيئة مصفوفة متعرجة (jagged array) بالقيم التالية:
5, 7, 10, 24, 41
86, 13, 683, 64, 13
42, 46, 791, 111, 9
86, 88, 1845, 5, 15897
9, 1, 5, 5, 6مهمتك هي تهيئة المصفوفة المتعرجة بشكل صحيح بهذه القيم المحددة والتأكد من أن البرنامج يقوم بطباعة المصفوفة بشكل صحيح.
ملاحظة: تستخدم هذه المنصة مترجمًا أقدم من C# 12. بناء جملة تعبيرات المجموعة في C# 12 (مثل int[][] matrix = [[1, 2], [3, 4]];) غير مدعوم. استخدم بناء جملة التهيئة التقليدي بدلاً من ذلك:int[][] matrix = new int[][] { new int[] {1, 2}, new int[] {3, 4} };
جرّب بنفسك
using System;
class Program
{
static void Main(string[] args)
{
int[][] matrix = {
// اكتب كودك هنا
};
// اطبع المصفوفة
int rows = matrix.Length;
for (int i = 0; i < rows; i++)
{
int cols = matrix[i].Length;
for (int j = 0; j < cols; j++)
{
Console.Write(matrix[i][j] + " ");
}
Console.WriteLine();
}
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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