اذهب الي المحتوي
أوفيسنا

الحلقات التكرارية للمصفوفة


الردود الموصى بها

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

إخواني الكرام ...

ارتأيت أن موضوع المصفوفات بات من الأهمية بمكان بحيث لا يجب أن ننساه لما له من أهمية كبيرة في التعامل مع الأكواد بسرعة كبيرة جداً وخصوصاً في حالة التعامل مع كم هائل من البيانات ..

فقررت أن أشارككم بما تقع عليه يدي من أكواد فيما يخص المصفوفات لنتعلم ونرتقي سوياً ..

سأتناول كود بسيط بالتفصيل لنعرف ما هية المصفوفات وكيفية التعامل معها بشكل جيد

الكود عبارة عن عمل حلقة تكرارية لعناصر المصفوفة من أول عنصر لآخر عنصر .. وإظهار العناصر في رسالة أو وضعها في نطاق أو التعامل معها كما تريد

 

نبدأ بالكود بالكامل ثم نتناوله بالتفصيل

Sub LoopInArray()
    Dim myArray As Variant
    Dim X As Integer

    myArray = Array("Yasser", "Khalil", "Officena", "Forum")

    For X = LBound(myArray) To UBound(myArray)
        MsgBox (myArray(X))
    Next X
End Sub

السطر الأول هو بداية الإجراء الفرعي ويبدأ بكلمة Sub كما تعودنا يليه اسم الإجراء الفرعي ويفضل تسميته باسم يعبر عن الهدف من الكود ...قمت بتسميته LoopInArray حيث أننا سنتعامل بالحلقات التكرارية داخل عناصر المصفوفة .. وطبعاً لكل شيء بدأته لازم تقفله ..وقفلة الـ Sub بتكون بكلمة End Sub في نهاية الكود بالطبع

السطر الثاني الإعلان عن متغير myArray وهو متغير للمصفوفة التي سنتعامل معها وقمت بتسميتها باسم مناسب وليس أي اسم (أفضل دائماً أن تكون أسماء المتغيرات معبرة عن المتغير والهدف منه ونوعه ..)

السطر الثالث هو إعلان عن متغير من النوع Integer ووظيفة هذا المتغير أنه بمثابة عداد ..إذ أن من يعرف الحلقات التكرارية يعرف أنه لعمل حلقة تكرارية يستلزم أن يكون هناك عداد لهذه الحلقة التكرارية .. وقيمة المتغير X ستتغير مع كل حلقة ..

أقصد أنه في أول لفة ستكون قيمة المتغير تساوي رقم البداية (فإذا كان رقم البداية 1 فإن المتغير يساوي 1) وفي اللفة الثانية تزداد قيمة المتغير بمقدار 1 ليصبح على سبيل المثال 2 وفي اللفة الثالثة يساوي 3 وفي اللفة الرابعة ..كمل إنت !! :rol:

 

انتهينا من الأسطر التقليدية (تسمية الإجراء والإعلان عن المتغيرات) ...

نتوقف قليلاً لللتجربة !! ماذا سنجرب يا ترى ؟ هل هناك ما يستدعي منا أن نجربه ونحن ما زلنا في البداية ولم نكتب أسطر فعلية للكود .. نعم

لابد أن نتعلم شيئاً جديداً ومفيداً عند التعامل مع الأكواد ......

تطبيق : انسخ الكود السابق في موديول جديد ثم ضع الماوس داخل الإجراء الفرعي .. ومن قائمة View في محرر الأكواد اختر الأمر Local Window

إنها نافذة ستجعل منك محترفاً في فهم الأكواد (صدقوني ستذهلون منها بشكل كبير جداً) ..إنها بمثابة نافذة لك لتدرك كيف يتم تنفيذ أسطر الكود سطر سطر

انتبهوا لهذه النافذة بشكل كبير ...

