Educational Zone

مدونة متخصصة بالدروس التعليمية

المصفوفات Arrays


في الدروس السابقة تعرفنا على بعض أنواع البيانات DataType بالإضافة للمتغير Variables وقلنا أن المتغيرات Variables تستطيع أن تحميل قيمة واحدة أو متغير آخر بالمثل فإن المصفوفات Arrays تستطيع أن تحميل العديد من القيم و أنواع البيانات بما فيها الجمل String والأرقام Numbers ...الخ وأيضاً بإمكانها أن تحمل مصفوفة أخرى وهو ما يعرف باسم Nested Arrays لنوضح الفكرة بشكل بسيط المتغيرات Variables مثل الكرسي يستطيع أن يحمل شخص واحد ( قيمة واحدة ) فقط بينما المصفوفات Arrays مثل المقعد يستطيع أن يحمل العديد من الأشخاص ( قيم متعددة ) كل قيمة أو تعريف في المصفوفة يعرف باسم العنصر Element وكل عنصر له رقم يصف ترتيبه في المصفوفة ويسمى هذا الرقم باسم Index والعنصر الأول في المصفوفة يحمل الرقم صفر وليس واحد وذلك لأن المصفوفة عبارة عن Zero-Indexed وهي تعني أنها تبدأ العد من الصفر بدلاً من الواحد .

لإنشاء مصفوفة نقوم باستخدام الـ Constructor مع الأمر new إذا في البداية نقوم بتعريف متغير باسم aValues ويحمل نوع البيانات Array ثم مسافة ونضع علامة يساوي ثم مسافة ونكتب الأمر new ومسافة وأخيرا نضع الـ Constructor وهو Array() وننهي الأمر بفاصلة منقوطة ليكن الأمر بهذا الشكل :



وبذلك نكون قد قمنا بإنشاء مصفوفة باسم aValues والآن بقي أن نقوم بإسناد القيم لهذه المصفوفة بإمكاننا أن نقوم بذلك بطرق مختلفة وأسهل هذه الطرق هي ببساطة بين القوسين نقوم بإدراج القيم "John", "Sarah", "Paul" وفي سطر جديد نقوم بإضافة الأمر trace بهذا الشكل trace("aValues"); ليقوم بعرض قيم المصفوفة ويكون الأمر في النهاية كالتالي :



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



والطريقة الأخرى لإضافة القيم للمصفوفة هي Array-Access Notation وهي ببساط تقوم بوضع اسم المصفوفة وهي aValues ثم أفتح قوس [ وتضع رقم الـ Index للعنصر الذي تريد إضافة القيمة له وهنا سوف نبدأ بالعنصر الأول وهو يحمل الرقم صفر ثم نغلق القوس ] وبعدها مسافة ونضع علامة يساوي ونكتب القيم وهي "John" وننهي الأمر بفاصلة منقوطة ثم ننتقل لسطر جديد ونكتب اسم المصفوفة aValues ثم نفتح قوس [ ونضع رقم الـ Index للعنصر الثاني وهو واحد ونغلق القوس ] ثم مسافة ونضع علامة يساوي ونضع القيمة الثانية وهي "Sarah" وبالمثل للقيمة الثالثة مع تغيير رقم الـ Index للعنصر الثالث ليكون اثنين وبذلك يكون الأمر في النهاية بالشكل التالي :



