الرئيسية / جافا / أساسيات في البرمجة بالجافا / شرح المصفوفات في جافا كأبسط ما يكون، مفاهيم تستخدمها مع أي لغة برمجة

شرح المصفوفات في جافا كأبسط ما يكون، مفاهيم تستخدمها مع أي لغة برمجة

مرحباً و أهلاً و سهلاً مرة أخرى في مدونة علوم حيثُ نتحدثُ اليوم عن المصفوفات كمفهوم عام و عن المصفوفات في جافا بقليلٍ من التخصيص.

عندما تبدأُ بتعلم البرمجة بلغة الجافا ستكون -أو كانت- المصفوفات من أوائل ما تعلمته من أساسيات لغة الجافا.

لماذا؟

تعرف ما هو القطار أليس كذلك؟ و تعرف أيضاً كيف يتحرك القطار؟

قاطرة واحدة تُحرّك كُل تلك المقطورات لتصل إلى هدف معين و هي الوحيدة في القطار التي تملك محركاً و تتطلب صرف وقود.

ماذا سيحدث إذا كانت كل المقطورات منفصلة و تتحرك كل واحدة فيهم بمجهودها الخاص و تتطلب صرف الوقود و تواجد القائد و غير ذلك.

قطار

أليست نعمةً وجودُ نظام المقطورات؟

هذا هو مفهوم المصفوفات تماماً، فالمصفوفات وُجدت لتُساعدك على أن تتعامل مع الكائنات كمجموعات بدلاً عن التعامل مع كل كائن لوحده لأن ذلك يتطلب جهداً و وقتاً خاصاً لكل كائن.

لا تفكّر كثيراً، سيتضح لك الأمر حين تنتهي من مفهوم المفصفوفات في الجزء التالي.

المفهوم العام للمصفوفات لتطبقه على أي لغة برمجة

سأخبرُك في هذه الجزء بمفهوم المصفوفات عموماً دون التطرُّق للغات البرمجة و طريقة الكتابة و غير ذلك.

لماذا؟ كما ذكرتُ سابقاً في تدوينة عن لغات البرمجة فإن البرمجة هي طريقة تفكير قبل كُلّ شيء، مثل الروائي الذي يفكر في القصة و يكتبها.. أو يُنادي شخصاً آخر ليكتب عنه.

فالسّحرُ ليس في الكتابة و إنما في التفكير.

فلنعُد.. المصفوفات.

المصفوفات كما ذكرنا توفر لنا ميكانيكة -طريقة- للتعامل مع الكائنات كمجموعة واحدة، و مثلما ذكرنا مثال القطار أنظر هنا

المفهوم العام لشكل المصفوفة في لغات البرمجة
المفهوم العام لشكل المصفوفة

مفهوم المصفوفات الأول: المصفوفة عبارة عن قطار، كُل مقطورة في هذا القطار تحتوي على كائن، و هذا الكائن من الممكن أن يكون حرفاً أو رقماً أو كلمة أو انساناً …إلخ.

مفهوم المصفوفات الثاني: نستطيع ملء القطار (المصفوفة) بكائنات مختلفة (أظنها واضحة وسهلة) في المركبة الأولى محمد و الثانية أحمد و الثالثة محمود و هكذا ولكن يجب أن تكون جميع الكائنات من نفس النوع.

مفهوم المصفوفات الثالث: في كل خانة (مقطورة أو قاطرة) بالقطار (المصفوفة) بالإمكان وضع كائن واحد فقط –تذكَر هذا المفهوم-.

مفهوم المصفوفات الرابع: لن تستطيع الوصول إلى صديقك في أي مقطورة ما لم تكن تعرف رقم المقطورة التي يجلس فيها، الترقيم يبدأ من الصفر (القاطرة حيثُ السائق) ثم 1 ، 2 ، 3 ، ..إلخ.

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

هناك مفهومُ آخر للمصفوفات يجب أن تعرفه أيضاً، و هو المصفوفة ثنائيةُ الأبعاد.

