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

دورة كاملة في المصفوفات Arrays من البداية إلى ما شاء الله (الحلقة الثانية)


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

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

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

أعتقد أن الوقت الذي انقضى على الحلقة الأولى من هذه الدورة الخاصة بالمصفوفات يكفي وزيادة ، وأعتذر عن التأخر في مواصلة الدورة ، فأنتم تعرفون مشاغل الحياة ..

رابط الحلقة الأولى

نبدأ على بركة الله الحلقة الثانية من حلقات "دورة كاملة في المصفوفات" ، ويا ريت اللي لسه أول مرة يشوف الموضوع ، إنه يقرا الحلقة الأولى عشان يقدر يتواصل معانا .. مش عايزين نكرر المعلومة إلا للضرورة ، وعشان يقدر يتابع الجديد (دا لو فيه متابعين من الأساس):Rules:

 

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

النوع الأول وهو المصفوفة الثابتة يعني لها أبعاد ثابتة مش بتتغير

والنوع الثاني وهو المصفوفة الديناميكية يعني غير الثابتة ودي بيتم تحديد أبعادها أثناء عمل الكود ، وممكن تتحدد في أول الكود بأبعاد محددة ، وممكن تغيرها أثناء الكود إذا لزم الأمر ...

 

الإعلان عن المصفوفة الثابتة

--------------------------------

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

Sub DecArrayStatic()
    Dim arrMarks1(0 To 3) As Long

    Dim arrMarks2(3) As Long

    Dim arrMarks3(1 To 5) As Long

    Dim arrMarks4(2 To 4) As Long
End Sub

نمسك سطر سطر عشان نفهم إزاي بيتم الإعلان ..

السطر الأول بعد ما كتبنا اسم المتغير (اللي هو من النوع مصفوفة) بين قوسين كتبنا من 0 إلى 3 أي أن فهرس المصفوفة سيكون عبارة عن 0 ، 1 ، 2 ، 3 ..

السطر الثاني زي الأول بالضبط بمعنى إن الفهرس عبارة عن 0 ، 1 ، 2 ، 3 .. طيب ليه؟ لأن الافتراضي للمصفوفات إن الفهرس بيبدأ من الرقم صفر .. بكدا نفهم إزاي نتعامل : يا إما أحدد بداية الفهرس ولو حددتها صفر أو سبتها من غير ما أحدد البداية يبقا النتيجة واحدة

السطر الثالث بداية المصفوفة 1 ونهايتها 5 أي 5 عناصر داخل المصفوفة

السطر الرابع بداية المصفوفة 2 ونهايتها 4 أي عدد العناصر 3 عناصر ..

نفهم من الأسطر دي إن فيه مرونة كبيرة في التعامل مع المصفوفات يعني ممكن أبدأ من أي رقم وأنتهي بأي رقم (منتهى المرونة ... بس مش مرونة بشكل كبير) ..دا لأن عملياً صعب أحدد أبعاد المصفوفة ، لأن من خصائص البيانات إنها متغيرة ، فلو مثلاً عندنا مدرسة لها قاعدة بيانات ، فالقاعدة متغيرة .. عدد الطلاب مش ثابت (طالب حول من المدرسة - طالب حول إلى المدرسة) بالتالي العدد غير ثابت ، ومن هنا لازم نتعلم النوع التاني من المصفوفات اللي هو الديناميكي أي المرن أي الغير ثابت

 

الإعلان عن المصفوفة الديناميكية

-------------------------------------

هنا بيتم الإعلان عن مصفوفة غير محددة الأبعاد ، ويمكن بعد كدا من خلال الكود تحديد أبعادها باستخدام كلمة اسمها ReDim ..

Sub DecArrayDynamic()
    Dim arrMarks() As Long

    ReDim arrMarks(0 To 5)
End Sub

السطر الأول فتحنا قوس وقفلناه بعد اسم المتغير وبس .. بكدا وببساطة أعلنا عن المصفوفة الديناميكية .. وفي السطر الثاني لو حبيت أحدد أبعادها بستخدم الكلمة ReDim ويمكنك تحديد أبعادها اعتماداً على نطاق ديناميكي ..

مثال : لو عندك طلاب وقلنا إن عددهم غير ثابت ، يبقا بتعلن عن المصفوفة وتخليها من النوع الديناميكي واثناء الكود بتشوف عدد الطلاب من خلال أسطر أخرى ، وعلى أساس الأسطر الأخرى بتحدد أبعاد المصفوفة ..يعني التحديد مبيكونش مسبق زي النوع الأول ..التحديد للأبعاد بيكون أثناء عمل الكود

 

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

بيتم تعيين قيم للمصفوفة سواء كانت ثابتة أو ديناميكية من خلال معرفة رقم العنصر في الفهرس

بالمثال يتضح المقال ودا كلام مفيهوش جدال :yes:

Sub AssignValue()
    Dim arrMarks(0 To 3) As Long
 
    arrMarks(0) = 5
 
    arrMarks(3) = 46
 
    arrMarks(4) = 99
