المصفوفات في جافا (Arrays in Java)

Sumayyah Aمنذ 6 أشهر

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته،،

موضوعنا اليوم سيكون عن المصفوفات التي هي من أهم تراكيب البيانات التي نرتب بها البيانات. وهي طريقة مستخدمة في أغلب لغات البرمجة العالية المستوى (high level programming languages).


ماهي المصفوفة؟

المصفوفة عبارة عن كائن (Object) يتم فيه تخزين عدد محدد من بيانات من نفس النوع.

قد يبدو الكلام النظري هنا صعب الفهم فدعنا نطرح مثالا للتوضيح؛ افترض أن لديك درجة لطالب في مادة الرياضيات وتود تخزينها في البرنامج، سيكون هذا سهلا للغاية كل ما عليك هو إنشاء متغير واحد فقط وتعطيه القيمة (درجة الطالب)، لكن ماذا لو أردت تخزين درجات جميع الطلاب في شعبة الرياضيات (100 طالب)!! من الصعب جدا أن نعرف 100 متغير، غير أن ذلك سيستهلك مساحة كبيرة من الذاكرة. فالحل هو إنشاء مصفوفة!

فهنا تكمن فائدة المصفوفات إذ أنك من خلال إنشاء مصفوفة واحدة حجمها 100 ستتمكن من تخزين ال 100 درجة في مكان واحد وباسم متغير واحد.

 

إذن، كيف تنشئ مصفوفة؟

هناك عدة أمور يجب تذكرها جيدًا عند إنشاء المصفوفات:

1-    يجب أن تكون جميع البيانات في المصفوفة من نفس النوع (data type).

مثال: أن تكون جميع درجات الطلاب من نوع int.

2-    يجب أن يكون حجم المصفوفة ثابت لا يتغير (fixed size).

مثال: أن يكون حجم مصفوفة درجات الطلاب 100 فلا يمكن إضافة درجة أي طالب بعد ال100.

 

تعريف المصفوفة (Array declaration) يكون كالآتي:

59cfd983215c5_.PNG.ab6ba9cab35af7807540abc612e238a9.PNG

مثال:

59cfd9762ad5e_arraydeclaration.PNG.97bf8f4a2293c3fa135bba2f2cfc51c9.PNG

فبعد هذا السطر نكون قد عرفنا المصفوفة فقط ولم ننشئ المصفوفة بعد، بمعنى أنه تم إنشاء اسم متغير يشير إلى null (لا شيء) في الذاكرة.

59cfd97ad065f_declarationinmemory.PNG.1b29e356fb6fc8d5b8e5042d1218ab57.PNG

إنشاء المصفوفة (Array creation) يكون كالآتي:

59cfd980eb581_.PNG.6c633a1f1ada8bf245bc3d22ccd96fa7.PNG

مثال:

59cfd974f206a_arraycreation.PNG.ab5279df61d5594e24c17369de05d5de.PNG

وبعد هذا السطر نكون قد أنشأنا المصفوفة، وأصبح اسم المتغير في الذاكرة يشير إلى المصفوفة التي أنشأناها، والبيانات بداخلها ستكون القيم الابتدائية الخاصة بنوع البيانات.

59cfd978a4ca8_creationinmemory.PNG.d065b0d04a915dc1fb390cca1c95f5ec.PNG

وبإمكاننا أيضا عمل تعريف وإنشاء للمصفوفة في نفس السطر كالآتي:

59cfd98224575_.PNG.7aa7d25863ae807df628c8e9e8c520c5.PNG

مثال:

59cfd979b4c0c_decandcrea.PNG.a954a86b71fce415c7d0a3fbb11b5189.PNG

 

حسنا، للتو تعلمنا كيف نعرف وننشئ مصفوفة، لكنها ستكون بقيم ابتدائية! ما معنى ذلك؟

أي أن المصفوفة ستكون معبأة بقيم ابتدائية خاصة بنوع البيانات فكما في مثالنا السابق ستكون القيم الابتدائية 0 لأن نوع البيانات هو int بينما لو كان نوع البيانات Boolean ستكون القيم الابتدائية false وهكذا على حسب نوع البيانات.

 

لكننا لا نريد ذلك! نريد أن نعبأ المصفوفة بالقيم التي نريد! ولكن كيف نصل إلى عناصر المصفوفة؟

كل المصفوفات عناصرها مرقمة من 0 إلى (حجم المصفوفة -1) ويسمى هذا الترقيم بال index فهو بمثابة عنوان للعنصر وبه نستطيع الوصول إليه.

 

مثلا لو كان عندي مصفوفة اسمها numbers حجمها 4 لتخزين أربعة أرقام فسيكون ال index  لها من 0 إلى 3، إذ أن العنصر الأول سيكون متواجد عند الindex رقم 0 والعنصر الثاني عند الindex رقم 1، وهكذا إلى نهاية المصفوفة.

59cfd97c539c8_numbersarray.PNG.36552424624b07e4186a74d5a87f9be7.PNG

 

مثلا لو أردنا وضع رقم 5 في العنصر الأول سنقوم بعمل الآتي:

; القيمة المراد وضعها =  [index] اسم المتغير

;numbers[0]=5

ولو أردنا وضع رقم 90 في العنصر الأخير سنقوم بعمل الآتي:

; القيمة المراد وضعها =  [حجم المصفوفة-1] اسم المتغير

;numbers[numbers.length-1]=90

59cfd97d8d950_numbers.PNG.0dd80071405160475b9ef8883c72dcd0.PNG

 

استخدمنا هنا خاصية خاصة بالمصفوفات تسمى length تعطينا حجم المصفوفة، وقمنا بإنقاص 1 من حجم المصفوفة لأننا سنتعامل مع index وآخر حد للindex هو حجم المصفوفة-1. وكيفية استدعاء هذه الخاصية كالآتي:

length.اسم المصفوفة

 

هذه الطريقة مفيدة في حالة أردنا إجراء تعديلات على عناصر محددة، لكن لو أردنا تعبئة المصفوفة كاملة فهذه الطريقة ستكون مضيعة للوقت!

لذلك نحتاج أن نسنخدم الloop وهي أن نمر على كل عنصر بالترتيب ونضع فيها القيمة التي نريدها.

 

مثلا لو أردنا إنشاء مصفوفة حجمها 5 فيها الأرقام من 1 إلى 5 سيكون كالآتي:

59cfd9775ffb4_code1-5.PNG.1e1b6f55daf683b38ae036ec5fd346f1.PNG

 *هنا i+1 لأن index يبدأ من الصفر ونحن نريد المصفوفة تبدأ من رقم 1.

 

ولو أردنا طباعة عناصر المصفوفة سنحتاج إلى loop أيضا كالتالي:

59cfd97fc37c6_print1-5.PNG.2d07fb81cd4466536f010734636bb09e.PNG

 

Output:

output.PNG.751494ce6191e0763eb51de4e9839ca0.PNG

وهكذا في جميع العمليات التي تجرى على المصفوفات سنحتاج إلى loop وننتبه إلى أن الloop يجب أن تنتهي عند آخر index في المصفوفة ولا تزيد لكيلا يظهر الخطأ ArraysOutOfBoundException.

 

*المصادر:

كتاب  Introduction to Java programming, Tenth Edition, Y. Daniel Liang.

كلمات دليلية:
0
إعجاب
729
مشاهدات
0
مشاركة
0
متابع
متميز
محتوى رهيب

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !