Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

الخوارزمياتتعريف مصفوفة ذات بعدين

  • طرق تعريف مصفوفة ذات بعدين
  • طريقة تعريف مصفوفة ذات بعدين و إعطائها القيم لاحقاً
  • بناء المصفوفة ذات البعدين
  • طريقة تعريف مصفوفة ذات بعدين و إعطائها القيم مباشرةً عند إنشائها
  • الوصول إلى عناصر المصفوفة ذات البعدين بواسطة حلقات متداخلة

طرق تعريف مصفوفة ذات بعدين

لتعريف مصفوفة ذات بعدين, يوجد طريقتين:

  1. تعرّف المصفوفة و تعطيها القيم لاحقاً.
  2. تعرّف المصفوفة و تعطيها القيم مباشرةً عند تعريفها.

المصفوفة ذات البعدين شبيهة كثيرة بالمصفوفة ذات البعد الواحد.
الفرق الوحيد بينهما أنه للوصول إلى عنصر في مصفوفة ذات بعدين يجب أن تحدد index السطر و index العمود الموجود فيه العنصر.

طريقة تعريف مصفوفة ذات بعدين و إعطائها القيم لاحقاً

لتعريف مصفوفة من أي نوع سواء int, float, double, String إلخ.. نضع فقط الرمزين [][] بعد تحديد نوع البيانات التي سنخزنها فيها.
بهذه الطريقة يفهم الكمبيوتر أننا نريد تعريف مصفوفة ذات بعدين لها نوع محدد.


طريقة تعريف المصفوفة بدون إعطائها قيم أولية

في المثال التالي بتعريف مصفوفة ذات بعدين إسمها matrix, نوعها int و تتألف من 3 أسطر و 5 أعمدة, أي من 15 عنصر.

مثال

int[][] matrix = new int[3][5];
int[][] matrix = new int[3][5];

شرح الكود


  • كلمة new int نضعها من أجل لغة جافا, و هي تضع القيمة 0 أو 0.0 أو null كقيمة إفتراضية لجميع عناصر المصفوفة على حسب نوعها بشكل تلقائي كما شرحنا في الدروس السابقة.

شكل المصفوفة في الذاكرة



طريقة الوصول لعناصر المصفوفة

للوصول إلى أي عنصر موجود في المصفوفة, يجب كتابة إسم المصفوفة, ثم تحديد index السطر و index العمود الموجود فيه العنصر الذي نريد الوصول إليه.
ستتعلم ذلك من الأمثلة.



طريقة إعطاء قيم لعناصر المصفوفة

المثال التالي يوضح طريقة إعطاء قيمة لعناصر المصفوفة matrix.
العناصر التي قمنا بتغيير قيمها هي التالية:

  • matrix[0][0] و هذا يعني العنصر الموجود في السطر الأول العمود الأول.
  • matrix[1][2] و هذا يعني العنصر الموجود في السطر الثاني العمود الثالث.
  • matrix[2][4] و هذا يعني العنصر الموجود في السطر الثالث العمود الخامس.

مثال

matrix[0][0] = 6;
matrix[1][2] = -3;
matrix[2][4] = 100;
matrix[0][0] = 6; matrix[1][2] = -3; matrix[2][4] = 100;

شكل المصفوفة في الذاكرة



طريقة عرض القيم المخزنة في عناصر المصفوفة

في المثال التالي قمنا بعرض قيم جميع العناصر الموجودة في المصفوفة matrix حتى نتأكد إذا كانت القيم قد تغيرت.

مثال

// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الأول
System.out.print("matrix[0][0]: " + matrix[0][0] + "\n" );
System.out.print("matrix[0][1]: " + matrix[0][1] + "\n" );
System.out.print("matrix[0][2]: " + matrix[0][2] + "\n" );
System.out.print("matrix[0][3]: " + matrix[0][3] + "\n" );
System.out.print("matrix[0][4]: " + matrix[0][4] + "\n\n" );
// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثاني
System.out.print("matrix[1][0]: " + matrix[1][0] + "\n" );
System.out.print("matrix[1][1]: " + matrix[1][1] + "\n" );
System.out.print("matrix[1][2]: " + matrix[1][2] + "\n" );
System.out.print("matrix[1][3]: " + matrix[1][3] + "\n" );
System.out.print("matrix[1][4]: " + matrix[1][4] + "\n\n" );
// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثالث
System.out.print("matrix[2][0]: " + matrix[2][0] + "\n" );
System.out.print("matrix[2][1]: " + matrix[2][1] + "\n" );
System.out.print("matrix[2][2]: " + matrix[2][2] + "\n" );
System.out.print("matrix[2][3]: " + matrix[2][3] + "\n" );
System.out.print("matrix[2][4]: " + matrix[2][4] + "\n\n" );
// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الأول System.out.print("matrix[0][0]: " + matrix[0][0] + "\n" ); System.out.print("matrix[0][1]: " + matrix[0][1] + "\n" ); System.out.print("matrix[0][2]: " + matrix[0][2] + "\n" ); System.out.print("matrix[0][3]: " + matrix[0][3] + "\n" ); System.out.print("matrix[0][4]: " + matrix[0][4] + "\n\n" ); // هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثاني System.out.print("matrix[1][0]: " + matrix[1][0] + "\n" ); System.out.print("matrix[1][1]: " + matrix[1][1] + "\n" ); System.out.print("matrix[1][2]: " + matrix[1][2] + "\n" ); System.out.print("matrix[1][3]: " + matrix[1][3] + "\n" ); System.out.print("matrix[1][4]: " + matrix[1][4] + "\n\n" ); // هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثالث System.out.print("matrix[2][0]: " + matrix[2][0] + "\n" ); System.out.print("matrix[2][1]: " + matrix[2][1] + "\n" ); System.out.print("matrix[2][2]: " + matrix[2][2] + "\n" ); System.out.print("matrix[2][3]: " + matrix[2][3] + "\n" ); System.out.print("matrix[2][4]: " + matrix[2][4] + "\n\n" );


البرنامج كاملاً

نتيجة التشغيل

كود الجافا