End Sub

دا مثال في السطر الأول أعلنا عن المصفوفة اللي أبعادها من 0 إلى 3 أي عدد عناصرها يساوي 4 ( 0 - 1 - 2 - 3)

السطر التاني وضعنا القيمة 5 لمين ؟ للعنصر اللي رقم فهرسه 0

السطر الثالث وضعنا القيمة 49 لمين؟ قولوا إنتو يا حلوين !! للعنصر اللي رقم فهرسه 3

السطر الرابع بقا ونركز عشان دا مهم .. وضعنا القيمة 99 لمين؟ نفس الكلام يا حلوين !! للعنصر اللي رقم فهرسه 4 (بس عندك ستوب STOP) :angry:

ارجع تاني لأول سطر .. إحنا عندنا أبعاد المصفوفة من 0 إلى 3 يعني أول رقم فهرس عندي صفر وآخر رقم فهرس عندي 3 ... يعني الـ 4 مش موجودة (طبعاً لدواعي أمنية ..ما إحنا عارفين 4 من الأرقام المحظورة دلوقتي)

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

المهم يرجع مرجوعنا لموضوعنا : بعد تنفيذ السطر الأخير هيظهر لنا رسالة خطأ بالشكل دا لأن رقم الفهرس دا مش موجود

001.png

 

 

ننتقل لجزئية جديدة

فيه طرق تانية لتعيين قيم للمصفوفة وهي باستخدام الدالة Array ، ودي ممكن نستخدمها عشان نخزن من خلالها قيم المصفوفة بالشكل التالي

Sub ArrayFunction()
    Dim Arr1 As Variant
    Arr1 = Array("Orange", "Peach", "Pear")

    Dim Arr2 As Variant
    Arr2 = Array(5, 6, 7, 8, 12)
End Sub

مع استخدام الدالة دي بنعلن عنها من النوع Variant ..

في السطر الأول والثاني تم الإعلان عن المصفوفة من النوع Variant وقمنا بوضع القيم بين أقواس .. ونلاحظ أقواس التنصيص أننا بنتعامل مع نصوص في قيم المصفوفة دي

في السطر الثالث والرابع نفس الإعلان وقمنا بوضع القيم بين أقواس بي هنا مفيش أقواس تنصيص لأننا بنتعامل مع قيم رقمية

نفذ الكود باستخدام F8 ولاحظ نافذة اللوكال بنفسك

لاحظت ؟؟!! اللي لاحظ يرفع ايده .. برافو برافو محدش لاحظ حاجة .. :clapping:

روح لعمود الـ Type في نافذة اللوكال بعد تعيين القيم للمصفوفة ولاحظ نوع المتغير بقا متغير ...يعني بعد ما كان Variant نلاحظ اتكتب مثلاً في حالة المصفوفة الأولى اللي بتتعامل مع النصوص اتكتب String ومع المصفوفة الثانية اتكتب Integer ..

وحاجة تانية إن أول رقم فهرس في المصفوفتين بيبدأ من صفر لأن دي البداية الافتراضية (مننساش يا واش يا واش) :wink2:

**************************************

نيجي لآخر جزئية في حلقة اليوم ألا وهي استخدام المصفوفة ودالة الإنشطار (Split Function)

انشطار .. ربنا يكفينا شر النار .. !! انشطار ايه ؟! هو إنت بتصنع قنابل نووية ..

الانشطار يا شطار معناه تقسيم الشيء لأجزاء صغيرة .. قطعه حتت وارميه للقطط

نتكلم جد وبلاش هزار ..

نشوف المثال ده

Sub SplitFunction()
    Dim str As String
    str = "Red,Yellow,Green,Blue"

    Dim arr() As String
    arr = Split(str, ",")
End Sub

في السطر الأول أعلنا عن متغير من النوع النصي وفي السطر الثاني وضعنا قيمة المتغير النصي بين أقواس تنصيص وبيفصل بين الكلمات الموجودة في النص علامة الفاصلة (Comma) ..

في السطر التالت أعلنا عن المتغير باسم Arr ووضعنا أقواس بمعنى إنها مصفوفة ديناميكية (صحيح الكلام دا مش صحيح ، بس دا مجرد مثال عشان نفهم دالة الإنشطار Split)

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

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

"Red,Yellow,Green,Blue"

وبعدين فاصلة وبعدين البارامتر الثاني وهو نوع الفاصلة اللي هيتم على أساسها عملية الإنشطار ..ممكن تكون الفاصلة دي مسافة أو أي نوع من أنواع الفواصل بين الكلمات .. وهنا استخدمنا الفاصلة Comma ووضعناها بين أقواس تنصيص

لاحظ أن المصفوفة المسماة Arr بعد تنفيذ السطر الأخير حملت في 4 عناصر (من 0 إلى 4) وهي العناصر اللي فصلنا بينها بالفاصلة ، لتصبح المصفوفة حاملة (في الشهر الرابع) حاملة لأربع قيم وهي Red و Yellow و Green و Blue ..