كيف سيتم التعامل مع هذه النافذة المدهشة ؟ الأمر في غاية اليسر والسهولة والبساطة .. ستستخدم من لوحة المفاتيح F8 وهو يمكنك من متابعة الكود سطر بسطر ..

كفانا كلام نظري وننتقل للتطبيق .. ضع الماوس داخل الإجراء الفرعي (الكود) ثم اضغط F8 مرة واحدة فقط .. وانظر للنافذة التي كانت فارغة منذ قليل

لقد أصبحت ثرية .. نعم ثرية .. بضغطة واحدة ستتمكن الآن من تحليل المتغيرات ..

لقد تم وضع سطر باللون الأصفر على أول سطر بالكود كما تم وضع المتغيرات في النافذة بهذا الشكل

Untitled.png.675b9838a30a49b28fc5db4e39f

في الناحية اليسار من النافذة توجد أسماء المتغيرات التي تم الإعلان عنها وفي العمود الأوسط قيمة المتغير ..فقيمة المتغير الأول Empty ما زالت المصفوفة فارغة لم يتم إضافة أي عنصر لها ، وقيمة المتغير الثاني لأنها من النوع Interger فتحمل القيمة صفر لأننا لم نضع قيمة لها بعد

وفي العمود الثالث نوع المتغير فالمتغير الأول من النوع Variant وهذا النوع غالباً ما نستخدمه مع المصفوفة لأن المصفوفة مرنة ربما تحمل نصوص وربما أرقام وربما حتى نطاقات (موضوع يطول شرحه)

 

إلى الخطوة الثانية والتي هي نفس الخطوة الأولى (حد يفكرني !!) محدش مركز !! ...:wallbash:  الخطوة التانية اضغط F8 مرة تانية ..

ماذا حدث ؟

لقد تجاوز السطر الأصفر أسطر الإعلان عن المتغيرات .. نعم لأنها أسطر غير قابلة للتنفيذ إنما تظهر المعلومات المرتبطة بهذه المتغيرات مع أول ضغطة على F8

بعد السطر الأول في الكود .. انتقل السطر الأصفر ليظلل السطر التالي .. ولم يحدث أي تغيير في نافذة الـ Local Window

myArray = Array("Yasser", "Khalil", "Officena", "Forum")

هل التنفيذ مرتبط بالسطر الأصفر ؟ نعم

يتم تنفيذ السطر الملون بالأصفر بعد الخروج من السطر الأصفر وليس عند تظليل السطر الأصفر

 

الخطوة الثالثة .. ماذا تتوقع أن يحدث بعد أن نضغط F8 للمرة الثالثة؟؟؟

فكر ثواني عشان تفهم اللعبة .. سيتم تنفيذ السطر الأصفر

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

انتبه انتبه ..لم أطلب منك أن تبدأ الخطوة الثالثة بعد ..!! فقط انظر لنافذة الـ Local Window على المتغير myArray وشوف القيمة هتلاقيها Empty أي أن المصفوفة فارغة (وكما بص على يسار اسم المتغير ..هل يوجد علامة زائد بجانب اسم المتغير myArray ؟؟ الإجابة لا يوجد)

ابدأ تنفيذ الخطوة الثالثة ألا وهي نفس الخطوة الأولى ونفس الخطوة الثانية ..حد يفكرني !! محدش مركز .. اضغط F8 بردو (أنا مش عايز أتعبك أنا عايز تشوف وتتعلم وبعديها خلي دماغك يتكلم)

ضغطت يا وائل ولا لسه على F8 ؟؟؟ تمام تمام الله ينور عليك

ايه اللي حصل يا حوسو ..

لما نحب نعرف ايه اللي حصل هنبص على الكود وعلى النافذة .. نبص الأول على الكود هنلاقي إنه تم الانتقال للسطر التالي وأصبح السطر التالي مظلل باللون الأصفر .. طيب الأهم إننا نبص على النافذة Local ونشوف المتغير myArray هنلاقي حاجة غريبة بتحصل .. حاجة بسيطة لكن مهمة

