رمز فتح مرحلة هذا الدرس في تطبيق طورني : YIL
تَعلُمُ البرمجةِ للمبتدئينَ كلياً بواسطةِ #C – المصفوفات Arrays
السلام عليكم و رحمة الله و بركاته , و أهلا بكم في درس جديد من دروس سلسلة تعلم البرمجة للمبتدئين كلياً بواسطة الـ #C
في درس اليوم سنتكلم إن شاء الله عن المصفوفات أو الـ Arrays
تعريف المصفوفات :
يمكن تعريفها على أنها وعاء يحتوي على قيم بداخلها , أو هي عبارة عن صندوق فواكه يحتوي على عدداً من التفاح على سبيل المثال , و كل تفاحة لها قيمة الخاصة ، و الصندوق الحامل لها يسمى المصفوفة .
نذهب إلى File ثم New ثم project و نتأكد من اختيار #Visual Cو نختار Console App
تكلمنا سابقاً أن المكان المخصص لكتابة الأكواد البرمجية هو بين قوسي الدالة void Main
كي لا نضيع الوقت قمت بكتابة هذه الاسطر سابقاً و سأقوم بلصقها هنا
لاحظو أنني قمت بتعريف خمسة متغيرات هنا ، و كل متغير يحتوي على قيمة معينة
نريد الآن أن نقوم بالبحث عن الرقم 16 ، عندها سأكون مجبراً على كتابة جمل شرطية if statement لكل متغير لكي أحصل على القيمة و أقارنها بالقيمة المطلوبة
في البداية نسأل هل قيمة المتغير number1 تساوي 16
ثم ننتقل إلى الثاني … الثالث ……. الخامس و هكذا
في هذه الحالة سأكون مضطراً لكتابة كل المتغيرات و كتابة عدد كبير من جمل if statement
هنا يأتي دور المصفوفة Array
سأقوم مبدئيا بتحويل الجمل السابقة إلى جمل ملاحظات
يمكن تعريف الـ array كالتالي
;int[ ] myNumber = new int [5]
لاحظو في هذا السطر قمت بتعريف مصفوفة اسمها myNumber من النوع integer و تحتوي على خمس قيم
قمنا بكتابة الأقواس المربعة بعد النوع مباشرةً
الآن أصبح عندي 5 عناصر أو خمس خانات استطيع التعامل معهم
كيف يمكنني أن أقوم بإدخال قيم إلى هذه العناصر ؟
يمكننا فعل ذلك كالتالي :
;myNumber[0] = 10
;myNumber[1] = 22
;myNumber[2] = 14
;myNumber[3] = 66
;myNumber[4] = 22
الخانة الموجودة بين القوسين [ ] تسمى index
لذلك عندما تريد استدعاء عنصر ضمن المصفوفة تضع اسم المصفوفة و رقمه بين الأقواس [ ] مع ملاحظة أن الخانة الأولى يجب أن تحمل الرقم 0
إذاً من خلال الأسطر السابقة قمت بإدخال قيم إلى العناصر الموجودة ضمن الـ Array
الآن ماذا لو أردت أن أقوم بعملية استدعاء للقيم ؟
سأقوم من خلال التالي بطباعة قيمة أحد العناصر في المصفوفة
;Console.WriteLine(myNumber[2] )
و لا ننسى كتابة الدالة ReadLine لنتمكن من مشاهدة النتائج.
نقوم بتشغيل التطبيق و نلاحظ أن التطبيق قام بطباعة القيمة 14
طريقة ثانية
الآن هناك طريقة ثانية لتعريف المصفوفة و إدخال القيم بها مباشرةً .
;int [ ] myNumbes = new int [ ] {1, 5 , 3 , 4 , 66 , 55 }
و كما تكلمنا لو اردنا طباعة القيمة رقم 3 فسنكتب :
; Console.WriteLine(myNumber[2] )
هناك إمكانية لطباعة ” عدد العناصر الموجودة داخل المصفوفة “
عن طريق التالي :
;Console.WriteLine(myNumber.Length)
هنا قمنا بطلب أخذ الـ Length ، و هو كم عدد العناصر الموجودة ضمن المصفوفة
و لو قمنا بعمل تشغيل للتطبيق ، سنحصل على القيمة 6 ، و هو فعلاً عدد عناصر المصفوفة السابقة .
في الاسطر السابقة استعملنا النوع integer ، و بالمثل يمكننا استعمال أي نوع آخر
مثلا هنا أقوم بكتابة
; string[] myStrings = new string[] { “Ahmad”, “Mohammad”, “Shady”, “Safaa” }
و بالمثل سنقوم بطباعة قيمة العنصر رقم 3
;Console.WriteLine(myStrings[2] )
و لاحظ أنه قام بطباعة شادي
تحدثنا في المحاضرة السابقة عن For Loop Statement التي تقوم بعملية تكرار لأوامر معينة ، لاحظة الآن سأقوم باستخدامها لطباعة كل عناصر المصفوفة
و ذلك كالتالي :
لاحظو أنه قام بطباعة كل عنصر من عناصر المصفوفة و ذلك بناءً على الـى Length
لاحظو أن عدد العناصر في المصفوفة هو 4 و هذا يعني أن myStrings.Length يساوي 4
و لذلك عندما وصل إلى الرقم 3 لقيمة i فهو فعلياً وصل إلى آخر عنصر في المصفوفة ، و عندما أصبحت i = 4 يقوم بالخروج من الحلقة و ذلك لأن 4 تساوي 4 و ليست أصغر منها طبقاً لشرط الحلقة و بالتالي بعد أن أصبح شرط الحلقة غير محقق قام بالخروج منها
حلقة foreach
هناك أيضاً حلقة يتم استخدامها بشكل كبير مع المصفوفات ، ألا و هي foreach
شرح هذه الحلقة :
بعد إضافة foreach نقوم بتعريف متغير من النوع الذي تم تعريف المصفوفة به
و هنا قمنا بتعربفه من النوع string تبعاً لنوع المصفوفة myStrings و بالنسبة لاسم المتغير الجديد فهو اختياري لأننا سنقوم باستخدامه حصراً ضمن الاقواس { }
ثم نقوم بإضافة الكلمة المحجوزة in ثثم اسم المصفوفة و ذلك بدون أقواس [ ]
عمل الحلقة :
في كل مرة سيقوم بأخذ أحد العناصر (على الترتيب) ثم يقوم بإسناده الى المتغير name و يقوم بطباعته
و لاحظ أننا لم نقم بإعطائه الـ index الخاص بالعنصر و إنما طلبنا منه أن يقوم بجلب جميع العناصر الموجودة داخل المصفوفة
هناك أيضاً إمكانية للتعامل بشكل أكبر مع المصفوفات :
إذا كان لدي نص معين و أردت أن أقوم بطباعة هذا النص بالعكس ( عمليةReverse )
هناك نوع جديد من أنواع البيانات هو النوع char و تكلمنا سابقاً أنه يقبل حرفاً واحداً فقط
;’char x = ‘a
الآن لدينا التالي :
;!! string myWords = “i need to go to the hospital now
يمكنني أن أحصل على مصفوفة من myWords عن طريق الجملة :
;()Char[ ] x = myWords.ToCharArray
من خلال هذا الجملة نقوم بفصل جميع الحروف الموجودة في النص و تحويلها إلى عناصر في المصفوفة
myWords.ToCharArray تقوم بالعودة بمصفوفة يتم اسنادها للمصفوفة x من النوع char
و نلاحظ هنا أننا قمنا بكتابة char و ليس فقط Array في myWords.ToCharArray لأنني أريد تحويل جميع الخانات خانة خانة إلى النوع char
الآن لو قمت بوضع بكتابة الحلقة foreach كما في التالي :
لو قمت بتنفيذ التطبيق سيقوم بطباعة الجملة حرف حرف في كل سطر
و لعكس المصفوفة نقوم بكتابة التالي :
سنشاهد عند تنفيذ التطبيق أنه قام بطباعة الجملة بشكل معكوس على نفس السطر .
طبعاً المصفوفات لها استخدامات أكثر مما تم ذكره ، و الدروس القادمة ستكون كفيلة بصقل مهارتك باستخدام الـ Array
نصل الآن إلى نهاية هذا الدرس ، ألقاك في الدرس التالي إن شاء الله .
ملخص الدرس :
تعريف المصفوفات:
السلامُ عليكم ورحمةُ اللهِ وبركاته، وأهلاً بكمْ في الدرسِ الثالث عشر من دروسِ سلسلةِ، تَعلُمِ البرمجةِ للمبتدئينَ كلياً بواسطةِ السي شارب، في هذا الدرس سنتعرف على المصفوفة وكيف يمكننا تعريف عدد كبير من المتغيرات تحت سقف واحد، وكيف أنه يمكننا إستدعاء العناصر بواسطة حلقات تكرارية.
المصفوفة Array :
يمكن تشبيه المصفوفة أنا عبارة عن صندوق فاكهة يحتوي تفاح، حيث أن هناك عدد كبير من التفاح غير أنه غير متساوي في المواصفات، فهناك الكبير وهناك ذو الحلاوة أكثر وهناك ذو الحمرة أكثر، غير أنهم يتشاركون بصفه أنهم جميعاً من النوع الواحد ألا وهو التفاح، والمصفوفة يمكن أن تكون أي نوع من أنواع البيانات الموجودة بداخل لغة السي شارب، سواءاً كانت نصية أو رقمية أو حتى متجهات ثلاثية البعد.
ويتم حجز المصفوفة بكنابة نوعها ثم أقواس مربعة ثم إسم المصفوفة ثم إعطاءها رقم للعناصر التي ستكون بداخلها هكذا :
int[] myNumbers = new int[5];
أو كما في المثال التالي :
مصطلحات الدرس :
Arrays :
Length :
foreach :
index :
Zero Base :
Reverse :
char :
ToCharAray :
ابحث عن تعليمة حذف من مصفوفة