وإلى هنا تعبت يداااااااااااااااااي ولم أعد أستطيع المواصلة ، فقد كان المشوار طويل ...:signthankspin:

لمزيد من الدعم لصاحب الموضوع (ودا اختياري مش إجباري) .. ولو عندك وقت فاضي لمدة دقيقتين اتنين تابع الرابط الإعلاني في الرابط التالي (سيكون عبارة عن سلسلة من الإعلانات ..قم بالضغط على Skip Ad بعد كل 5 ثواني ... وأكرر دا مش إجباري دا اختياري ، يعني لو وقتك ميسمحش أنا مسامح ..

 

حمل الملف الذي يحتوي على أكواد الموضوع من هنا

 

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

كان معكم أخوكم أبو البراء من منتدى الأحبة منتدى أوفيسنا :fff::fff::fff:

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

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

بارك الله فيك أخي الحبيب محي الدين وجزيت خيراً على مرورك العطر بالموضوع

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

استاذ ياسر ابوالبراء

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

مهما كتبنا شكرا لك فان ما تقدمه لنا اكثر بكثير

حلول وشروحات مفيده للغاية

اعزكم الله نصركم الله بارك الله لك في مالك وولدك

جزاكم الله خيرا

بنجمع الدروس ونريد في نهاية الدروس

احنا طمعين شوية المصفوفات بالذات ليس لها شروحات واضحة في المنتديات العربيه

وانت تعلم انها الخطوه المهمه للبرمجه حيث تتعامل مع البيانات الكبيره

والمصفوفه ليست داله كما اعلم وانما هى متغيرات كثيره تحت متغير واحد

فنرجو طرح امثله عملية ثم ثم تشرح لنا كيف فكر في المثال ابوالبراء للوصول للهدف

اتمنى ان يكون وصل المطلوب

 

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

جزاك الله كل خير يا ابو البراء

جعله الله فى ميزان حسناتك وبارك الله لك فى اهلك ومالك وكل ما تحب ورزقك من حيث لاتحتسب

تقبل تحياتى ياغالى

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

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

بارك الله فيكم وجزاكم الله خير الجزاء على دعواتكم الطيبة وشعوركم الطيب تجاهي

هذا أقل واجب تجاه إخواني أن أقوم بتقديم ما تعلمته لكم

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

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

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

أرجو عدم الاستعجال ..خلينا نستوعب الموضوع واحدة واحدة ، وأنا بتعلم معاكم ، يعني مش أعلى من حد منكم ، كلنا المفروض بنفيد ونستفيد ..

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

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

أنا قلت مجرد رأي شخصي يا أخي الغالي سعد .. وقد أكون مخطيء

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

تقبل تحياتي

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

وجزيت خيراً أيها المتعلم المجتهد والأخ الحبيب أحمد

بارك الله فيك على مرورك العطر .. وإن شاء الله الصبر عواقبه طيبة وحسنة

عايزين نشوف الشغل بعد الدورة دي .. مش مجرد معلومات بتتحفظ وخلاص ..عايزين تطبيقات عملية وحلول تقدم على أعلى مستوى إن شاء المولى

تقبل تحياتي

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

حبيبى يا ابوالبراء

تسمح لى ان احجز مقعد ام الباب مغلق :wink2: 

بصراحه شروحات ولا اروع من كدا 

بس انا منتظر الدخول فى منطقه الغريق :biggrin: يعنى توصل بالشروحات الى ابعد مدى انا بجد عايز استفيد 

جزاكم الله خيرا الجزاء وجعل اعمالك فى ميزان حسناتك

تقبل منى وافر الاحترام والتقدير:fff:

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

اخي وحبيبي في الله صاحب الأعمال المتميزة والمتألقة في المنتدى حسام عيسى

إنه لشرف كبير مروركم العطر بالموضوع

بارك الله فيك وجزاك الله كل خير على كلماتك الرقيقة

إن شاء الله نتدرج إلى أن نصل لمنطقة الغريق (بس مش عايزين حد مننا يغرق هناك ..!! ربنا يجيب العواقب سليمة)

خايف نوصل لمنطقة الغريق دلوقتي آلاقي نااااااااااس بتصرخ وتقول : إني أغرق إني أغرق ..

 

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

تقبل تحياتي

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

أخى وحبيبى وأستاذى ومعلمى الغالى / ياسر خليل

ما شاء الله تبارك الله زادك الله من فضله وعلمه

شرح أكثر من رائع وموضوع فى غاية الأهمية

مع إنها متأخرة شوية

بس حضرتك عارف الظروف

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

 

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

أخي الحبيب جلال الجمال

أخي الغالي ياسر فتحي

بارك الله فيكما وجزيتم خيراً على مروركما العطر بالموضوع .. وأرجو أن تكونوا قد استفدتم من الشرح المقدم

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

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

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