أمثلة لاستخدام المصفوفات في جافا

بعض الأمثلة على استخدام المصفوفات في لغة جافا تُكمل الفهم


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

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

ولكن تلقيتُ رسالةً من أحد قراء مدونة علوم الدائمين أثير وأقتبسُ لك من رسالتها

ما هي استخدامات المصفوفات؟
ما هي استخدامات المصفوفات؟

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

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

(1) مثال اختيار الفائزين

يشتهر الاختيار العشوائي للفائزين في برامج المسابقات، وهذه حالة من الممكن أن تُستخدم فيها المصفوفات.

افترض أن المشاركة في المسابقة تتم عبر البريد الإلكتروني، فبنهاية المسابقة وحتى تقوم بإجراء الاختيار العشوائي يجب أن تسترجع قائمة تحتوي على جميع البُرُد (جمع بريد) للاختيار من بينها.

ولنفترض أن هذه هي القائمة

        String emails[] = {"t1@mmm.com", "oo@oo.com", "ccc.aa.com"};

تأتي إلى عملية الاختيار العشوائي، والتي من الممكن أن تكتمل باختيار رقم عشوائي يقع بين صفر و (طول المصفوفة – 1) بحيث أن كل رقم في هذا المدى يؤشر إلى بريد إلكتروني مقابل، والذي يقع عليه الاختيار هو الفائز.

        String emails[] = {"t1@mmm.com", "oo@oo.com", "ccc.aa.com"};

        int winner = (int) (Math.random() * 10) % 3;

        System.out.println(emails[winner]);

(2) مثال إرسال البيانات إلى واجهة المستخدم (نموذج)

أثناء تطويرك للبرامج ستمر عليك مفاهيم مهمة وهي:

  1. قواعد البيانات Database: وهي محل تخزين البيانات بحيث تستطيع الوصول إليها والتعديل عليها مستقبلاً.
  2. خلفية النظام Back-end: وهي نقطة الوصل بين قواعد البيانات وواجهة المستخدم، وفيها يوجد منطق النظام غالباً.
  3. واجهة النظام Front-end: وهي الواجهات التي يراها مستخدم النظام (شاشات وأزرار وصور وحقول وغيره).
إرسال البيانات إلى واجهة المستخدم
إرسال البيانات إلى واجهة المستخدم

تمرير البيانات بين هذه الأطراف الثلاث يكون أسهل عند تبني هيكل مشترك، والمصفوفات أحد هياكل البيانات التي يمكن الاعتماد عليها.

فبعد استرجاع البيانات من قواعد البينات من الممكن إعدادها في صورة مصفوفة وإرسالها إلى واجهة المستخدم لعرضها في الشكل المناسب.

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

        String formData[][] = {
            {"Ahmed", "15", "22"},
             {"Omer", "10", "15"},
             {"Ali", "13", "19"}
        };
        
        ShowForm(formData);

(3) مثال التعديل على بيانات النموذج

واستكمالاً للمثال السابق الخاص بواجهات المستخدم، ما زال بالإمكان الاستفادة من المصفوفات في واجهة المستخدم.

افترض أن المستخدم يستطيع التعديل على النموذج Form الذي يظهر أمامه، بمعنى يستطيع أن يعدل في اسم الطالب وعمره ودرجته، وبنهاية التعديل يضغط على زر لحفظ البيانات في قاعدة البيانات.

التعديل على بيانات النموذج
التعديل على بيانات النموذج

من الممكن أن يتم حفظ بيانات النموذج في مصفوفة ثنائية الأبعاد بحيث يمثل كل صف من الصفوف طالباً، وعند التعديل على بيانات الطالب يتم حفظها في المصفوفة.

وعند الضغط على زر حفظ يتم إرسال المصفوفة مرة أخرى إلى خلفية النظام Back-end والتي تتكفل بإكمال عملية حفها في قاعدة البيانات Database.

        String formData[][] = {
            {"Ahmed", "15", "22"},
             {"Omer", "10", "15"},
             {"Ali", "13", "19"}
        };
        

        SaveForm(form);

توجد العديد من الاستخدامات المهمة للمصفوفات في واجهة المستخدم كذلك ستظهر لك مع تقدمك في عالم البرمجة.

(4) طباعة الشهور

مثالٌ آخر بسيط وسهل الفهم لوضوحه، وهو عملية طباعة تحويل رقم الشهر إلى اسم.

مثلاً إذا كان رقم الشهر 3 تُطبع مارس بدلاً عنها. يبدو الحل بسيطاً وذلك باستخدام عبارة if واختبار الرقم وطباعة الاسم المناسب.

        int month = 10;
        
        if(month == 1){
            System.out.println("jan");
        }else if(month == 2){
            System.out.println("feb");
        }
        //....
        //إلى نهاية الأشهر

ومن الممكن أيضاً استخدام عبارة switch بدلاً عن if، ولكن هنالك حلٌ أجمل وأفضل باستخدام المصفوفات وهو كما ترى

        int month = 10;
        String months[] = {"","jan","feb","march","apr","may","jun","jul","aug","sep","oct","nov","dec"};
        System.out.println(months[month]);

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

خاتمة

دوماً يسأل المبرمج نفسه، ماذا أستخدم من الأدوات التي أعرفها في لغة جافا، ويكون الاختيار وفق خبرة المبرمج في التعامل مع هذه الأدوات.

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

مصطفى الطيب

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

اترك تعليقاً

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

مقالات ذات صلة

زر الذهاب إلى الأعلى