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

مشاهدة النسخة كاملة : شرح المصفوفة array - الجزء الأول


أبو ربيع
07-04-2012, 04:56 PM
بسم الله الرحمن الرحيم..

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

سأتكلم في هذا الموضوع عن المصفوفة (array).. أحادية البعد..
وهناك جزء آخر بإذن الله للمستويات المتقدمة لهذه المصفوفة..

يندر الكلام عن (array) في المنتديات العربية إن لم يكن معدوماً بالنسبة للـ VB6..
وأعتذر لأخي (<br>) على التأخير.. لأني فعلاً مشغول بالعمل وخارج العمل..

هذا الموضوع هو إهداء لأخي العزيز (السندباد) وأخي العزيز (<br>)..

نبدأ بالدرس..

- نبذة عن المصفوفة :
إن المصفوفة (array) هي أفضل مصفوفة برمجية رأيتها في حياتي وأعتقد أنها عند أغلب المبرمجين إن لم يكن كلهم..
وذلك لبساطتها واختصارها للأكواد.. وسأتكلم في هذا الدرس عن هذه المصفوفة..

- لماذا يستخدم المبرمجون مصفوفة array ؟
يستخدمها الكثير من محترفي البرمجة لإختصار الأكواد وترتيبها وتنظيمها..
في جميع لغات البرمجة وليس الفيجوال بيسك فقط.. وهذه المصفوفة عادةً تستخدم في المشاريع الكبيرة جداً..
نفترض أن لدينا برنامج كبير نبغى نصنعه.. أكيد القيم راح تكون فيه كثيرة.. كيف راح نضيفها برمجياً..؟
أكيد راح نعلن عن متغيرات للقيم.. وبعدها نضيف هذه القيم للمتغيرات.. ومن ثم نستدعيها بالأوامر في البرنامج..
اتركونا من الكلام النظري.. وخلونا نأخذ شيء عملي..

أفترض أني أبغى أصنع برنامج لأسماء الدول العربية وعدد سكان كل دولة..
راح يكون البرنامج تقريباً بهذه الصورة..

http://upload.traidnt.net/upfiles/emV16722.jpg

والكود هكذا..

dim a as string
dim b as string
dim c as string
dim d as string
dim e as string
dim f as string
dim g as integer
dim h as integer
dim i as integer
dim j as integer
dim k as integer

a = "السعودية"
b = "مصر"
c = "سوريا"
d = "الكويت"
e = "اليمن"
f = "مليون نسمة "
g = "30"
h = "100"
i = "23"
j = "1"
k = "20"

text1.text = a & vbnewline & b & vbnewline & c & vbnewline & d & vbnewline & e
text2.text = g & f & vbnewline & h & f & vbnewline & i & f & vbnewline & j & f & vbnewline & k & f

أخذت خمس دول كمثال فقط..
ما تلاحظ أن الكود كبير شوي.. هذي خمس دول كيف بباقي الدول العربية الأخرى..؟!
طيب وش رايك نختصر الكود بإدخال المصفوفة (array) عليه..؟؟ أوكي راح نختصره..

- هذه طريقة الإعلان عن متغير يقبل دخول المصفوفة (array) عليه..

Dim a As Variant

ركزعلى نوع المتغير (Variant).. هذا النوع يسمح للمصفوفة بالدخول على المتغيرات.. لكي يحمل المتغير أكثر من قيمة..

وسنفرق بين كل قيمة وقيمة بالفهرس..
بعد الإعلان نأتي بالمتغير.. ثم علامة (=) ثم اسم المصفوفة اللي هي (array) ثم قوسين نضع فيها قيم المصفوفة.. ونفصل بين كل قيمة وأخرى بفاصلة (,)..

راح يصير المتغير وقيمه هكذا..

Dim a As Variant
a = Array("السعودية", 30, "مصر", 100, "سوريا", "23", "الكويت", 1, "اليمن", 20, " مليون نسمة")

الآن أدخلنا المصفوفة (array) على القيم وأريد أن أطبع قيمة محددة من المصفوفة.. كيف..؟
عليك أن تعرف أولاً ما الذي فعلته المصفوفة بتلك القيم..

بإختصار :لقد وضعت المصفوفة كل قيمة في فهرس محدد.. مبتدئة بالفهرسة من الصفر..

بهذه الصورة :

http://upload.traidnt.net/upfiles/UYL16848.jpg

وعندما تريد قيمة محددة عليك أن تكتب اسم المتغير اللي هو (a).. ثم قوسين ().. وتضع بينهما رقم الفهرس..

- مثلاً أريد طباعة كلمة (السعودية) في مربع نص.. هكذا :

Text1.Text = a(0)

وهذا الكود النهائي للبرنامج كامل لمثالنا السابق..


Dim a As Variant
a = Array("السعودية", 30, "مصر", 100, "سوريا", "23", "الكويت", 1, "اليمن", 20, " مليون نسمة")
Text1 = a(0) & vbNewLine & a(2) & vbNewLine & a(4) & vbNewLine & a(6) &
vbNewLine & a(8)
Text2 = a(1) & a(10) & vbNewLine & a(3) & a(10) & vbNewLine & a(5) & a(10) &
vbNewLine & a(7) & a(10) & vbNewLine & a(9) & a(10)


وبعد الاختصار النتيجة نفس نتيجة البرنامج السابق.. شوف الصورة..

http://upload.traidnt.net/upfiles/emV16722.jpg

وإذا بغيت إختصار وتنظيم أكثر.. ما عليك إلا إنك تشغل مخك.. وخذ هذا الاختصار الثاني..

Dim a As Variant
a = Array("السعودية", 30, "مصر", 100, "سوريا", "23", "الكويت", 1, "اليمن", 20, " مليون نسمة")
For i = 0 To 8 Step 2
Text1 = Text1 & a(i) & vbNewLine
Next
For y = 1 To 9 Step 2
Text2 = Text2 & a(y) & a(10) & vbNewLine
Next


[B]والنتيجة طبعاً نفس النتيجة..


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

وأيضاً أريدك أن تلاحظ شيئاً مهماً في قيم هذه المصفوفة.. وهي :
إذا كانت قيمة المصفوفة من نوع نص (String).. فلابد من وضع القيمة بين علامتي تنصيص ("")..
وإذا كانت قيمة المصفوفة من نوع أرقام (Integer).. أو أي نوع من الأرقام.. فإن الأمر لا يضر..
سواء وضعناها بين علامتي تنصيص أم لم نضعها الأمر لا يفرق.. ولو تلاحظ في المثال اللي عطيتك..
قيم المصفوفة الرقمية كلها خالية من علامات التنصيص.. ما عدا قيمة عدد سكان سوريا وضعتها بين علامتي تنصيص.. لتعرف أن الأمر لا يفرق في القيم الرقمية..

وبما أن الكلام يندر عن (array).. والفرصة سمحت لي بالكلام عنها..
فسيكون هناك جزء آخر للمصفوفة (array).. سأوضح فيه كيفية عمل المصفوفة ثنائية البعد.. ومتعددة الأبعاد..
وسأقوم بتوضيح بعض المفاهيم الخاطئة بالنسبة للمصفوفة في المنتديات العربية والتي أخطأ فيها الكثير حتى من محترفي البرمجة بالـ VB6..

وإذا سمحت لي الفرصة أكثر فسأتكلم عن المصفوفة (array).. في لغة PHP ولغة PERL..

والتوفيق حليف الجميع إن شاء الله..




بقلم : مزيد..مرير - أبو ربيع

khaledbelal
07-04-2012, 05:32 PM
ما شاء الله ... جزاك الله خيرا يا غالي