المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : المصفوفات ..1


عبد الله الساهر
Mar 2005, 05:18 AM
بسم الله الرحمن الرحيم



محتوى الدرس:

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

صمت الجمال
Mar 2005, 02:23 AM
شكرا لك استاذي والله من افضل المواضيع

عبد الله الساهر
May 2005, 02:40 AM
كبرتيني كثير صمت الغالية


استاذ


انا والله احب انقل الفائدة وان شاء الله يتحقق ذلك

أمـ جود ـ
May 2005, 10:19 PM
درس تم تطبيقه ولكن عبد الله احس انه مختصر كثير


ممكن تتوسع لنا اكثر في هذا المجال

عبد الله الساهر
May 2005, 04:50 PM
إن شاء الله القادم أجمل

اميرة الساهر
Jun 2005, 09:39 PM
واللة مو فاهمة ايش الحكاية بس تشكر

علي الموضوع......



يكفي ان غير فاهم




دمتم بخير

صمت الجمال
Jun 2005, 11:50 PM
اميرة الساهر


درستي بالمدرسة المصفوفات


وهنا ندرس كيف نستخدم المصفوفات


في الفيجوال بيسك


حياك الله وشرفتينا بتواجدك \


شرفينا مرة تانية


عبد الله وضحت لها جزء لو غلطت صحح لي

عبد الله الساهر
Jun 2005, 03:29 PM
شكرا لك صمت الجمال


ونحن نبحث دوما عن المعلومة اميرة الساهر


وهنا لابد لكي من ان تتعلمي الفيجوال بيسك


من شان تعرفي وش مصفوفات


شكرا لكي صمت أكيد كما قلتي

اختي

موزارت الشرق
Oct 2005, 05:07 AM
يعطيك العافية عبدالله

عبد الله الساهر
Oct 2005, 03:13 PM
الله يعافيك الرائع


المهاجر