public class Matrix {
public static void main (String[] args) {
int[][] matrix = new int[3][5]; // هنا قمنا بتعريف مصفوفة تتألف من 3 أسطر و 5 أعمدة
matrix[0][0] = 6; // هنا قمنا بتغيير قيمة العنصر الموجود في السطر الأول و العامود الأول
matrix[1][2] = -3; // هنا قمنا بتغيير قيمة العنصر الموجود في السطر الثاني و العامود الثالث
matrix[2][4] = 100; // هنا قمنا بتغيير قيمة العنصر الموجود في السطر الثالث و العامود الخامس
// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الأول
System.out.print("matrix[0][0]: " + matrix[0][0] + "\n" );
System.out.print("matrix[0][1]: " + matrix[0][1] + "\n" );
System.out.print("matrix[0][2]: " + matrix[0][2] + "\n" );
System.out.print("matrix[0][3]: " + matrix[0][3] + "\n" );
System.out.print("matrix[0][4]: " + matrix[0][4] + "\n\n" );
// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثاني
System.out.print("matrix[1][0]: " + matrix[1][0] + "\n" );
System.out.print("matrix[1][1]: " + matrix[1][1] + "\n" );
System.out.print("matrix[1][2]: " + matrix[1][2] + "\n" );
System.out.print("matrix[1][3]: " + matrix[1][3] + "\n" );
System.out.print("matrix[1][4]: " + matrix[1][4] + "\n\n" );
// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثالث
System.out.print("matrix[2][0]: " + matrix[2][0] + "\n" );
System.out.print("matrix[2][1]: " + matrix[2][1] + "\n" );
System.out.print("matrix[2][2]: " + matrix[2][2] + "\n" );
System.out.print("matrix[2][3]: " + matrix[2][3] + "\n" );
System.out.print("matrix[2][4]: " + matrix[2][4] + "\n\n" );
}
}
public class Matrix { public static void main (String[] args) { int[][] matrix = new int[3][5]; // هنا قمنا بتعريف مصفوفة تتألف من 3 أسطر و 5 أعمدة matrix[0][0] = 6; // هنا قمنا بتغيير قيمة العنصر الموجود في السطر الأول و العامود الأول matrix[1][2] = -3; // هنا قمنا بتغيير قيمة العنصر الموجود في السطر الثاني و العامود الثالث matrix[2][4] = 100; // هنا قمنا بتغيير قيمة العنصر الموجود في السطر الثالث و العامود الخامس // هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الأول System.out.print("matrix[0][0]: " + matrix[0][0] + "\n" ); System.out.print("matrix[0][1]: " + matrix[0][1] + "\n" ); System.out.print("matrix[0][2]: " + matrix[0][2] + "\n" ); System.out.print("matrix[0][3]: " + matrix[0][3] + "\n" ); System.out.print("matrix[0][4]: " + matrix[0][4] + "\n\n" ); // هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثاني System.out.print("matrix[1][0]: " + matrix[1][0] + "\n" ); System.out.print("matrix[1][1]: " + matrix[1][1] + "\n" ); System.out.print("matrix[1][2]: " + matrix[1][2] + "\n" ); System.out.print("matrix[1][3]: " + matrix[1][3] + "\n" ); System.out.print("matrix[1][4]: " + matrix[1][4] + "\n\n" ); // هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثالث System.out.print("matrix[2][0]: " + matrix[2][0] + "\n" ); System.out.print("matrix[2][1]: " + matrix[2][1] + "\n" ); System.out.print("matrix[2][2]: " + matrix[2][2] + "\n" ); System.out.print("matrix[2][3]: " + matrix[2][3] + "\n" ); System.out.print("matrix[2][4]: " + matrix[2][4] + "\n\n" ); } }

بناء المصفوفة ذات البعدين

إذا ركزت جيداً في المصفوفة الثنائية matrix ستجد أنها تساوي ثلاثة مصفوفات أحادية (أي كأنها ثلاثة vector) فوق بعض كالتالي.

نستنتج أن كل سطر في المصفوفة عبارة عن مصفوفة ذات بعد واحد.
إذاً تعريف مصفوفة ذات بعدين يعني تعريف مصفوفة أساسية و كل عنصر في هذه المصفوفة يمثل مصفوفة ذات بعد واحد.
ستتضح لك هذه الفكرة أكثر عندما تتعلم طريقة تعريف مصفوفة ذات بعدين مع إعطائها قيم أولية مباشرةً عند إنشائها.

طريقة تعريف مصفوفة ذات بعدين و إعطائها القيم مباشرةً عند إنشائها

إذا أردنا إدخال القيم مباشرةً عند تعريف المصفوفة نضع الرمزين { } بعد رمز المساواة = مما يعني أننا نريد إعطاء قيم للمصفوفة و تحديد عدد عناصرها مباشرةً عند إنشائها.
بما أن كل سطر عبارة عن مصفوفة ذات بعد واحد, نضع كل سطر بين { } مع الإشارة إلى أنه يجب وضع فاصلة بين كل مصفوفتين ( سطرين ) و بين كل قيمتين ( عنصرين ). و لا تنسى وضع الفاصلة المنقوطة في الأخير.


ملاحظة: سنعيد نفس البرنامج السابق بطريقة أخرى.
الآن, لنفترض أننا نريد تعريف مصفوفة إسمها matrix مع إعطائها 15 قيمة أولية مباشرةً عند إنشائها.


طريقة تعريف المصفوفة مع إعطاء عناصرها قيم أولية

المثال التالي يعلمك طرق تعريف مصفوفة ذات بعدين نوعها int مع إعطائها قيم أولية مباشرةً عند إنشائها.

مثال


  • الطريقة الأولى: و التي يستخدمها معظم المبرمجون لأنها أسهل في القراءة و التعديل.
int[][] matrix = {
{6, 0, 0, 0, 0},
{0, 0, -3, 0, 0},
{0, 0, 0, 0, 100}
};
int[][] matrix = { {6, 0, 0, 0, 0}, {0, 0, -3, 0, 0}, {0, 0, 0, 0, 100} };

  • الطريقة الثانية: هي أن تكتب كل شيء في سطر واحد.
int[][] matrix = { {6, 0, 0, 0, 0}, {0, 0, -3, 0, 0}, {0, 0, 0, 0, 100} };
int[][] matrix = { {6, 0, 0, 0, 0}, {0, 0, -3, 0, 0}, {0, 0, 0, 0, 100} };

  • هنا لأننا وضعنا فيها 15 قيمة مباشرةً عند إنشائها, أصبحت المصفوفة أيضاً تتألف من 15 عنصر تماماً كما عرّفناها (أي نفس عدد الأسطر و الأعمدة) و يمكننا تغير القيم إذا أردنا لاحقاً, لكننا لا نستطيع تغير عدد العناصر.

شكل المصفوفة في الذاكرة



طريقة إعطاء قيم لعناصر المصفوفة

في المثال التالي قمنا بتغيير قيمة كل عنصر في المصفوفة.

مثال

matrix[0][0] = 10;
matrix[0][1] = 20;
matrix[0][2] = 30;
matrix[0][3] = 40;
matrix[0][4] = 50;
matrix[1][0] = 60;
matrix[1][1] = 70;
matrix[1][2] = 80;
matrix[1][3] = 90;
matrix[1][4] = 100;
matrix[2][0] = 110;
matrix[2][1] = 120;
matrix[2][2] = 130;
matrix[2][3] = 140;
matrix[2][4] = 150;
matrix[0][0] = 10; matrix[0][1] = 20; matrix[0][2] = 30; matrix[0][3] = 40; matrix[0][4] = 50; matrix[1][0] = 60; matrix[1][1] = 70; matrix[1][2] = 80; matrix[1][3] = 90; matrix[1][4] = 100; matrix[2][0] = 110; matrix[2][1] = 120; matrix[2][2] = 130; matrix[2][3] = 140; matrix[2][4] = 150;

شكل المصفوفة في الذاكرة



طريقة عرض القيم المخزنة في عناصر المصفوفة

في المثال التالي قمنا بعرض قيم جميع العناصر الموجودة في المصفوفة matrix حتى نتأكد إذا كانت القيم قد تغيرت أم لا.

مثال

// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الأول
System.out.print("matrix[0][0]: " + matrix[0][0] + "\n" );
System.out.print("matrix[0][1]: " + matrix[0][1] + "\n" );
System.out.print("matrix[0][2]: " + matrix[0][2] + "\n" );
System.out.print("matrix[0][3]: " + matrix[0][3] + "\n" );
System.out.print("matrix[0][4]: " + matrix[0][4] + "\n\n" );
// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثاني
System.out.print("matrix[1][0]: " + matrix[1][0] + "\n" );
System.out.print("matrix[1][1]: " + matrix[1][1] + "\n" );
System.out.print("matrix[1][2]: " + matrix[1][2] + "\n" );
System.out.print("matrix[1][3]: " + matrix[1][3] + "\n" );
System.out.print("matrix[1][4]: " + matrix[1][4] + "\n\n" );
// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثالث
System.out.print("matrix[2][0]: " + matrix[2][0] + "\n" );
System.out.print("matrix[2][1]: " + matrix[2][1] + "\n" );
System.out.print("matrix[2][2]: " + matrix[2][2] + "\n" );
System.out.print("matrix[2][3]: " + matrix[2][3] + "\n" );
System.out.print("matrix[2][4]: " + matrix[2][4] + "\n\n" );
// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الأول System.out.print("matrix[0][0]: " + matrix[0][0] + "\n" ); System.out.print("matrix[0][1]: " + matrix[0][1] + "\n" ); System.out.print("matrix[0][2]: " + matrix[0][2] + "\n" ); System.out.print("matrix[0][3]: " + matrix[0][3] + "\n" ); System.out.print("matrix[0][4]: " + matrix[0][4] + "\n\n" ); // هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثاني System.out.print("matrix[1][0]: " + matrix[1][0] + "\n" ); System.out.print("matrix[1][1]: " + matrix[1][1] + "\n" ); System.out.print("matrix[1][2]: " + matrix[1][2] + "\n" ); System.out.print("matrix[1][3]: " + matrix[1][3] + "\n" ); System.out.print("matrix[1][4]: " + matrix[1][4] + "\n\n" ); // هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثالث System.out.print("matrix[2][0]: " + matrix[2][0] + "\n" ); System.out.print("matrix[2][1]: " + matrix[2][1] + "\n" ); System.out.print("matrix[2][2]: " + matrix[2][2] + "\n" ); System.out.print("matrix[2][3]: " + matrix[2][3] + "\n" ); System.out.print("matrix[2][4]: " + matrix[2][4] + "\n\n" );


البرنامج كاملاً

نتيجة التشغيل

كود الجافا

public class Matrix {
public static void main (String[] args) {
// هنا قمنا بتعريف مصفوفة تتألف من 3 أسطر و 5 أعمدة
int[][] matrix = {
{6, 0, 0, 0, 0},
{0, 0, -3, 0, 0},
{0, 0, 0, 0, 100}
};
// هنا قمنا بتغير قيم العناصر الموجودة في السطر الأول
matrix[0][0] = 10;
matrix[0][1] = 20;
matrix[0][2] = 30;
matrix[0][3] = 40;
matrix[0][4] = 50;
// هنا قمنا بتغير قيم العناصر الموجودة في السطر الثاني
matrix[1][0] = 60;
matrix[1][1] = 70;
matrix[1][2] = 80;
matrix[1][3] = 90;
matrix[1][4] = 100;
// هنا قمنا بتغير قيم العناصر الموجودة في السطر الثالث
matrix[2][0] = 110;
matrix[2][1] = 120;
matrix[2][2] = 130;
matrix[2][3] = 140;
matrix[2][4] = 150;
// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الأول
System.out.print("matrix[0][0]: " + matrix[0][0] + "\n" );
System.out.print("matrix[0][1]: " + matrix[0][1] + "\n" );
System.out.print("matrix[0][2]: " + matrix[0][2] + "\n" );
System.out.print("matrix[0][3]: " + matrix[0][3] + "\n" );
System.out.print("matrix[0][4]: " + matrix[0][4] + "\n\n" );
// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثاني
System.out.print("matrix[1][0]: " + matrix[1][0] + "\n" );
System.out.print("matrix[1][1]: " + matrix[1][1] + "\n" );
System.out.print("matrix[1][2]: " + matrix[1][2] + "\n" );
System.out.print("matrix[1][3]: " + matrix[1][3] + "\n" );
System.out.print("matrix[1][4]: " + matrix[1][4] + "\n\n" );
// هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثالث
System.out.print("matrix[2][0]: " + matrix[2][0] + "\n" );
System.out.print("matrix[2][1]: " + matrix[2][1] + "\n" );
System.out.print("matrix[2][2]: " + matrix[2][2] + "\n" );
System.out.print("matrix[2][3]: " + matrix[2][3] + "\n" );
System.out.print("matrix[2][4]: " + matrix[2][4] + "\n\n" );
}
}
public class Matrix { public static void main (String[] args) { // هنا قمنا بتعريف مصفوفة تتألف من 3 أسطر و 5 أعمدة int[][] matrix = { {6, 0, 0, 0, 0}, {0, 0, -3, 0, 0}, {0, 0, 0, 0, 100} }; // هنا قمنا بتغير قيم العناصر الموجودة في السطر الأول matrix[0][0] = 10; matrix[0][1] = 20; matrix[0][2] = 30; matrix[0][3] = 40; matrix[0][4] = 50; // هنا قمنا بتغير قيم العناصر الموجودة في السطر الثاني matrix[1][0] = 60; matrix[1][1] = 70; matrix[1][2] = 80; matrix[1][3] = 90; matrix[1][4] = 100; // هنا قمنا بتغير قيم العناصر الموجودة في السطر الثالث matrix[2][0] = 110; matrix[2][1] = 120; matrix[2][2] = 130; matrix[2][3] = 140; matrix[2][4] = 150; // هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الأول System.out.print("matrix[0][0]: " + matrix[0][0] + "\n" ); System.out.print("matrix[0][1]: " + matrix[0][1] + "\n" ); System.out.print("matrix[0][2]: " + matrix[0][2] + "\n" ); System.out.print("matrix[0][3]: " + matrix[0][3] + "\n" ); System.out.print("matrix[0][4]: " + matrix[0][4] + "\n\n" ); // هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثاني System.out.print("matrix[1][0]: " + matrix[1][0] + "\n" ); System.out.print("matrix[1][1]: " + matrix[1][1] + "\n" ); System.out.print("matrix[1][2]: " + matrix[1][2] + "\n" ); System.out.print("matrix[1][3]: " + matrix[1][3] + "\n" ); System.out.print("matrix[1][4]: " + matrix[1][4] + "\n\n" ); // هنا قمنا بعرض جميع قيم العناصر الموجودة في السطر الثالث System.out.print("matrix[2][0]: " + matrix[2][0] + "\n" ); System.out.print("matrix[2][1]: " + matrix[2][1] + "\n" ); System.out.print("matrix[2][2]: " + matrix[2][2] + "\n" ); System.out.print("matrix[2][3]: " + matrix[2][3] + "\n" ); System.out.print("matrix[2][4]: " + matrix[2][4] + "\n\n" ); } }

الوصول إلى عناصر المصفوفة ذات البعدين بواسطة حلقات متداخلة

للوصول إلى جميع عناصر المصفوفة matrix بسرعة و بكود أقل مهما كان حجم المصفوفة نستخدم الحلقات المتداخلة.
فمثلاً تستطيع إستخدام حلقتين for لإعطاء قيم لجميع العناصر الموجودة في المصفوفة أو لعرض جميع قيمها دفعة واحدة.


مثال

في المثال التالي, قمنا بتعريف مصفوفة إسمها matrix تتألف من 3 أسطر و 5 أعمدة, أي من 15 عنصر.
بعدها جعلنا المستخدم يدخل قيمة لكل عنصر من عناصرها.
في الأخير قمنا بعرض جميع القيم التي أدخلها المستخدم في المصفوفة.

نتيجة التشغيل

