المصفوفات في لغة جافا | Arrays in Java
السلام عليكم ورحمة الله وبركاته ...
سأشرح اليوم المصفوفات في لغة جافا وسنتعرف عليها بالتفصيل بإذن الله
فهرس الموضوع : - اقتباس :
- أولا : ما هي المصفوفات .
- ثانيا : فهم مبدأ المصفوفات .
- ثالثا : تعريف واستخدام المصفوفة برمجيا .
- رابعا : جملة For Each .
- خامسا : المصفوفات متعددة الأبعاد .
- سادسا : مراجع مفيدة .
أولا : ما هي المصفوفات .
المصفوفة هي عبارة عن كائن يحتوي عدد من الكائنات من نوع واحد تخزنها في الذاكرة ، وتستطيع تشبيهها بمتغير بأكثر من قيمة .
ثانيا : فهم مبدأ المصفوفات .
بما أن المصفوفة هي عبارة عن كائن يحتوي أكثر من قيمة ، وجب توفير رقم يدل على القيمة المطلوبة عند تحديد هذه القيمة في الذاكرة أو عند استدعائها ، وبناءً على ذلك يوجد لكل قيمة رقم خاص يدل عليه ، حيث يبدأ الترقيم في المصفوفة من الرقم صفر (0) .
يمكنك أن تشبه المصفوفة بالجدول بهذا الشكل :
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]لاحظ أن الجدول اللذي رسمناه يبدأ الترقيم فيه من الرقم 0 وينتهي ب 4 بالتالي فسيتكون هذا الجدول من خمسة عناصر وكذلك بالنسبة للمصفوفات
ملاحظة : يوجد نوع اخر من المصفوفات سيتم توضيحه لاحقا وهو المصفوفات متعددة الابعاد لكن الآن سنركز على فهم المصفوفة العادية .
ثالثا : تعريف واستخدام المصفوفة برمجياَ .
أولا يجب ان تعرف أن المصفوفة يجب أن يكون لها نوع (Data type) وهذا النوع هو ما سيحدد نوع العناصر اللتي سيحتويها ، فكما ذكرنا سابقا المصفوفة هي كائن تحتوي عدد من الكائنات من نوع واحد ، ولذلك عند تعريف المصفوفة يتم تحديد ذلك النوع .
انظر إلى طريقة التعريف :
- الكود:
-
int x[] ;
لاحظ أننا عندما نعرف متغير عادي نقوم بتحديد نوع المتغير ثم اسمه ، لكن انتبه إلى الأقواس المربعة ، هذه الأقواس هي اللتي تبين أن هذا الكائن هو مصفوفة وليس متغيرا عادياَ .
يوجد أكثر من طريقة للتعامل مع المصفوفة :
- تحديد عدد عناصر المصفوفة :
ويتم بهذه الطريقة
- الكود:
-
int x[] = new int[4];
كلمة new في الكود تدل على أننا ننشئ مساحة جديدة لقيم المصفوفة في الذاكرة وهي من نوع int بـ 4 قيم من نفس النوع .
ملاحظة : لا تقم بالخلط بين عدد عناصر المصفوفة وبين رقم اخر قيمة فيها فهذه المصفوفة في المثال السابق هي عبارة عن مصفوفة تتكون من أربعة عناصر بمعنى أن ترقيم عناصرها يبدأ بالرقم 0 وينتهي بالرقم 3 .
لتحديد قيم هذه العناصر الأربعة قم بتحديد الترقيم بداخل الأقواس مثال :
- الكود:
-
x[0] = 46;
x[1] = 31;
x[2] = 70;
x[3] = 12;
هكذا يتم تحديد قيم عناصر المصفوفة واستدعاء أي عنصر يتطلب كتابة اسم المصفوفة مع وضع رقم العنصر بين الأقواس ، لتتأكد بنفسك قم بكتابة هذا الكود :
- الكود:
-
System.out.println(x[2]);
سيكون ناتج الطباعة هو 70 .
يوجد طريقة أخرى لتحديد قيم المصفوفة أثناء التعريف كالتالي :
- الكود:
-
int x[] = {46,31,70,12};
وسيكون الترتيب بنفس الطريقة السابقة بالتعداد من صفر إلى 3 لأننا وضعنا 4 عناصر .
يمكنك أيضا تعريف أكثر من مصفوفة في وقت واحد كما تفعل عند تعريف المتغيرات :
- الكود:
-
int x[],y[] ;
لكن ربما سيزعجك كتابة الأقواس كثيرا لذلك يمكنك أن تستبدل الطريقة السابقة بهذه الطريقة وكلا الطريقتين صحيحتين وستؤديان نفس العمل :
- الكود:
-
int [] x,y;
لكن ماذا لو كان لدي مصفوفة كبيرة جدا تحوي 100 عنصر مثلا كيف سأقوم بطباعتها ؟
جواب هذا السؤال في الجزء التالي من الموضوع
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة] .
رابعا : جملة For Each .
هي حالة خاصة من جملة for تستخدم للتعامل مع المصفوفات ، شاهد المثال الآتي وسيتم شرح كل كود بالتفصيل :
- الكود:
-
int x[] = {24,52,76};
for(int val : x){
System.out.println(val);
}
لاحظ أننا عرفنا المصفوفة بشكل عادي بدون أي مشاكل ، لننتقل إلى جملة for ستجد أنها تختلف كثيرا عن جملة for اللتي نستخدمها في العادة في الخانة الأولى وضعنا كائن من نفس نوع المصفوفة وفي الخانة الثانية نضع اسم المصفوفة ، لكن لاحظ أننا فصلنا بينها بنقطتين رأسيتين ( : ) وليس بفاصلة منقوطة ( ; ) وهذه هي الصيغة لهذه الجملة .
حيث تكون الخانة الأولى عبارة عن كائن يحوي عنصر واحد من عناصر المصفوفة في كل مرة بالترتيب إبتداءا من العنصر رقم صفر ، لذلك تم طباعة محتويات المصفوفة عند وضع المتغير val بداخل جملة الطباعة (لا تنسى ان تكون قيمة val أو أيا يكن الاسم اللذي حددته له من نفس نوع عناصر المصفوفة) .
الخانة الثانية نضع المصفوفة التي نريد ادراج عناصرها في المتغير في الخانة الأولى .
نتيجة تنفيذ الأمر :
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]ملاحظة : يمكنك أيضا استخدام for بشكل عادي لاستدعاء عناصر المصفوفة لكن هذه الطريقة أسهل وأسرع .
خامسا : المصفوفات متعددة الأبعاد .
المصفوفات متعددة الأبعاد هي باختصار عبارة عن مصفوفة عناصرها عبارة عن عدد من المصفوفات وكلها من نفس النوع ، بمعنى أننا نستبدل كل عنصر بداخل المصفوفة الرئيسية بمصفوفة أخرى .
انظر إلى الكود لتفهم الموضوع أكثر :
- الكود:
-
int [] [] x = { {4,3} , {7,11} } ;
System.out.println(x[0][1]);
System.out.println(x[1][1]);
System.out.println(x[0][0]);
System.out.println(x[1][0]);
لاحظ أننا استبدلنا كل عنصر من عناصر المصفوفة x بمصفوفة بالتالي اصبح لدينا مصفوفة بهذا الشكل :
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]وهكذا لاستدعاء أي عنصر نقوم بكتابة رقم عنصر المصفوفة x في المربع الأول وبالتالي نكون قد حددنا أي مصفوفة فرعية نقصد ثم في المربع الثاني نضع رقم العنصر في المصفوفة اللتي تم تحديدها في المربع اللذي قبله .
ولفهم الأمر بشكل كامل انظر إلى ناتج تنفيذ الكود في الأعلى :
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]