المصفوفات
Arrays
الأهداف
أن يعرف المتدرب المصفوفات
أن ينشئ المتدرب مصفوفة
أن يعرف المتدرب أبعاد المصفوفة
أن يحدد المتدرب قيمة لعنصر في المصفوفة
أن يغير المتدرب المعلومات داخل المصفوفة
أن ينشئ المتدرب مصفوفات متعددة الأبعاد
أن يفرز المتدرب المصفوفة
العرض
أهلا ومرحبا بكم جميعا ونواصل مسيرتنا ـ بعون الله ـ مع الجافا
مرحبا بك استاذنا وكل عام وأنت بخير بمناسبة بدء العام الخامس من عمر موقعكم ـ المدرس العربي ـ وندعو الله تعالى أن يجعله في ميزان حسناتكم
شكرا جزيلا وأرحب بك صديقي العزيز
ما عنوان درسنا اليوم ؟
كل عام وأنتم جميعا بخير سوف نتناول في درس اليوم كيفية اسنعمال المصفوفات
ما المقصود بالمصفوفات ؟
قبل أن نتعرف على تعريف المصفوفات من الناحية البرمجية ـ وأقصد هنا تعريفها ضمن سياق البرمجة ـ حيث نعرفها مسبقا من دراسة الرياضيات ـ أود أن أشير إلى أننا في الدروس السابقة قد تعرفنا على الطريقة الأساسية لتخزين المعلومات في برامجنا السابقة وهي للتذكرة وضع هذه المعلومات في متغير ولكن هذه الطريقة تناسب البرامج البسيطة ذات البعد الواحد ولكن اذا أردت أن تصمم برنامجا للقيام بأعمال الكنترول في مدرستك فإنك ستكون في حاجة الى وسيلة معقدة للتعامل مع 1000 طالب في صفوف دراسية مختلفة هذه الطريقة هي المصفوفات ـ أود هنا أن أشير الى برنامج الادارة المدرسية الذي كنت أعمل عليه خلال وجودي في مدرسة حفص بن راشد الثانوية بمسقط الزاهرة والجميلة بسلطنة عمان ـ وهو برنامج رائع صصمه الاستاذ عماد ، ونهاد من شركة صخر الرائدة في وضع برامج بالعربية هذه الاشارة العابرة للاشادة بهذا البرنامج وبجهود شركة صخر المشكورة كما أود أن أشكر في هذا السياق الأستاذ / سليمان الكندي مدير دائرة تقنيات التعليم والاستاذ / خالد السيابي مدير نظم المعلومات لجهودهما في هذا السياق بوزارة التربية والتعليم بسلطنة عمان
اذا التعريف المحدد للمصفوفات ضمن سياقنا هو ...؟
المصفوفات هي مجموعة من المتغيرات المتماثلة في النوع والمرتبطة معا أو بعبارة أخرى هي عبارة عن مجموعة من المتغيرات باسم واحد
مثال بسيط بعد إذنك ؟
كما يحدث في المتغيرات يتم انشاء المصفوفات بتحديد نوع المتغير المراد تنظيمه ضمن المصفوفة واسم المصفوفة وللتفرقة يجب اضافة قوسين [ ] وتنشأ المصفوفات لتحتوي أي نوع من المعلومات التي يمكن أن تخزن في متغير واليك هذا المثال
int[] samy = { 90,85,85,75,70,95 };
String[] netWeight;
String netWeight[];
boolean[] GradeStudents;
int[] primes = new int[300];
لاحظت في الأمثلة السابقة أن المثالين الثاني والثالث متشابهين الا في مكان القوسين فهل هذه الملاحظة صحيحة ؟
نعم يا صديقي ملاحظتك سليمة حيث أن لغة الجافا تتيح حرية في التحرك ومرونة في الموضع الذي يمكن أن نضع فيه القوسين المعقفين فيمكنك وضعها بعد اسم المتغير أو بعد نوع المتغير
دعنا الآن نناقش أنواع المصفوفات
هيا بنا ولنبدأ بالمصفوفات أحادية البعد
المصفوفة أحادية البعد هي المصفوفة التي لها بعد واحد فقط ـ سطر واحد من الأرقام التي تتراوح بين الصفر ورقم العنصر الأعلى المحدد للمصفوفة
وهل للمصفوفة عناصر ؟
نعم والعناصر هنا بمعنى عدد البنود التي يمكن تخزينها في المصفوفة فكل بند في المصفوفة يسمى عنصرا وبعبارة أخرى عندما ننشئ مصفوفة نقوم بتخزين قيمة أولية فيها باستعمال الجملة نيو مع نوع المتغير كما في المثال التالي
int[] primes = new int[300];
ننشئ في هذا المثال مصفوفة من الأرقام الصحيحة تسمى أولية ـ الأعداد الأولية ـ وتحتوي هذه المصفوفة على 300 عنصرا يمكننا استعمالها لتخزين 300 عدد أولي
هل يجب تحديد عدد العناصر ؟
نعم عندما تنشئ مصفوفة باستعمال الجملة نيو يجب تحديد عدد العناصر ونعطي لكل عنصر قيمة أولية تعتمد على نوع المصفوفة كما يلي
المصفوفات العددية تحتوي القيمة الأولية 0
المصفوفات الحرفية تحتوي القيمة'0\' ــ وهكذا
false المصفوفات البولية تحتوي القيمة
null مصفوفات سلاسل الحروف تحتوي على القيمة الصفرية
هل نستطيع إعداد قيمة أولية للمصفوفة عند تكوينها ؟
بالنسبة للمصفوفات الصغيرة حجما يمكننا ذلك
String [] physicsTeachers = { "Samy","Nasser","Taha",};
للدرس بقية بعون الله ـ تابعونا