المصفوفة السابقة و التي تحتوي على صفٍ واحدٍ تُسمى بالمصفوفة ذاتُ البعد الواحد، هل تذكرُ المفهوم الذي طلبتُ منك تذكُّره؟ لا نستطيع وضع أكثر من كائنٍ في الخانة الواحدة.

ولكنك تستطيع التلاعب بهذا الشرط لتزيد من قُدرة المصفوفة على حل المشاكل.. كيف ذلك؟

يكونُ ذلك عن طريق وضع مصفوفة داخل كُل خانة من خانات المصفوفة، مثل وضع قطار في كل مقطورة من القطارات، فالقطار كائنٌ واحد 🙂 أليس كذلك؟

الشكل العام لمصفوفة ثنائية الأبعاد
الشكل العام لمصفوفة ثنائية الأبعاد

حتى تتخيل هذا الأمر سأسهّلهُ عليك و تخيل بدلاً من ذلك أن المصفوفة ثنائية الأبعاد عبارة عن طبق بيض.

المشكلة الأساسية في طبق البيض هو كيفية الوصول إلى صديقك في مقطورته، في القطار كُان قولك “صديقي يجلس في القاطرة رقم 0” يكفي لنعلم أنه يجلس في الخانة الأولى.

ولكن الآن الطريقة مختلفة مع المصفوفة ثنائية الأبعاد.

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

  1. رقم الصف.
  2. رقم العمود.

المصفوفة ثنائية الأبعاد

لا تنسى أن الارقام تبدأ من صفر.

اللون الأزرق في الصور يمثل رقم الصف، و الرقم الأحمر يمثل رقم العمود.. بهذه البساطة.

فلنأخذ الأمر إلى مدى أبعد، هل تستطيع إنشاء مصفوفة ثلاثية الأبعاد بنفس المفاهيم؟

إذا استطعت فعل ذلك الآن فلا أعتقد أنه ستواجهك مشكلة في مفاهيم المصفوفات إطلاقاً.

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

  1. رقم الصف.
  2. رقم العمود.
  3. رقم المقطورة.
المفهوم العام لمصفوفة ثلاثية الأبعاد
المفهوم العام لمصفوفة ثلاثية الأبعاد

ماذا عن المصفوفة رباعية الأبعاد؟ بدون صورة 🙂 طبق بيض داخل طبق بيض، ما هي المعلومات المطلوبة لتحديد الموقع بالترتيب.

فكّر فيها قبل الإنتقال إلى الجزء التالي.

المعلومات المطلوبة لتحديد الموقع في المصفوفة رباعية الأبعاد:

  1. رقم الصف في الطبق الأول.
  2. رقم العمود في الطبق الأول.
  3. رقم الصف في الطبق الثاني (الداخلي).
  4. رقم العمود في الطبق الثاني (الداخلي).

إذاً كيف تُعرّف مصفوفة في لغة الجافا

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

        //مصفوفة ذات بعد واحد تحتوي على عنصرين
        String OmanTrain[] = {"Ahmed", "Mohammed"};
        
        //مصفوفة ذات بعدين تحتوي على عنصرين في كل بعد ثاني
        String JordanTrain[][] = { {"Ahmed", "Mohammed"}, {"Ali", "hussain"} };
        //مصفوفة ثلاثية الأبعاد تحتوي على عنصرين في البعد الثالث
        String EgyptTrain[][][] =  { {  {"Ahmed", "ali"} } };
        
        //تحديد طول المصفوفة بدون وضع القم
        String KuwaitTrain[]= new String[10];
        String SudanTrain[][] = new String[2][10];
        String AlgeriaTrain[][][] = new String[7][2][5];

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

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

عن مصطفى الطيب

صديقٌ لنُظمِ المعلُومات و عُلومِ الحَاسِب و مُختصٌ بهما، مُحبٌ للعِلمِ و نَشرِه. أُشاركُ معارفي و تَجاربي و خِبراتي في تَدويناتٍ و دوراتٍ من خلال مُدونةِ عُلوم.

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *