منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
المصفوفات و انواعها في الجافا ..(5) - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90)
+--- قسم : قسم دورات المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=113)
+---- قسم : دورة تعلم java (http://vb4arb.com/vb/forumdisplay.php?fid=137)
+---- الموضوع : المصفوفات و انواعها في الجافا ..(5) (/showthread.php?tid=6532)



المصفوفات و انواعها في الجافا ..(5) - RaggiTech - 19-10-12

كاتب الموضوع : Friendassist

ما هي المصفوفات arrays ؟

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

وتنقسم المصفوفات الي نوعين :
1_المصفوفات احادية البعد .. Single Array
2_المصفوفات متعددة الابعاد .. Multi-Dimensional Array

اولا : المصفوفات احادية البعد .. :

مثال علي تهيئة مصفوفة احادية البعد لاستخدامها:

كود :
[color=#000000][COLOR=#0000bb]int [/color][color=#007700][] [/color][color=#0000bb]myarray [/color][color=#007700]={[/color][color=#0000bb]1[/color][color=#007700],[/color][color=#0000bb]2[/color][color=#007700],[/color][color=#0000bb]3[/color][COLOR=#007700]};  
[/COLOR][/COLOR]


كود :
[color=#000000][COLOR=#0000bb]int ages[/color][color=#007700][] = { [/color][color=#0000bb]10[/color][color=#007700], [/color][color=#0000bb]20[/color][color=#007700], [/color][color=#0000bb]30[/color][color=#007700], [/color][color=#0000bb]40[/color][color=#007700], [/color][color=#0000bb]50[/color][color=#007700], [/color][color=#0000bb]60[/color][color=#007700], [/color][color=#0000bb]70[/color][color=#007700], [/color][color=#0000bb]80[/color][color=#007700], [/color][color=#0000bb]90[/color][color=#007700], [/color][color=#0000bb]100 [/color][COLOR=#007700]};  
[/COLOR][/COLOR]

طريقة حجز قيمة المصفوفة احادية البعد في الذاكرة :









مصفوفات لمتغيرات اخري غير العددية مثل الحروف و القيم المنطقية:

مصفوفة للقيم المنطقية boolean :

كود :
[color=#000000][COLOR=#0000bb]boolean results[/color][color=#007700][] = { [/color][color=#0000bb]true[/color][color=#007700], [/color][color=#0000bb]false[/color][color=#007700], [/color][color=#0000bb]true[/color][color=#007700], [/color][color=#0000bb]false [/color][COLOR=#007700]};  
[/COLOR][/COLOR]

مصفوفة لايام الاسبوع اي قيم string :


كود :
[color=#000000][COLOR=#0000bb]String days[/color][color=#007700][] = { [/color][color=#0000bb]“Mon”[/color][color=#007700], [/color][color=#0000bb]“Tue”[/color][color=#007700], [/color][color=#0000bb]“Wed”[/color][color=#007700], [/color][color=#0000bb]“Thu”[/color][color=#007700], [/color][color=#0000bb]“Fri”[/color][color=#007700], [/color][color=#0000bb]“Sat”[/color][COLOR=#007700],
  [/COLOR][color=#0000bb]“Sun”[/color][COLOR=#007700]};  
[/COLOR][/COLOR]

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

مثال : برنامج يقوم بعمل استدعاء لكافة عناصر مصفوفة احادية .. و يضع عناصرها في اداة jComboBox :

كود :
[color=#000000][COLOR=#007700]private [/color][color=#0000bb]void jButton1ActionPerformed[/color][color=#007700]([/color][color=#0000bb]java[/color][color=#007700].[/color][color=#0000bb]awt[/color][color=#007700].[/color][color=#0000bb]event[/color][color=#007700].[/color][color=#0000bb]ActionEvent evt[/color][COLOR=#007700]) {                                        
      [/COLOR][color=#0000bb]jComboBox1[/color][color=#007700].[/color][color=#0000bb]removeAllItems[/color][COLOR=#007700]();
        [/COLOR][color=#0000bb]int ages[/color][color=#007700][] = { [/color][color=#0000bb]1[/color][color=#007700], [/color][color=#0000bb]2[/color][color=#007700], [/color][color=#0000bb]3[/color][color=#007700], [/color][color=#0000bb]4[/color][color=#007700], [/color][color=#0000bb]5[/color][color=#007700], [/color][color=#0000bb]6[/color][color=#007700], [/color][color=#0000bb]7[/color][color=#007700], [/color][color=#0000bb]8[/color][color=#007700], [/color][color=#0000bb]9[/color][color=#007700], [/color][color=#0000bb]10 [/color][COLOR=#007700]};
      for( [/COLOR][color=#0000bb]int i[/color][color=#007700]=[/color][color=#0000bb]0[/color][color=#007700]; [/color][color=#0000bb]i[/color][color=#007700]<[/color][color=#0000bb]ages[/color][color=#007700].[/color][color=#0000bb]length[/color][color=#007700]; [/color][color=#0000bb]i[/color][COLOR=#007700]++ ){
      [/COLOR][color=#0000bb]jComboBox1[/color][color=#007700].[/color][color=#0000bb]addItem[/color][color=#007700]([/color][color=#0000bb]ages[/color][color=#007700][[/color][color=#0000bb]i[/color][COLOR=#007700]]);
     }
    }  
[/COLOR][/COLOR]


كود :
[color=#000000][COLOR=#0000bb]jComboBox1[/color][color=#007700].[/color][color=#0000bb]removeAllItems[/color][COLOR=#007700]();  
[/COLOR][/COLOR]

لتفريغ حقل ال jComboBox ..
كود :
[color=#000000][COLOR=#0000bb]int ages[/color][color=#007700][] = { [/color][color=#0000bb]1[/color][color=#007700], [/color][color=#0000bb]2[/color][color=#007700], [/color][color=#0000bb]3[/color][color=#007700], [/color][color=#0000bb]4[/color][color=#007700], [/color][color=#0000bb]5[/color][color=#007700], [/color][color=#0000bb]6[/color][color=#007700], [/color][color=#0000bb]7[/color][color=#007700], [/color][color=#0000bb]8[/color][color=#007700], [/color][color=#0000bb]9[/color][color=#007700], [/color][color=#0000bb]10 [/color][COLOR=#007700]};  
[/COLOR][/COLOR]

تم تعريف مصفوفة تتكون من عشرة قيم عددية صحيحة ..
كود :
[color=#000000][COLOR=#007700]for( [/color][color=#0000bb]int i[/color][color=#007700]=[/color][color=#0000bb]0[/color][color=#007700]; [/color][color=#0000bb]i[/color][color=#007700]<[/color][color=#0000bb]ages[/color][color=#007700].[/color][color=#0000bb]length[/color][color=#007700]; [/color][color=#0000bb]i[/color][COLOR=#007700]++ ){
      [/COLOR][color=#0000bb]jComboBox1[/color][color=#007700].[/color][color=#0000bb]addItem[/color][color=#007700]([/color][color=#0000bb]ages[/color][color=#007700][[/color][color=#0000bb]i[/color][COLOR=#007700]]);
     }  
[/COLOR][/COLOR]
قمنا تعريف متغير .. يمر علي جميع القيم العددية في المصفوفة بالترتيب حتي اخر قيمة .. ومن ثم وضع قيمة الحلقة النهائية في jComboBox ..

البرنامج الناتج :









برنامج بسيط علي المصفوفات احادية البعد ولكن بطريقة اخري :

كود :
[color=#000000][COLOR=#0000bb]int [/color][color=#007700]array []={[/color][color=#0000bb]16[/color][color=#007700],[/color][color=#0000bb]2[/color][color=#007700],[/color][color=#0000bb]77[/color][color=#007700],[/color][color=#0000bb]40[/color][color=#007700],[/color][color=#0000bb]1000[/color][color=#007700],[/color][color=#0000bb]2500[/color][COLOR=#007700]};
[/COLOR][color=#0000bb]int n [/color][color=#007700], [/color][color=#0000bb]result[/color][color=#007700]=[/color][color=#0000bb]0[/color][COLOR=#007700];
for ([/COLOR][color=#0000bb]n[/color][color=#007700]=[/color][color=#0000bb]0[/color][color=#007700];[/color][color=#0000bb]n[/color][color=#007700]<[/color][color=#0000bb]5[/color][color=#007700];[/color][color=#0000bb]n[/color][COLOR=#007700]++)
{
[/COLOR][color=#0000bb]result [/color][color=#007700]+= array[[/color][color=#0000bb]n[/color][COLOR=#007700]];
}
[/COLOR][color=#0000bb]list1[/color][color=#007700].[/color][color=#0000bb]removeAll[/color][COLOR=#007700]();
[/COLOR][color=#0000bb]list1[/color][color=#007700].[/color][color=#0000bb]add[/color][color=#007700]([/color][color=#dd0000]""[/color][color=#007700]+[/color][color=#0000bb]result[/color][COLOR=#007700]);  
[/COLOR][/COLOR]

حيث قمنا بتعريف متغير صحيح n .. يقوم هذا المتغير بالمرور علي عناصر اول خمسة عناصر بالمصفوفة و يقوم بجمعهم ويسند القيمة الي متغير اخر من خلال الامر التالي :
كود :
[color=#000000][COLOR=#0000bb]result [/color][color=#007700]+= array[[/color][color=#0000bb]n[/color][COLOR=#007700]]  
[/COLOR][/COLOR]









ثانيا : المصفوفات متعددة الابعاد .. :

مثال علي تهيئة مصفوفة متعددة الابعاد لاستخدامها:

كود :
[color=#000000][COLOR=#0000bb]int [/color][color=#007700][][] Array = {{[/color][color=#0000bb]1[/color][color=#007700],[/color][color=#0000bb]2[/color][color=#007700],[/color][color=#0000bb]3[/color][color=#007700]},{[/color][color=#0000bb]10[/color][color=#007700],[/color][color=#0000bb]20[/color][color=#007700],[/color][color=#0000bb]30[/color][COLOR=#007700]}};  
[/COLOR][/COLOR]


كود :
[color=#000000][COLOR=#0000bb] int numbers [/color][color=#007700][][]  = {{[/color][color=#0000bb]1000[/color][color=#007700],[/color][color=#0000bb]2000[/color][color=#007700],[/color][color=#0000bb]3000[/color][color=#007700],[/color][color=#0000bb]4000[/color][color=#007700]},{[/color][color=#0000bb]100[/color][color=#007700],[/color][color=#0000bb]200[/color][color=#007700],[/color][color=#0000bb]300[/color][color=#007700],[/color][color=#0000bb]400[/color][COLOR=#007700]}};  
[/COLOR][/COLOR]

طريقة حجز قيمة المصفوفة متعددة الابعاد في الذاكرة :







(مثال متقدم كثيرا يربط بين معظم ما اتي في الدروس السابقة من if , loop , strings , array )

كود :
[color=#000000][COLOR=#0000bb] int [/color][color=#007700][][] [/color][color=#0000bb]arrayOfInts [/color][color=#007700]= {{[/color][color=#0000bb]32[/color][color=#007700],[/color][color=#0000bb]87[/color][color=#007700],[/color][color=#0000bb]3[/color][color=#007700],[/color][color=#0000bb]58[/color][color=#007700]},{[/color][color=#0000bb]12[/color][color=#007700],[/color][color=#0000bb]1076[/color][color=#007700],[/color][color=#0000bb]2000[/color][color=#007700],[/color][color=#0000bb]8[/color][color=#007700]},{[/color][color=#0000bb]622[/color][color=#007700],[/color][color=#0000bb]127[/color][color=#007700],[/color][color=#0000bb]77[/color][color=#007700],[/color][color=#0000bb]955[/color][COLOR=#007700]}};
     [/COLOR][color=#0000bb]int searchFor [/color][color=#007700]=[/color][color=#0000bb]12[/color][COLOR=#007700];
     [/COLOR][color=#0000bb]int i[/color][color=#007700],[/color][color=#0000bb]j [/color][color=#007700]= [/color][color=#0000bb]0[/color][COLOR=#007700];
     [/COLOR][color=#0000bb]boolean foundIt[/color][color=#007700]=[/color][color=#0000bb]false[/color][COLOR=#007700];
     [/COLOR][color=#0000bb]search[/color][COLOR=#007700]:
     for ( [/COLOR][color=#0000bb]i[/color][color=#007700]=[/color][color=#0000bb]0[/color][color=#007700]; [/color][color=#0000bb]i[/color][color=#007700]<[/color][color=#0000bb]arrayOfInts[/color][color=#007700].[/color][color=#0000bb]length [/color][color=#007700]; [/color][color=#0000bb]i[/color][COLOR=#007700]++){
        for([/COLOR][color=#0000bb]j[/color][color=#007700]=[/color][color=#0000bb]0 [/color][color=#007700];[/color][color=#0000bb]j[/color][color=#007700]<[/color][color=#0000bb]arrayOfInts[/color][color=#007700][[/color][color=#0000bb]i[/color][color=#007700]].[/color][color=#0000bb]length[/color][color=#007700];[/color][color=#0000bb]j[/color][COLOR=#007700]++){
             if ([/COLOR][color=#0000bb]arrayOfInts[/color][color=#007700][[/color][color=#0000bb]i[/color][color=#007700]][[/color][color=#0000bb]j[/color][color=#007700]] == [/color][color=#0000bb]searchFor[/color][COLOR=#007700])
             {
               [/COLOR][color=#0000bb]foundIt[/color][color=#007700]=[/color][color=#0000bb]true[/color][COLOR=#007700];
             }
         }
     }
     if ([/COLOR][color=#0000bb]foundIt[/color][COLOR=#007700]){
     [/COLOR][color=#0000bb]jLabel1[/color][color=#007700].[/color][color=#0000bb]setText[/color][color=#007700]([/color][color=#dd0000]"found" [/color][color=#007700]+ [/color][color=#0000bb]searchFor [/color][color=#007700]+ [/color][color=#dd0000]"at" [/color][color=#007700]+ [/color][color=#0000bb]i [/color][color=#007700]+[/color][color=#dd0000]","[/color][color=#007700]+ [/color][color=#0000bb]j[/color][COLOR=#007700]);
            }  
[/COLOR][/COLOR]

ويستخدم لتحديد موقع متغير في مصفوفة متعددة الابعاد و هو 12 و موقعة 3,4
و الدالة عبارة عن دالة بحث تستخدم الحلقات التكرارية للمرور علي جميع متغيرات المصفوفة
للحصول علي موقع المتغير في الذاكرة و اذا تمكنت من تحديد الموقع تضعه في اداة ليبل من خلال الشرط if ....







في النهاية انا جاهز ان شاء الله لاي استفسار ...

---------------------------------------------------
روابط تحميل الامثلة :
المثال الاول :
http://vb4arb.com/vb/uploaded/18_01350637840.rar
المثال الثاني :
http://vb4arb.com/vb/uploaded/18_11350637840.rar
المثال الثالث :
http://vb4arb.com/vb/uploaded/18_21350637840.rar

--------------------------------------------------
و السلام عليكم ورحمة الله ...