المصفوفة اللي كانت فارغة Empty من شوية ومفيش علامة زائد جنبها .. أصبح فيه علامة زائد على يسار اسم المتغير ولما نبص في عمود القيمة هنلاقي كلمة Empty أصبحت مش موجودة .. دا لأنها بعد الانتقال من السطر اللي فات بقت المصفوفة فيها قيم ..

نبص للعمود الثالث هنلاقي بردو فيه شيء اتغير ..نوع المتغير لم يتغير زي ما هو Variant بس فيه شيء إضافي .. هتلاقي ما بين قوسين بداية المصفوفة ونهاية المصفوفة

بمعنى آخر المصفوفة اللي بنتعامل معاها دلوقتي فيها 4 قيم .. ولما نبص نلاقي الأرقام من 0 إلى 3 (افتراضي المصفوفة بتبدأ من الرقم 0 وليس الرقم 1 )

الأرقام دي عبارة عن فهرس للمصفوفة (زي فهرس كتاب)

يعني مثلاً أول قيمة في المصفوفة اللي هي Yasser لها الرقم 0 في الفهرس .. والقيمة Khalil ليها رقم 1 وهكذا لنهاية القيم

كل عنصر داخل المصفوفة ليها رقم في الفهرس .. عايز تتأكد من كلامي تعال على نفسك شوية ونتعب ونضغط علامة الزائد اللي على يسار اسم المتغير (خلي الصورة تتكلم شوية عشان أنا تعبت) :blink:

02.png.dc403de04187a589544f89deaccb224a.

زي ما إحنا شايفين الفهرس من 0 1 2 3 وكل عنصر له رقم في الفهرس وله قيمة

يعني دلوقتي لو عايز أعرف تاني قيمة في المصفوفة هعمل ايه؟

ببساطة ممكن استخدم كلمة Msgbox ثم اسم المصفوفة ثم افتح قوس ثم أضع رقم القيمة المطلوبة ثم اقفل القوس

MsgBox myArray(1)

واحد يقولي إنت مش بتجيب تاني عنصر في المصفوفة ..طيب ليه كتبت واحد مش 2 (أقوله لأن المصفوفة بتبدأ من الصفر وليس من الواحد ..) فالواحد بمثابة 2 (عد من البداية ::: رقم صفر هو أول عنصر في المصفوفة .. رقم 1 هو ثاني عنصر في المصفوفة وهكذا)

 

المهم عشان أنا بدأت أتوه من نفسي :biggrin:

ننتقل للحلقة التكرارية ودي بيكون ليها عداد زي ما قلنا والعداد هنا X فبنقول For X وبعديها علامة يساوي ... بعد يساوي بداية الحلقة التكرارية يليها كلمة To ثم نهاية الحلقة التكرارية

بداية الحلقة هتكون أول رقم فهرس في المصفوفة اللي هو في مثالنا يساوي صفر ، ونهاية الحلقة التكرارية هو آخر رقم في الفهرس اللي هو 3

وبدل ما نكتب من 0 إلى 3 (استخدمنا دالة بتجيب أول رقم في المصفوفة واسمها LBound ودي اختصار لكلمة Lower Bound أي الحد السفلي أي أول رقم في الفهرس ... وأيضاً بالمثل استخدمنا دالة عشان تجيب آخر رقم في المصفوفة والدالة هي UBound ودي اختصار لكلمة Upper Bound أي آخر رقم في الفهرس)

طيب العداد لازمته ايه ؟؟ قلنا بيحمل القيمة الحالية ..فأول قيمة عندي هتكون صفر بالتالي قيمة X هتساوي صفر ..

إحنا دلوقتي واقفين في السطر الملون باللون الأصفر مع بداية الحلقة التكرارية

لو وقفنا بالماوس على كلمة X سيظهر تليح صغير في مستطيل أصفر صغير به قيمة المتغير ( في الصورة قيمة X تساوي صفر) وهو أول رقم في الحلقة التكرارية لأن رقم البداية صفر (والمتغير X يحمل قيمة أول رقم في بداية الحلقة)

03.png.1399c8bec1e849482d7180d8cf35d6cd.

المهم اضغط F8 لتنتقل للسطر التالي وعايز تروح بالماوس وتقف على الكلمة دي myArray(X) هتلاقي مربع أصفر فيه القيمة Yasser وروح للـ X وقف عليها ستجد القيمة صفر

أي أن المصفوفة المسماة myArray ثم نفتح قوس ونضع رقم الفهرس المطلوب ورقم الفهرس هنا هو صفر ..يحمل القيمة Yasser

اضغط F8 لتظهر لك رسالة بقيمة أول عنصر في المصفوفة ..

اضغط F8 مرة أخرى لتنتقل للفة الثانية في الحلقة .. ولاحظ أن الانتقال بعد ذلك سيكون ما بين السطرين

        MsgBox (myArray(X))
    Next X

القيمة X تتغير ويتغير معها القيمة التي تظهر في الرسالة .. أكمل الضغط على F8 لترى نتائج الكود بنفسك ...

وعينك دائماً على نافذة Local لترى قيمة المتغير X وهي تتغير مع كل لفة وطبعاً عند وصول قيمة X لـ 3 تنتهي الحلقة التكرارية لأن نهاية الحلقة هو الرقم 3

أتمنى أن يكون الشرح واضح ومفيد للجميع :wink2:

مع تحياتي أخوكم ياسر خليل أبو البراء :fff::fff:

  • Like 14
رابط هذا التعليق
شارك

:fff:  على الموضوع   :clapping:  على الشرح       :wink2:   عليك   ( باردة والله )    تحياتى   

  • Like 2
رابط هذا التعليق
شارك

الأستاذ والمعلم القدير الأخ الحبيب / ياسر خليل

بسم الله ما شاء الله

شرح رائع وموضوع أجمل كنت فى إحتياج لأتعلمه لأنى أتعامل دائما مع كم هائل جدا من التقارير التى بها بيانات وأريد التحكم بها ونقل بعض منها بأسلوب معين

جزاك الله كل خير وأسكنك الفردوس الأعلى وزادك الله من فضله وعلمه

تقبل خالص تحياتى وتقديرى لشخصكم الكريم

  • Like 2
رابط هذا التعليق
شارك

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

أستاذي القدير " ياسر خليل أبو البراء "

بارك الله فيك .. و في صحّتك و في أوقاتك و بجميع أمورك إن شاء الله

ما تقدّمه خدمةً للجميع بمختلف مستوياتهم .. يعجز لساني عن التّعبير عنه

تبارك الله ما شاء الله

زادك من علمه و فضله

فائق إحتراماتي و إعجاباتي

13687352251.gif.bba352a758c9e8664d43b337

 

 

 

  • Like 2
رابط هذا التعليق
شارك

الاخ والاستاذ الحبيب / ياسر خليل

رجعتنى لزمان وايام زمان ايام افتح الباب ونط من الشباك يا عبدالتواب

بس فى سؤال مهم جدا هو ليه فتح البيبان مبيكونش غير بالشتاء معاك ؟؟؟؟؟؟؟؟؟؟  :wink2: 

بجد روعه روعه روعه اسلوب شرح ممتع وجذاب ميخلكش تنام زى روتانا كدا اوعى تغمض عنيك

جزاكم الله خيرا وبارك فيك لا تحرمنا من هذه الكنوز وبانتظار المزيد بس خليها صيف وشتاء

