[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]الإعلان عن مصفوفات الحجم الثابت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