والآن قم باختبار العمل لترى نفس النتيجة السابقة هناك طريقة ثالثة لإضافة القيم للمصفوفة وهي باستخدام السلوك push Method ولاستخدام الخصائص Properties أو السلوكيات Methods أو الأحداث Events مع الكائنات Objects نقوم باستخدام طريقة Dot Syntax وهي ببساطة كالتالي نقوم أولا بكتابة اسم الكائن وهو هنا aValues ثم نضع نقطة وسوف تلاحظ أن ظهرت لك قائمة بالسلوكيات Methods و الخصائص Properties والأحدث Events المخصصة لهذا النوع من الكائنات وهو هنا المصفوفة Array نقوم بكتابة push( أو ببساطة نكتب أول حرفين سوف يقوم البرنامج تلقائيا بتظليل السلوك push Methods فكل ما عليك فعلة هو الضغط على مفتاح Enter فكل ما عليك فعلة هو أن تقوم بكتابة القيمة وهي "John" ونغلق القوس وننهي الأمر بفاصلة منقوطة وبالمثل مع كل من القيمة الثانية والثالثة ليكون الأمر في النهاية بهذا الشكل :





والآن قم باختبار العمل لترى نفس النتيجة السابقة والسؤال هنا لما تتعدد طرق إضافة القيم للمصفوفة ؟ الإجابة على هذا السؤال صعبة لأن اختيار الطريقة تعتمد اعتماد كبير على طبيعة تصميمك وما تريده أنت وبذلك يمكنك الاختيار الطريقة التي توفر لك الوقت والجهد وتوصلك لما تريد . بالإضافة لذلك فإنه بإمكاننا أن نقوم بترتيب هذه القيم أو بمعنى أصح ترتيب العناصر في المصفوفة وذلك باستخدام السلوك sort Method وهو يقوم بترتيب القيم من a إلى z وبالتالي سوف يقوم بإعادة ترتيب العناصر في المصفوفة لذلك سوف تكون الكلمات التي تبدأ بأحرف كبيرة Uppercase أولا وبعدها تأتي الكلمات التي تبدأ بأحرف صغيرة Lowercase لذلك فإن هذا الأمر يعتبر قيمة david والتي تبدأ بحرف صغير مختلفة تماماً عن القيمة David والتي تبدأ بحرف كبير وبإمكاننا استخدام هذا الأمر كالتالي أولا نقوم بكتابة اسم المصفوفة وهي aValues ونضع نقطة وأخيراً نضع الأمر sort() وننهي الأمر بفاصلة منقوطة ليكون الأمر في النهاية بهذا الشكل :



وقم باختبار العمل لترى الشكل التالي :



كما بإمكاننا أن نقوم بعكس الترتيب ليكون من z إلى a لذلك يحتوي الـ Array Class على Constant وهذا المجلد يحتوي على العديد من الأوامر التي تقوم بترتيب قيم أو عناصر المصفوفة بطرق مختلفة فهو يحتوي على الأمر Array.DESCENDING والذي يقوم بعكس ترتيب العناصر ولذلك نقوم بوضع الأمر Array.DESCENDING بين قوسي الأمر sort ليكون الأمر في النهاية بالشكل التالي :



والآن قم باختبار العمل لترى الشكل التالي :



ولنقوم بتجربة شيء آخر لنقم بإسناد القيم التالية 10, 1, 2, 15, 21, 13, 33& 3 للمصفوفة ونضع الأمر sort فقط ليكون الأمر في النهاية بهذا الشكل :



والآن قم باختبار العمل لترى الشكل التالي :



أكيد الناتج خطأ ولكن لو استبدلت الأرقام بجمل سوف تكون الإجابة صحيحة ولكنني لا أريد استخدام الجمل بل استخدام الأرقام فما هو الحل ؟ لذلك يأتي هنا دور نوع أخر من طرق ترتيب قيم أو العناصر في المصفوفة وهو مخصص لترتيب الأرقام ويعرف باسم Array.NUMERIC لذلك نضع الأمر Array.NUMERIC بين قوسي الأمر sort ليكون الأمر بالشكل التالي :



والآن قم باختبار العمل لترى الشكل التالي :



بشكل افتراضي فإن الـ Flash يقوم بترتيب القيم أو العناصر في المصفوفة مع مراعاة حالة الحروف بحيث تكون الكلمة التي تبدأ بحرف كبير Uppercase تسبق الكلمة التي تبدأ بحرف صغير Lowercase في الترتيب للتوضيح في المثال التالي :



فإذا قمت باختبار العمل سوف ترى الشكل التالي :



ولكن بإمكاننا أن نقوم بتجاهل حالة الحروف وذلك باستخدام الأمر Array.CASEINSENSITIVE بين قوسي الأمر sort ليكون الأمر بالشكل التالي :



والآن أختبر العمل لترى الشكل التالي :



والآن بقي شيء واحد فقط وهو استخدام المصفوفة مع الأمر for سوف نقوم باستخدام الأمر for لعرض قيم المصفوفة في نافذة المخرجات إذا استكمالاً للأوامر التالية :



قم بحذف السطر الأخير والذي يحتوي على الأمر trace ثم أكتب الأمر for في نقطة البداية initialization نكتب الأوامر التالية var i:Number = 0 والآن ننتقل للشرط condition وسوف يكون كالتالي i < 3 حيث الرقم 3 هو عدد العناصر في المصفوفة التي تريد عرضها وأخيرا ننتقل للتحديث update وهنا سوف نقوم بزيادة قيمة المتغير i بمقدار واحد ليكون الأمر i++ في جسم Body الأمر for نكتب الأمر التالي trace(aValues[i]); هناك سوف يتم عرض قيم المصفوفة في نافذة المخرجات لذلك سوف يكون المتغير i في المرة الأولى صفر ليكون aValues[0] ليعرض قيمة هذا العنصر وهي "John" في نافذة المخرجات وفي المرة تكون قيمة المتغير i هي واحد ليكون aValues[1] وهي تدل على العنصر الثاني وبالتالي يقوم بعرض قيمة هذا العنصر في نافذة المخرجات وهي "Sarah" ..وهكذا والآن قم بإنهاء الأمر for ليكون الأمر في النهاية بهذا الشكل :



والآن قم باختبار العمل لترى الشكل التالي :



ماذا يحدث إذا قمنا بإضافة قيمة جديدة للأوامر السابقة لتكون كالتالي :



قم باختبار العمل لترى الشكل التالي :



لاحظ أنه لم يتم إضافة القيمة الجديدة وذلك لأننا لم نقم بتغيير الشرط في الأمر for يمكننا ببساطة أن نغير القيمة من 3 إلى 4 ولكن ما نريده أن يكون الشرط أكثر مرونة بحيث إذا قمت بحذف عنصر أو إضافة عنصر آخر للمصفوفة يتم تلقائيا تغيير الشرط في الأمر for هنا يأتي دور الخاصية length وهي تقوم بإرجاع قيمة وهي عدد العناصر في المصفوفة لذلك نقوم بحذف القيمة 3 ونكتب بدلاً منها أولا المصفوفة التي نريد حساب عدد عناصرها وهي aValues ثم نقطة ونكتب اسم الخاصية وهي length ليكون الأمر في النهاية بهذا الشكل :



سوف تكون قيمة الأمر aValues.length هنا هي 4 وهي عدد عناصر المصفوفة aValues قم باختبار العمل ليظهر لك الشكل التالي :



والآن إذا قمت بحذف أو إضافة عنصر جديد للمصفوفة سوف يتغير الشرط تلقائيا ليعرض لك جميع قيم عناصر المصفوفة .






تمنياتي لكم بالتوفيق

ســ لمــ لمـ



أضف تعليقا