السلام عليكم ورحمة الله وبركاته
الحلقة الأولى : ما هي المصفوفة - المصفوفة أحادية الأبعاد - المصفوفة الثابتة - تعبئة المصفوفة بالقيم
كتير مننا بيسمع عن المصفوفات وكتير حابب يتعلم إزاي يكتب كود ويتعامل مع المصفوفات .. عشان كدا إن شاء الله هحاول أقدم لكم الموضوع بطريقة بسيطة وسلسلة عشان تقدروا تستفيدوا من الموضوع
بدايةً ما هي المصفوفات أو ما يعرف بـ Arrays؟
المصفوفة أشبه بوعاء كبير ممكن تخزن فيه متغيرات .. اتعودنا إننا لما نخزن اسم مثلاً بنستخدم متغير وليكن اسمه strName وبعد كدا بيتم تعيين قيمة للمتغير ، والنوع هنا متغير نصي String
CODE
Sub Test()
Dim strName As String
strName = "Yasser"
MsgBox strName
End Sub
زي ما إحنا شايفين بيتم الإعلان عن المتغير من النوع نصي لأنه نص String ، وفي السطر التالي أخدنا المتغير strName ووضعنا له قيمة ألا وهي القيمة النصية Yasser .. وفي آخر سطر تم إظهار قيمة المتغير النصي في رسالة
ايه علاقة دا بالموضوع؟ دي مجرد مقدمة عشان تفهم يعني ايه متغير
في المثال السابق كان المطلوب التعامل مع اسم واحد فقط ، طيب لو حبينا نخزن مجموعة كبيرة من الأسماء في متغيرات هل يعقل إني أعلن عن متغير لكل اسم
طيب ايه الحل؟ الحل في منتهى البساطة إننا نجيب وعاء كبير ونضع فيه الأسماء والوعاء ده هو المصفوفة .. يعني المصفوفة هتخزن مجموعة كبيرة من المتغيرات
هنبدأ
بالمصفوفة أحادية الأبعاد One Dimensional (الكلام الكبير دا مش هيجيب نتيجة معانا .. أحادية وأبعاد .. شايفنا شغالين في كلية هندسة يا هندسة)
أحادية يعني لها اتجاه واحد زي كدا ( أحمد - ياسر - العربي - محمد - علي - كلاي - حسام - خطاب - .....) [دا اتجاه واحد]
أول شيء لازم نتعود نعلن عن المصفوفة زي ما اتعودنا نعلن عن المتغيرات ..
على سبيل المثال بنستخدم كلمة Dim يليها اسم المصفوفة يليها نوع العناصر اللي هيتم تخزينها داخل المصفوفة ونوع العناصر ممكن يكون نص أو رقم أو تاريخ أو وقت أو أي حاجة نفسك فيها .. ولو المصفوفة هتكون فيها عناصر من كل نوع يبقا تخلي النوع في الحالة دي Variant
بس إحنا في المثال اللي عايزينه هنخزن أسماء أي قيم نصية .. يبقا النوع String
CODE
Dim arr() As String<br />
لاحظ بعد المصفوفة تم وضع قوسين عشان يفهم إن دي مصفوفة ..
في المصفوفة أحادية الأبعاد ممكن يكون عدد عناصر المصفوفة ثابت أو متغير ، السطر اللي فات دا معناه إن العدد متغير (ديناميكي)
هندي مثال على
المصفوفة الثابتة : نفترض إن عندنا 5 أسماء وعايزين نضع الأسماء دي في مصفوفة ـ فنيجي في سطر الإعلان ونضع الرقم 4 بين القوسين بالشكل ده
CODE
Dim arr(4) As String<br />
يا خبر أبيض ..! واحد مركز معايا وقالي إنت مش قلت 5 .. طيب ليه كتبت 4 ؟!
دا لأن الافتراضي في التعامل مع المصفوفات إن أول عنصر في المصفوفة بياخد رقم الفهرس 0
في المصفوفات كل عنصر له رقم فهرس (الرقم دا مش ممكن يكون سالب) .. أرقام الفهرس بتبدأ من الرقم 0
معنى الكلام دا لما كتبت 4 بين قوسين .. معناه إن عدد العناصر للمصفوفة دي هيكون 4 عناصر ( 0 - 1 - 2 - 3 - 4)
عشان تتأكد من كلامي لأن فيه ناس تحب تتأكد بنفسها >> اتبع الخطوات التالية
في محرر الأكواد روح لقايمة View عشان تظهر نافذة اسمها Locals Window (ودي من خلالها بنقدر نتابع الأكواد خطوة بخطوة)
ظهرت النافذة معاك في أسفل محرر الأكواد ..تمام ، دلوقتي انسخ الكود التالي وضعه في موديول عادي Insert >> Module
CODE
Sub Test()<br />
Dim arr(4) As String<br />
End Sub<br />
<br />
شايف آخر سطر في الكود End Sub ، ضع مؤشر الماوس في السطر ده واضغط F9 من لوحة المفاتيح عشان نعمل حاجة اسمها Breakpoint أي نقطة توقف ، هتلاقي لون السطر بقا بني أيوا بني والله Brown (لو مش بني اعذروني عشان عندي عمى ألوان
)
خلاص أظهرت النافذة وأدرجت موديول ونسخت الكود ولصقته في الموديول ووقفت في آخر سطر وضغطت F9 (وقمعت البامية وخرطت الملوخيا ورتبت الأوضة ...) .. دلوقتي اضغط F5 هتلاقي السطر اللي لونه بني بقا أصفر (أيوا والله زي ما بقولك كدا أصفر) والكود وصل لآخره
طيب اللفة دي ليه ؟! عشان تبص في نافذة اللوكال على شكل المصفوفة .. هتلاقي شكلها بالشكل ده
ممكن السطر اللي فات نستخدمه بالشكل ده
CODE
Dim arr(0 to 4) As String<br />
طيب لو حبينا نغير السيستم اللي محرر الأكواد شغال بيه نعمل ايه ..
فيه أكتر من طريقة : أول طريقة إننا في بداية الموديول (مش داخل الكود) .. في أعلى الموديول بعد جملة Option Explicit نضع الجملة التالية
طريقة أخرى بدون استخدام الجملة دي إننا نقوم بتحديد نقطة البداية ونقطة النهاية للمصفوفة بهذا الشكل
الآن بعد أن أعلنا عن المصفوفة نقوم
بتعبئة عناصر المصفوفة بالقيم المطلوبة بهذا الشكل
نكتب اسم المصفوفة يليها بين قوسين رقم فهرس العنصر داخل المصفوفة ثم علامة يساوي ثم القيمة المطلوب تخزينها
ونكتفي بهذ القدر في هذه الحلقة لكي لا أطيل عليكم (قال يعني أنا مطولتش .. !!)
أخوكم في الله / ياسر خليل أبو البراء