المصفوفات (الدرس الأول)

    • المصفوفات (الدرس الأول)

      [TABLE='width:70%;'][CELL='filter:;']
      محتوى الدرس:

      الإعلان عن مصفوفات الحجم الثابتFixed-size Array.
      تحديد الحدين الأعلى والأدنى للمصفوفة Upper bound & Lower bound.
      المصفوفات متعددة الأبعاد Multi-Dimensional Arrays.
      جملة Option Base.
      استخدام الـLoops لمعالجة المصفوفات.


      الإعلان عن مصفوفات الحجم الثابتFixed-size Array:

      هناك ثلاث طرق للإعلان عن هذا النوع تعتمد على النطاق scope الذي سوف تغطيه المصفوفة:

      للإعلان عن مصفوفة عامة Puplic Array تستخدم جملة Puplic في قسم الإعلان Declaration Section للوحدة Module.
      للإعلان عن Module-Level Array تستخدم جملة Private في قسم الإعلان الخاص بـProcedure.
      للإعلان عن Local Array تستخدم جملة Dim في الـProcedure.






      تحديد الحدين الأعلى والأدنى للمصفوفة Upper bound & Lower bound:

      عند الإعلان عن مصفوفة، يكتب الحد الأعلى بعد الاسم وبين الأقواس.
      لا يمكن أن يزيد الحد الأعلى عن نطاق نوع المتغير Long Data Type.
      الحد الأدنى الإفتراضي Default هو الصفر.
      لتحديد الحد الأدنى، ينبغي كتابته صراحة باستخدام كلمة To، كما سنرى في الأمثلة.
      أمثلة:

      مثال (1):

      إعلان عن مصفوفة StudentId يمكن وضعه في جزء الأعلان الخاص بالـModule أو داخل الـProcedure:
      Dim StudentId (1000) As Integer

      وبذلك يكون عدد عناصر هذه المصفوفة 1001 عنصر. ولجعلها مصفوفة عامة، نستبدل Dim بـ Public كالتالي:

      Public StudentId (1000) As Integer

      ولتحديد الحد الأدنى لهذه المصفوفة بـ1 وبالتالي يصبح عدد عناصرها = 1000 عنصر فقط، نكتب To كالتالي:

      Public StudentId (1 To 1000) As Integer

      مثال (2):

      الإعلان عن مصفوفة بها 51 عنصر مرقمة من 0 إلى 50 من دون تحديد نوع بيانات عناصرها، سيعتبر النوع Variants مباشرة:


      Dim DayArray (50)

      مثال(3):

      الإعلان عن المتغير BirthDate على أنه مصفوفة من التواريخ المفهرسة من 1 حتى 10:

      Dim BirthDate (1 To 10) As Date





      المصفوفات متعددة الأبعاد Multi-Dimensional Arrays:

      يقصد بكلمة بُعد هو عدد الدلائل (Indexes) المستخدمة للرجوع إلى عنصر في المصفوفة. تستخدم المصفوفات متعددة الأبعاد لتخزين بيانات مرتبطة ببعضها البعض.
      مثال على ذلك:
      تخزين كل نقطة Pixel موجودة على شاشة الحاسوب نحتاج لتخزين إحداثياتها x & y وهذا ممكن باستخدام مصفوفة ذات بعدين.


      يمكن معرفة أبعاد مصفوفة بالنظر إلى تعريفها؛ حيث يتم الإعلان عن مصفوفة متعددة الأبعاد بذكر قيمة لأبعادها بعد اسمها مباشرة وداخل الأقواس، يتم فصل قيمة كل بعد بالفاصلة، سواء كانت ذات بعدين أو ثلاثة أبعاد كما ستوضح الأمثلة الآتية:

      -Static A(3, 4) As Double

      -Static A(1 To 10, 1 To 10) As Integer

      - Dim B (3, 1 To 10, 1 To 15)

      ملاحظة:

      عدد عناصر المصفوفة متعددة الأبعاد يمكن معرفته بضرب قيم الأبعاد ببعضها.

      عند إضافة أبعاد المصفوفة فإن مساحة التخزين المطلوبة سوف تزيد زيادة كبيرة ولذلك ينبغي الاحتراس وتفادي استخدام النوع Variant قدر الإمكان لما يتطلبه من مساحة تخزينية كبيرة!





      جملة Option Base:

      تستخدم في الـModule Level للإعلان عن الحد الأدنى المفترض لدلائل subscripts المصفوفات التي سوف تظهر في الـModule.

      الصيغة Syntax:

      Option Base { 0 | 1 }

      مع ملاحظة:

      القيمة الافتراضية هي صفر دوماً، ولذلك لا داعي لكتابة Option Base 0 إلا إذا كنّا نريد تذكير قارئ الـcode بذلك!

      إذا استخدمت هذه الجملة ينبغي ظهورها مرة واحدة وقبل أي Procedure وقبل أي جملة إعلان عن مصفوفات.

      جملة Option Base لها تأثير فقط على الحد الأدنى للمصفوفات في الـModule التي توجد به الجملة.

      مثال:

      يوضح المثال التالي كيفية تحديد القيمة الافتراضية للحد الأدنى لدلائل المصفوفات، ثم يوضح كيفية استخدام دالة الإعلام عن الحد الأدنى لمصفوفة (LBound):

      Option Base 1

      Dim Lower
      Dim MyArray(20), TwoArray(3, 4)
      Dim ZeroArray(0 To 5)

      'Use LBound function to test lower bound of arrays.

      Lower = LBound (MyArray) 'Returns 1
      Lower = LBound (TowArray, 2) 'Returns 1
      Lower = LBound (ZeroArray) 'Returns 0



      استخدام الـLoops لمعالجة المصفوفات:

      يمكن بكفاءة وسهولة معالجة المصفوفات باستخدام الـLoops وخصوصاً المصفوفات متعددة الأبعاد حيث يتم معالجتها باستخدام Loops متداخلة.

      مثال:

      الجمل التالية سوف تعطي قيمة لكل عنصر من عناصر المصفوفة A هذه القيمة تكون مرتبطة بموقع العنصر داخل المصفوفة كما سنرى:

      Dim I As Integer, J As Integer
      Static A(1 To 10, 1 To 10) As Integer
      For I=1 To 10
      For J=1 To 10
      A(I, J)= I*10*J
      Next J
      Next I
      [/CELL][/TABLE]
    • مثال على المصفوفات

      شكرا أختي أم حيدر ..

      في المرفق أحد أجوبة الإختبار النهائي في دبلوم تقنية المعلومات جامعة السلطان سنة 2000 ..

      المشروع تطبيق بسيط بإستخدام المصفوفات (Arrays) في قراءة وفرز البيانات من ملف خارجي..

      وإلي عنده أي سؤال يسأل ..

      تحياتي


      ¨°o.O ( على كف القدر نمشي ولا ندري عن المكتوب ) O.o°¨
      ---
      أتمنى لكم إقامة طيبة في الساحة العمانية

      وأدعوكم للإستفادة بمقالات متقدمة في مجال التقنية والأمن الإلكتروني
      رابط مباشر للمقالات هنا. ومن لديه الرغبة بتعلم البرمجة بلغات مختلفة أعرض لكم بعض
      المشاريع التي برمجتها مفتوحة المصدر ومجانا للجميع من هنا. تجدون أيضا بعض البرامج المجانية التي قمت بتطويرها بذات الموقع ..
      والكثير من أسرار التقنية في عالمي الثاني
      Eagle Eye Digital Solutions