**عايز بس اقول للاخوة الاعضاء ان الموضوع ده مهم جدا انا شخصيا اتعلمت من خلاله الكثير فى بداية البرمجه كنت امشى بـ F8  خطوه خطوه حتى اشاهد الكود زى فيديو كدا قدامى واتعلم منه  وكمان الفايده الاكبر بعدما  تكون محترف بالاكواد اكيد هيقابلك كود فيه خطأ وانت مش عارف اين موقع الخطا لاصلاحه وقتها هتستفيد منها فى اكتشاف اين الخطا بالكود فهى عامله زى دكتور الاشعه بتعملك تصوير للكود**

:signthankspin:

:fff:تقبل تحياتى:fff:

تم تعديل بواسطه الصـقر
  • Like 3
رابط هذا التعليق
شارك

اخى الحبيب ياسر

مشكورا على الدرس الاكثر من رائع

وهذا ما تعودناه منك دائما

نسأل الله الا يحرمنا من علمك

وان يزيدك من فضله وعلمه

وان يتم عليك بنعمة الصحه والعافيه

تقبل تحياتى

تم تعديل بواسطه إبراهيم ابوليله
  • Like 1
رابط هذا التعليق
شارك

  • 3 weeks later...

السلام عليكم

إخواني الكرام وأحبابي في الله

بارك الله فيكم وجزاكم الله خيراً وجمع الله بيننا في الفردوس الأعلى

أشكركم جميعاً على شعوركم الطيب وكلماتكم الرقيقة .. لا حرمني الله من صحبتكم

تقبلوا تحياتي

رابط هذا التعليق
شارك

الأخ الفاضل أبو تيم

مشكور على مرورك العطر بالموضوع وأتمنى تكون استفدت منه بشكل كبير

جزيت خيراً على الدعاء الطيب ، ولك بمثل إن شاء الله

رابط هذا التعليق
شارك

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

اخي العزيز الفاضل الاستاذ ياسر خليل

بارك الله فيك وجزاك الله خير علي كل ماتقدمه لاخوانك وفي ميزان حسناتك إن شاء الله 

دمت ذخرا للإسلام والمسلمين

رابط هذا التعليق
شارك

وعليكم السلام ورحمة الله أبا الحسن والحسين

مرورك بالموضوع شرف كبير لي .. فقد عطرته بردك

بارك الله فيك وجزاك الله خيراً على دعائك الطيب

  • Like 1
رابط هذا التعليق
شارك

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

موضوع جميل وشرح اكثر من رائع مشكور عليه

حبذا لو درس آخر او شرح نفس الموضوع على مصفوفات ذات بعدين!!!

بارك الله بك

رابط هذا التعليق
شارك

أخي الكريم محي الدين

مشكور على مرورك العطر بالموضوع .. والدروس إن شاء ربي مستمرة طالما أن هناك أنفاس

المهم المتابعة والاستفادة من الأعضاء وترجمة النظري لعمل تطبيقي ..عايز أشوف أعمالكم المبهرة كما لا تنسوا إخوانكم المبتدئين أن تأخذوا بأيديهم وتساعدوهم في ما استصعب عليهم

تقبل تحياتي

رابط هذا التعليق
شارك

أخي الكريم صلاح

قينك وفين أراضيك؟؟ بقالك فترة مختفي ..لعل غيابك خير

ليك وحشة والله .. مشكور على مرورك العطر بالموضوع

  • Like 1
رابط هذا التعليق
شارك

خير ان شاء الله اخى الفاضل ابو البراء شكرا على االاهتمام المشلكه بس انا شغال بفلاشة نت بعيد عنك وانت عارف ان الشبكه تمام ولا نقدر نقول غير كده ... احد .. احد

  • Like 1
رابط هذا التعليق
شارك

  • 2 months later...

وجزيت خيراً أخي الفاضل أحمد

مشكور على مرورك العطر بالموضوع وبارك الله فيك ووفقك لما يحب ويرضى

تقبل تحياتي

رابط هذا التعليق
شارك

الحمد لله أن نال الموضوع إعجابكم أخي العزيز محمد الموافي

وإن شاء الله يكون فتحة خير لمن أراد التعلم

تقبل وافر تقديري واحترامي

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information