المصفوفات تعتبر الحل السحري إذا كنت تريد ادخال او طباعة بيانات كثيرة ، فرئيس القسم يستطيع حصر بيانات من هم في قسمه داخل البرنامج عن طريق المصفوفة ، كذلك المعلم يستطع طباعة بيانات اعداد كبيرة من طلبته فقط بضغطة الزر ، والمصفوفة معروف أنها مجموعة بيانات من نفس النوع . سوف نتعرف على طريقة تعريفها وتعبئتها وطباعتها :-
أولا : تعريف المصفوفة :-
var myArray=Array<Int>(5){0}
في البداية نعرف المتغير ومن ثم بعد علامة = نحدد أن نوع المتغير مصفوفة ومن ثم نحدد نوعها <Int> أنها من نوع عدد صحيح (5)تشير إلى طول المصفوفة أي أنها تحوي بداخلها ٥ عناصر ، وفي النهاية {0} نحدد أن المؤشر أو index يبدأ من الصفر .
ثانيا: إدخال قيم للمصفوفة :-
حسناً الأن عرفنا هذه المصفوفة أريد إدخال قيم بداخلها أي تعبئتها ، نستطيع تعبئتها بهذه الطريقة
myArray[0]=12
ولكن هذه الطريقة ستكون مرهقة لو كانت المصفوفة لدي طويلة أي تحمل عناصر كثيرة ، والحل السحري كالعادة هو استخدام الدوارة أو loop ، فقمنا باستخدام for loop :-
طبعاً هذا المثال الذي سوف نطرحه هو لو أننا أردنا طباعة الأرقام من ٠-٤ بالترتيب من البرنامج :-
for(i in 0..5)
{
myArray[i]=i
println(myArray[i])
}
أولاً : for(i in 0..5)
الحلقة التي لدي عدد عناصرها ستة ، من ٠ إلى ٥ .
ثانياً : myArray[i]=i i تعبر عن إذا كانت الحلقة تبدأ من ٠ فأجعل أيضا قيمة العنصر = ٠ ، وهكذا :
myArray[0]=0
myArray[1]=1
…
ثالثاً : وهي الخطوة الأخيرة بعد التعبئة وهي طباعة العناصر .
ناتج التنفيذ :-
0
1
2
3
4
حسناً ولكن لو أردنا من المستخدم تعبئة هذه المصفوفة ؟ الحل بسيط جداً :-
println("Enter Number for ARRAY")
for (i in 0..4) {
myArray[i] = readLine()!!.toInt()
}
myArray[i] = readLine()!!.toInt()
هذا يعني أنه بكل عنصر من ٠ – ٤ قم بطلب المستخدم أن يدخل رقم ولماذا من ٠-٤ وذلك لأن مصفوفتنا عدد عناصرها ٥
ثالثا: طباعة عناصر المصفوفة :-
حسنا هكذا تم أمر الإدخال ، تبقى لنا أمر وهو لو أردنا طباعة هذه العناصر التي أدخلها ؟ نستطيع الطباعة إما بالـ for or while :-
//printed by for
println("printed by for")
for(i in myArray){
println(i)
}
//printed by while
println("printed by while")
var i=0
while (i<myArray.size){
println(myArray[i])
i++
}
ناتج التنفيذ :-
Enter Number for ARRAY
5
4
3
2
1
printed by for
5
4
3
2
1
printed by while
5
4
3
2
1
– لو اردنا طباعة index للمصفوفه باستخدام for تكون الشفرة بهذا الشكل
for ((index, value) in myArray.withIndex()) { println("the element at $index is $value") }
مصفوفة نصية :-
var student=Array<String>(6){""}
println("Enter name your student :")
for(i in 0..5){
student[i]=readLine()!!
}
for(i in 0..4){
println(student[i])
}
هنا عرفنا متغير من نوع سلسلة نصية لأسماء الطلاب مع مراعاة {“”} القيمة الافتراضية هنا لا نستطيع كتابتها ٠ أو أي ارقم وذلك لأن المصفوفة نصية فنقوم بوضع علامتي التنصيص وندعها فارغة ، كما ترون هو نفس الأمر احتجنا إلى دوارتان الأولى لإدخال الأسماء من المستخدم والأخرى لطباعة بيانات هذه المصفوفة.
رابعا : التعامل مع المصفوفات :
بالطبع اذا كان لدي مصفوفة وهي تجمع كبير للبيانات فسنحتاج إلى دوال سريعة وجاهزة للتعامل مع هذه المصفوفة ، في الجدول ادناه اشهر الدوال المستخدمة للمصفوفة :
الاثنان لهم نفس الاستخدام وهو معرفة عدد عناصر المصفوفة فنقوم بكتابة :
|
count – size |
لجلب عنصر في المصفوفة نقوم باستخدام get ونمرر لها index العنصر :
|
get |
استبدال قيمة عنصر في المصفوفة بقيمة جديدة سنقوم باستخدام set ونمرر لها index العنصر و القيمة الجديدة ، هكذا :
|
set |
وهي للتحقق من قيمة العنصر أي ان ناتج التنفيذ العائد سيكون منطقي اما true or false :
|
equals |
لترتيب عناصر المصفوفة :
|
sort |
لإيجاد اكبر عنصر في المصفوفة :
|
max |
لإيجاد اصغر عنصر في المصفوفة :
|
min |
لجلب اخر عنصر في المصفوفة :
|
last |
لجلب اول عنصر في المصفوفة :
|
first |
فلترة العناصر او البحث داخل المصفوفة :
هنا سيقوم بطباعة العناصر داخل المصفوفة ذات القيم 3 او اقل |
filter |
لعرض الترميز الخاص بالمصفوفة :
|
hashcode |
تقوم بعكس عناصر المصفوفة :
|
reserved |