  • إذا قام المستخدم بإدخال القيم 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140 و 150 عند تشغيل البرنامج, ستكون نتيجة التشغيل كالتالي.

كود الجافا

import java.util.Scanner;
public class Matrix {
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
// هنا قمنا بتعريف مصفوفة تتألف من 3 أسطر و 5 أعمدة
int[][] matrix = new int[3][5];
// لإعطاء قيمة لكل عنصر في المصفوفة j و i هنا قمنا بتعريف الحلقتين
for(int i=0; i<3; i++)
{
for(int j=0; j<5; j++)
{
System.out.print("Enter matrix["+i+"]["+j+"]: ");
matrix[i][j] = input.nextInt();
}
System.out.print("\n");
}
System.out.print("matrix values \n");
// لعرض قيم جميع العناصر الموجودة في المصفوفة j و i هنا قمنا بتعريف الحلقتين
for(int i=0; i<3; i++)
{
for(int j=0; j<5; j++)
{
System.out.print(matrix[i][j] + "\t");
}
System.out.print("\n");
}
System.out.print("\n");
}
}
import java.util.Scanner; public class Matrix { public static void main (String[] args) { Scanner input = new Scanner(System.in); // هنا قمنا بتعريف مصفوفة تتألف من 3 أسطر و 5 أعمدة int[][] matrix = new int[3][5]; // لإعطاء قيمة لكل عنصر في المصفوفة j و i هنا قمنا بتعريف الحلقتين for(int i=0; i<3; i++) { for(int j=0; j<5; j++) { System.out.print("Enter matrix["+i+"]["+j+"]: "); matrix[i][j] = input.nextInt(); } System.out.print("\n"); } System.out.print("matrix values \n"); // لعرض قيم جميع العناصر الموجودة في المصفوفة j و i هنا قمنا بتعريف الحلقتين for(int i=0; i<3; i++) { for(int j=0; j<5; j++) { System.out.print(matrix[i][j] + "\t"); } System.out.print("\n"); } System.out.print("\n"); } }

شرح الكود


int[][] matrix = new int[3][5];
int[][] matrix = new int[3][5];
  • هنا قمنا بتعريف مصفوفة تتألف من 3 أسطر و 5 أعمدة.


for(int i=0; i<3; i++)
{
for(int j=0; j<5; j++)
{
System.out.print("Enter matrix["+i+"]["+j+"]: ");
matrix[i][j] = input.nextInt();
}
System.out.print("\n");
}
for(int i=0; i<3; i++) { for(int j=0; j<5; j++) { System.out.print("Enter matrix["+i+"]["+j+"]: "); matrix[i][j] = input.nextInt(); } System.out.print("\n"); }
  • هنا قمنا بإنشاء الحلقتين i و j لجعل المستخدم يدخل قيمة لكل عنصر في المصفوفة.
  • الحلقة i للإنتقال من سطر إلى آخر في المصفوفة, و الحلقة j للإنتقال من عمود إلى آخر في كل سطر في المصفوفة.
  • هنا في كل دورة من دورات الحلقة i سيتم إنشاء حلقة j للمرور على جميع العناصر الموجودة في نفس السطر.
  • في كل دورة من دورات الحلقة j سيطلب من المستخدم إدخال قيمة لعنصر, ثم سيتم تخزينها في هذا العنصر.
  • بعد توقف الحلقة j, أي بعد إعطاء قيمة لجميع العناصر الموجودة, سيتم النزول على سطر جديد بسبب الرمز \n.
  • إذاً الحلقتين i و j يعملان كالتالي:
    • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 0 سيطلب من المستخدم إدخال قيمة للعنصر matrix[0][0], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 1 سيطلب من المستخدم إدخال قيمة للعنصر matrix[0][1], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 2 سيطلب من المستخدم إدخال قيمة للعنصر matrix[0][2], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 3 سيطلب من المستخدم إدخال قيمة للعنصر matrix[0][3], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 4 سيطلب من المستخدم إدخال قيمة للعنصر matrix[0][4], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 0 سيطلب من المستخدم إدخال قيمة للعنصر matrix[1][0], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 1 سيطلب من المستخدم إدخال قيمة للعنصر matrix[1][1], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 2 سيطلب من المستخدم إدخال قيمة للعنصر matrix[1][2], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 3 سيطلب من المستخدم إدخال قيمة للعنصر matrix[1][3], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 4 سيطلب من المستخدم إدخال قيمة للعنصر matrix[1][4], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 0 سيطلب من المستخدم إدخال قيمة للعنصر matrix[2][0], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 1 سيطلب من المستخدم إدخال قيمة للعنصر matrix[2][1], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 2 سيطلب من المستخدم إدخال قيمة للعنصر matrix[2][2], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 3 سيطلب من المستخدم إدخال قيمة للعنصر matrix[2][3], بعدها سيتم تخزين القيمة التي أدخلها فيه.
    • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 4 سيطلب من المستخدم إدخال قيمة للعنصر matrix[2][4], بعدها سيتم تخزين القيمة التي أدخلها فيه.


for(int i=0; i<3; i++)
{
for(int j=0; j<5; j++)
{
System.out.print(matrix[i][j] + "\t");
}
System.out.print("\n");
}
for(int i=0; i<3; i++) { for(int j=0; j<5; j++) { System.out.print(matrix[i][j] + "\t"); } System.out.print("\n"); }
  • هنا قمنا بإنشاء الحلقتين i و j لعرض جميع قيم المصفوفة.
  • الحلقة i للإنتقال من سطر إلى آخر في المصفوفة, و الحلقة j للإنتقال من عمود إلى آخر في كل سطر في المصفوفة.
  • هنا في كل دورة من دورات الحلقة i سيتم إنشاء حلقة j لعرض قيمة جميع العناصر الموجودة في نفس السطر.
  • في كل دورة من دورات الحلقة j سيتم عرض قيمة عنصر, ثم وضع بعض المسافات الفارغة بسبب الرمز \t.
  • بعد توقف الحلقة j (أي بعد عرض قيم جميع العناصر الموجودة في نفس السطر) سيتم النزول على سطر جديد بسبب الرمز \n.
  • إذاً الحلقتين i و j يعملان كالتالي:
    • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 0 سيطبع له أن قيمة العنصر matrix[0][0] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 1 سيطبع له أن قيمة العنصر matrix[0][1] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 2 سيطبع له أن قيمة العنصر matrix[0][2] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 3 سيطبع له أن قيمة العنصر matrix[0][3] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 4 سيطبع له أن قيمة العنصر matrix[0][4] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 0 سيطبع له أن قيمة العنصر matrix[1][0] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 1 سيطبع له أن قيمة العنصر matrix[1][1] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 2 سيطبع له أن قيمة العنصر matrix[1][2] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 3 سيطبع له أن قيمة العنصر matrix[1][3] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 4 سيطبع له أن قيمة العنصر matrix[1][4] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 0 سيطبع له أن قيمة العنصر matrix[2][0] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 1 سيطبع له أن قيمة العنصر matrix[2][1] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 2 سيطبع له أن قيمة العنصر matrix[2][2] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 3 سيطبع له أن قيمة العنصر matrix[2][3] تساوي القيمة التي أدخلها له سابقاً.
    • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 4 سيطبع له أن قيمة العنصر matrix[2][4] تساوي القيمة التي أدخلها له سابقاً.

شكل المصفوفة في الذاكرة قبل و بعد

  • في البداية تم إنشاءها في الذاكرة كما في الصورة التالية.


  • بعد أن قمنا بإدخال القيم فيها, أصبح شكلها في الذاكرة كما في الصورة التالية.

الآن, أنت فهمت جيداً كيف يمكنك تعريف مصفوفة ذات بعدين و الوصول إلى عناصرها و تغيير و عرض قيمها.

في الدرس التالي ستتعرف على الخاصية length التي تستخدم لمعرفة عدد عناصر المصفوفة بالإضافة إلى عدة طرق يمكن إتباعها لتخزين, مقارنة, و عرض قيم عناصر المصفوفة.

نرجو منك الإنتقال لدورة البرمجة للمبتدئين الجديدة التي أنشأنها كبديل أفضل لهذه الدورة ففي تلك الدورة قمنا بتبسيط الشرح أكثر و جعلناك قادر على تجربة الكود بشكل مباشر في موقعنا.


دورة تعلم البرمجة للمبتدئين >