30 - سلسلة تبسيط البرمجة – برنامج المتغيرات المصفوفية أو المصفوفات

السلام عليكم ورحمة الله وبركاته

بسم الله الرحمن الرحيم

بالعودة للمثال :

14 - سلسلة تبسيط البرمجة – آلية المتغيرات المصفوفية

https://arabia.io/go/5830

والذي تحدثنا فيه عن المتغيرات المصفوفية

و ارتأيت أن أرجيء المثال الذي سبقه أي المجال والنطاق لدروس قادمة حتى تكون أوضح

كما قلنا أن المتغير المصفوفي هو متغير ولكن يحمل رقم حجرة

ولننظر إلى المثال التالي :

Module Module1

    Sub Main()

        Const ArraySize = 30

        Dim X(ArraySize), Square(ArraySize) As Integer

        For i As Integer = 0 To ArraySize
            X(i) = i
            Square(i) = X(i) * X(i)
            Console.WriteLine(String.Format("The square of {0,5} is : {1,5}", X(i), Square(i)))
        Next

        Console.WriteLine()

        If ArraySize >= 13 Then
            Console.WriteLine(String.Format("The value of X(13) is : {0}", X(13)))
            Console.WriteLine(String.Format("The value of Square(9) is : {0}", Square(9)))
        End If

        Console.ReadLine()

    End Sub

End Module

نلاحظ أننا عرفنا ثابت يمثل حجم المصفوفة وفي مثالنا جعلناه 30 وذلك لأننا استخدمناه في أكثر من موضع فعندما نرغب بتغيير الحجم يكفي فقط تغيير العدد في تعريف الثابت بدلا من تعديله في كل الأماكن

ثم بعد ذلك عرفنا متغيرين مصفوفيين بسعة ArraySize أي 30

الأول X لنضع فيه العدد

الثاني Square لنضع فيه نتيجة مربع العدد

ثم استخدمنا تعليمة الحلقة التكرارية For تبدأ من 0 وتنتهي بطول المصفوفة وذلك لنمر على كل الحجرات

نضع في الحجرة الحالية قيمة المتغير I للدورة الحالية

بمعنى أنه عندما نكون في التكرار الرابع فنضع في الحجرة الرابعة القيمة 4 ومن ثم نضع في الخانة الرابعة من متغير التربيع ناتج مربع العدد والذي سيكون 16

وهكذا مرورا بكل الأعداد من صفر إلى الحجرة الأخيرة من المصفوفات

ونطبع النواتج

نلاحظ أننا في منهج Format استخدمنا {0,5} بدلا من {0} وكذلك {1,5} بدلا من {1} كما تعودنا سابقا

وهذه خاصية للتنسيق حيث بدلا من وضع قيمة البارمتر الأول بدلا من {0} تقوم بحجز 5 فراغات ثم تضع الرقم أقصى اليمين لهذه الفراغات ونفس الأمر للبارمتر الثاني

والغاية أن نجعل الأعداد فوق بعضها البعض منسقة ومحاذاة نحو اليمين

ويمكن تشبيهها أننا كأنا عرفنا أعمدة لجدول بحيث تكون الأعداد ضمن أعمدة

ولو استخدمنا الأعداد السالبة مثلا {0,-6} فيقوم بحجز ست حجرات ولكن يجعل محاذاة الأعداد نحو اليسار

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

حيث طبعنا محتوى الخانة 13 للمتغير X وكذلك محتوى الخانة 9 للمتغير المصفوفي Square

بالطبع وضعنا الشرط لضمان وجود الخانة لأنه لو قمتم بتغيير الثابت أعلاه إلى 10 مثلا وتم تنفيذ البرنامج سيولد خطأ أنه لا يمكن الوصول للخانة 13 لأنها خراج نطاق المصفوفة أي أكبر من حجمها

لهذا وضعنا الشرط للتأكد من إمكانية الوصول وإلا فلن يتم الطباعة

بإمكانكم أن تجربوا أعداد مختلفة لحجم المصفوفة مثلا 100 أو 1000

وستلاحظون كيف أننا نحصل على نتائج كثيرة من خلال عدة أسطر

طبعا ستلاحظون اختفاء قسم من النتائج الأولى في حال كان الرقم أكبر من 300 وذلك لأن شاشة الكونسول مصممة من أجل عدد محدد من الأسطر وهو 300 سطر فقط

ولهذا من أجل إظهار نتائج كبيرة كاملة تحتاج معالجات أخرى ليس مجالها الآن

الواجب :

نريد حجز مصفوفة بحجم ما ثم نضع فيه قيم عشوائية من 0 إلى 50 من خلال الكلاس Random والذي استخدمناه في أمثلة سابقة

ثم بعد ذلك نريد المرور على كل الحجرات ونفحص المحتوى إن كان أكبر من 25 نطبع رقم الحجرة

وبهذا نحصل على الحجرات التي تحتوي قيم أكبر من 25