مصفوفات VB.Net: سلسلة ديناميكية مع أمثلة

⚡ ملخص ذكي

تُخزّن مصفوفات VB.Net قيمًا متعددة من نفس نوع البيانات تحت اسم متغير واحد، باستخدام فهرس يبدأ من الصفر. تدعم هذه المصفوفات كلاً من المصفوفات ذات الحجم الثابت والمصفوفات الديناميكية، كما تُحوّل دالتا Split وJoin بين السلاسل النصية والمصفوفات.

  • 🔘 أساسيات المصفوفات: تخزن المصفوفة عناصر مرتبة من نوع بيانات واحد، حيث يكون العنصر الأول في الفهرس 0 والعنصر الأخير في الفهرس n ناقص 1.
  • ☑️ إعلان: تُعلن عبارة Dim عن مصفوفة، كما في Dim myData() As Integer، ويمكن تهيئة العناصر داخل الأقواس.
  • ✅ ثابت مقابل ديناميكي: تحتوي المصفوفة ذات الحجم الثابت على عدد محدد من العناصر، بينما تنمو المصفوفة الديناميكية باستخدام عبارات ReDim و ReDim Preserve.
  • 🧪 الوصول والحذف: تتم قراءة العناصر من خلال فهرسها، وتقوم عبارة Erase بإزالة مصفوفة لتحرير الذاكرة.
  • 🛠️ التقسيم والدمج: تقوم دالة Split بتقسيم السلسلة إلى مصفوفة، بينما تقوم دالة Join بدمج عناصر المصفوفة في سلسلة واحدة.
  • 🤖 مساعدة الذكاء الاصطناعي: GitHub Copilot و IntelliCode في Visual Studio 2026، يمكنك إنشاء تعريفات المصفوفات والحلقات واستدعاءات Split أو Join من خلال مطالبات باللغة الإنجليزية البسيطة.

مصفوفات VB.Net

ما هي المصفوفة؟

المصفوفة هي بنية بيانات تُستخدم لتخزين عناصر من نفس النوع نوع البياناتيتم ترتيب العناصر بالتسلسل بحيث يكون العنصر الأول في الفهرس 0 والعنصر الأخير في الفهرس n-1، حيث n هو العدد الإجمالي للعناصر في المصفوفة.

كيفية الإعلان عن صفيف وتهيئته

In VB.Net، يتم الإعلان عن المصفوفات باستخدام عبارة Dim. على سبيل المثال:

Dim myData() As Integer

في المثال أعلاه، قمنا بتعريف مصفوفة باسم myData، ويجب أن تحتوي على عناصر من نوع البيانات الصحيح. يوضح المثال التالي كيف يمكننا إعلان مصفوفة لاحتواء عناصر سلسلة:

Dim myData(10) As String

لقد قمنا بتحديد مصفوفة باسم myData لاستيعاب 10 سلاسل.

يمكننا تهيئة المصفوفات في وقت إعلانها. على سبيل المثال:

Dim myData() As Integer = {11, 12, 22, 7, 47, 32}

لقد أعلنا عن المصفوفة myData وأضفنا إليها 6 عناصر صحيحة. ويمكن القيام بذلك أيضًا في حالة السلاسل:

Dim students() As String = {"John", "Alice", "Antony", "Gloria", "jayden"}

لقد أنشأنا مصفوفة باسم الطلاب وأضفنا إليها 5 أسماء.

تنقسم المصفوفات في VB.Net إلى مجموعتين حسب إمكانية تغيير حجمها بعد تعريفها. المجموعة الأولى هي المصفوفات ذات الحجم الثابت.

صفائف ذات حجم ثابت

تحتوي المصفوفة ذات الحجم الثابت على عدد ثابت من العناصر. هذا يعني أنه يجب عليك تحديد عدد العناصر التي ستحتفظ بها أثناء تعريفها. لنفترض أنك بحاجة إلى مصفوفة تحتوي على 3 أسماء طلاب فقط. يمكنك تعريف المصفوفة وتهيئتها كما يلي:

Dim students(0 to 2) As String 
      
students(0) = "John"
students (1) = "Alice"
students (2) = "Antony"

لقد بدأنا بإعلان مصفوفة نصية باسم students. يشير الرقم 0 إلى 2 إلى أن المصفوفة ستخزن عناصر من مؤشرها 0 إلى مؤشرها 2، مما يعني أن لدينا 3 عناصر في المجموع.

لإضافة عناصر إلى المصفوفة، استخدمنا اسم المصفوفة وحددنا الفهرس الذي سيتم تخزين العنصر فيه. على سبيل المثال، سيتم تخزين الاسم John في الفهرس 0 للمصفوفة، مما يعني أنه سيشكل العنصر الأول للمصفوفة. سيكون أنتوني العنصر الأخير في المصفوفة.

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

المصفوفات الديناميكية

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

Dim nums() As Integer

لقد قمنا بتعريف مصفوفة أعداد صحيحة تسمى nums. أنت الآن بحاجة إلى إضافة عنصرين إلى المصفوفة، مع إتاحة المجال لتغيير حجمها. تحتاج إلى استخدام عبارة ReDim كما يلي:

ReDim nums(1)
nums(0) = 12
nums(1) = 23

تحتوي مصفوفتنا الآن على عنصرين في الفهرس 0 و1. نحتاج إلى إضافة عنصر ثالث إليها في الفهرس 3 مع الحفاظ على العنصرين الموجودين بالفعل. يمكننا القيام بذلك على النحو التالي:

ReDim Preserve nums(2)
nums(2) = 35

يحتوي المصفوفة الآن على ثلاثة عناصر.

بعد ملء المصفوفة، تتمثل المهمة التالية في قراءة القيم التي تحتويها.

استرجاع محتويات المصفوفة

الاسترداد يعني الوصول إلى عناصر المصفوفة. للوصول إلى عنصر المصفوفة، نستخدم الفهرس الخاص به. دعونا نوضح ذلك باستخدام مثال.

الخطوة 1) ابدأ بإنشاء تطبيق وحدة تحكم جديد.

الخطوة الثانية) أضف الكود التالي إلى التطبيق:

Module Module1
    Sub Main()

       Dim students(0 to 2) As String 

        students(0) = "John"

        students(1) = "Alice"

        students(2) = "Antony"

        Console.WriteLine("First student is {0} ", students(0))

        Console.WriteLine("Second student is {0} ", students(1))

        Console.WriteLine("Third student is {0} ", students(2))


        Console.ReadKey()

    End Sub

End Module

الخطوة 3) شغّل الكود بالنقر على زر "ابدأ" من شريط الأدوات. ستظهر لك النافذة التالية:

استرجاع محتويات المصفوفة

لقد استخدمنا الكود التالي:

استرجاع محتويات المصفوفة

شرح Code:

  1. إنشاء وحدة تسمى Module1.
  2. إنشاء الإجراء الفرعي الرئيسي.
  3. إنشاء مصفوفة باسم الطلاب لتخزين عناصر السلسلة. ستقوم المصفوفة بتخزين العناصر من الفهرس 0 إلى الفهرس 2، مما يعني أنها ستحتوي على إجمالي 3 عناصر.
  4. إضافة الاسم John باعتباره العنصر الأول في المصفوفة، أي John المخزن في الفهرس 0.
  5. إضافة اسم Alice باعتباره العنصر الثاني في المصفوفة، أي Alice المخزنة في الفهرس 1.
  6. إضافة اسم Antony باعتباره العنصر الثالث في المصفوفة، أي Antony المخزن في الفهرس 2.
  7. طباعة بعض النصوص والعنصر المخزن في الفهرس 0 لمجموعة الطلاب الموجودة على وحدة التحكم. يساعدنا الطلاب (0) في الوصول إلى العنصر الموجود في الفهرس 0 للمصفوفة المسماة الطلاب.
  8. طباعة بعض النصوص والعنصر المخزن في الفهرس 1 لمجموعة الطلاب الموجودة على وحدة التحكم. يساعدنا الطلاب (1) في الوصول إلى العنصر الموجود في الفهرس 1 للمصفوفة المسماة الطلاب.
  9. طباعة بعض النصوص والعنصر المخزن في الفهرس 2 لمجموعة الطلاب الموجودة على وحدة التحكم. يساعدنا الطلاب (2) في الوصول إلى العنصر الموجود في الفهرس 2 للمصفوفة المسماة الطلاب.
  10. إيقاف نافذة وحدة التحكم مؤقتًا في انتظار قيام المستخدم باتخاذ إجراء لإغلاقها.
  11. نهاية الإجراء الفرعي.
  12. نهاية الوحدة.

إضافة عناصر جديدة إلى مصفوفة

لن يحدث هذا إلا إذا كان لديك مصفوفة ديناميكية. إذا كنت قد أعلنت مصفوفة ذات أبعاد ثابتة وكانت مليئة بعناصر المصفوفة، فلن تتمكن من إضافة عناصر جديدة إليها. يوضح المثال التالي كيفية إضافة عناصر جديدة إلى مصفوفة ديناميكية:

الخطوة 1) ابدأ بإنشاء تطبيق وحدة تحكم جديد.

الخطوة الثانية) أضف الكود التالي إلى التطبيق:

Module Module1
    Sub Main()

        Dim nums() As Integer

        ReDim nums(1)
        nums(0) = 12
        nums(1) = 23

        For x = 0 To nums.Length - 1
            Console.WriteLine("Initial array element: {0}", nums(x))
        Next

        ReDim Preserve nums(2)
        nums(2) = 35

        For x = 0 To nums.Length - 1
            Console.WriteLine("Final array element: {0}", nums(x))
        Next

        Console.ReadKey()
    End Sub

End Module

الخطوة 3) انقر على زر "ابدأ" من شريط الأدوات لتشغيل الكود. ستظهر لك النافذة التالية:

إضافة عناصر جديدة إلى مصفوفة

لقد استخدمنا الكود التالي:

إضافة عناصر جديدة إلى مصفوفة

شرح Code:

  1. إنشاء وحدة تسمى Module1.
  2. إنشاء الإجراء الفرعي الرئيسي.
  3. إنشاء مصفوفة تسمى nums للاحتفاظ بالقيم الصحيحة.
  4. تحديد أن المصفوفة أعلاه سوف تخزن عنصرين، أي عند الفهرس 0 و1 مع السماح بمساحة لتغيير الحجم.
  5. إضافة العنصر 12 إلى الفهرس 0 لأرقام المصفوفة.
  6. إضافة العنصر 23 إلى الفهرس 1 لأرقام المصفوفة.
  7. استخدام حلقة for لإنشاء متغير x لمساعدتنا في التكرار من العنصر الأول إلى العنصر الأخير في أرقام المصفوفة. لاحظ أن المصفوفة تحتوي الآن على عنصرين، 12 و23.
  8. طباعة بعض النصوص وعناصر المصفوفة على وحدة التحكم.
  9. إنهاء حلقة التكرار والقفزping إلى الجزء التالي من الكود.
  10. قم بتغيير حجم أرقام المصفوفة للسماح بالعناصر الموجودة في الفهارس من 0 إلى 2. وسيكون بمقدورها الآن تخزين 3 عناصر بدلاً من 2. تساعدنا الكلمة الأساسية Preserve في الحفاظ على العناصر الحالية للمصفوفة، أي 12 و23.
  11. إضافة العنصر 35 إلى الفهرس 2 للمصفوفة. تحتوي المصفوفة الآن على ثلاثة عناصر، 12 و23 و35.
  12. استخدام حلقة for لإنشاء متغير x لمساعدتنا في التكرار من العنصر الأول إلى العنصر الأخير في أرقام المصفوفة. لاحظ أن المصفوفة تحتوي الآن على ثلاثة عناصر، 12 و23 و35.
  13. طباعة بعض النصوص وعناصر المصفوفة على وحدة التحكم.
  14. إنهاء حلقة التكرار والقفزping إلى الجزء التالي من الكود.
  15. قم بإيقاف نافذة وحدة التحكم مؤقتًا في انتظار أن يتخذ المستخدم إجراءً لإغلاقها.
  16. نهاية الإجراء الفرعي.
  17. نهاية الوحدة.

حذف مصفوفة

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

لحذف مصفوفة، عليك فقط استدعاء عبارة Erase متبوعة باسم المصفوفة. على سبيل المثال:

Dim nums(1) As Integer
        nums(0) = 12
        nums(1) = 23
Erase nums

لقد أعلنا عن مجموعة من الأعداد الصحيحة تسمى nums وأضفنا عنصرين إليها. سوف تقوم عبارة Erase nums بمسح المصفوفة.

بالإضافة إلى تخزين القيم، توفر لغة VB.Net وظائف مدمجة لتحويل البيانات بين السلاسل النصية والمصفوفات. أول هذه الوظائف هي وظيفة Split.

وظيفة الانقسام

تساعدنا دالة split التي توفرها لغة Visual Basic .NET على تقسيم سلسلة نصية إلى أجزاء وتخزينها في مصفوفة. يوضح المثال التالي كيفية استخدام هذه الدالة:

الخطوة 1) إنشاء تطبيق وحدة تحكم جديد.

الخطوة الثانية) أضف الكود التالي إلى التطبيق:

Module Module1
    Sub Main()

        Dim myarray() As String
        Dim guru99 As String
        Dim x As Integer

        guru99 = "Welcome, to, Guru99"
        myarray = Split(guru99, ", ")

        For x = LBound(myarray) To UBound(myarray)

            Console.WriteLine(myarray(x))

        Next

        Console.ReadKey()
    End Sub

End Module

الخطوة 3) شغّل الكود بالنقر على زر "ابدأ" من شريط الأدوات. ستظهر لك النافذة التالية:

وظيفة الانقسام

لقد استخدمنا الكود التالي:

وظيفة الانقسام

شرح Code:

  1. إنشاء وحدة تسمى Module1.
  2. بدء الإجراء الفرعي الرئيسي.
  3. إنشاء مصفوفة باسم myarray للاحتفاظ بقيم السلسلة.
  4. إنشاء متغير سلسلة اسمه guru99.
  5. إنشاء متغير عدد صحيح يسمى x.
  6. تعيين سلسلة إلى المتغير guru99.
  7. تقسيم السلسلة أعلاه إلى أجزاء ووضعها في المصفوفة المسماة myarray. "،" (الفاصلة) هي الفاصلة، وبالتالي فإن وظيفة الانقسام ستستخدمها لتحديد نهاية الأجزاء المختلفة من السلسلة.
  8. استخدام المتغير x للتكرار عبر المصفوفة المسماة myarray. يحدد LBound وUBound الحدود الدنيا والحدود العليا للمصفوفة، على التوالي.
  9. طباعة قيم المصفوفة المسماة myarray على وحدة التحكم.
  10. إنهاء حلقة التكرار.

وظيفة الانضمام

تساعدنا وظيفة الانضمام على ضم عدة مصفوفات إلى سلسلة واحدة. يوضح المثال التالي ذلك:

الخطوة 1) ابدأ بإنشاء تطبيق وحدة تحكم جديد.

الخطوة الثانية) أضف الكود التالي إلى التطبيق:

Module Module1
    Sub Main()

        Dim students(0 To 2) As String

        students(0) = "John"

        students(1) = "Alice"

        students(2) = "Antony"

        Dim classmates As String


        classmates = Join(students, ", ")

        Console.WriteLine(classmates)

        Console.ReadKey()
    End Sub

End Module

الخطوة 3) قم بتشغيل الكود بالنقر فوق زر "ابدأ" الموجود في شريط الأدوات:

وظيفة الانضمام

لقد استخدمنا الكود التالي:

وظيفة الانضمام

شرح Code:

  1. إنشاء وحدة تسمى Module1.
  2. إنشاء الإجراء الفرعي الرئيسي.
  3. إنشاء مصفوفة باسم الطلاب تحتوي على 3 قيم سلسلة.
  4. إضافة اسم جون إلى الفهرس 0 للمصفوفة.
  5. إضافة اسم أليس إلى الفهرس 1 للمصفوفة.
  6. إضافة اسم أنتوني إلى الفهرس 2 للمصفوفة.
  7. تحديد متغير اسمه زملاء الدراسة من نوع بيانات السلسلة.
  8. يتم ضم جميع عناصر مصفوفة الطلاب وفصلها باستخدام الفاصلة (,). سيتم إسناد نتيجة هذه العملية إلى المتغير زملاء الدراسة.
  9. طباعة محتويات متغير زملاء الدراسة على وحدة التحكم.
  10. إيقاف نافذة وحدة التحكم مؤقتًا في انتظار قيام المستخدم باتخاذ إجراء لإغلاقها.
  11. إنهاء الإجراء الفرعي الرئيسي.
  12. إنهاء الوحدة النمطية.

الأسئلة الشائعة

نعم. تبدأ كل مصفوفة في VB.Net من الفهرس 0، لذا فإن العنصر الأول يقع عند الفهرس 0 والأخير عند الفهرس n ناقص 1. الحد الأدنى هو دائمًا 0 ولا يمكن تغييره.

استخدم خاصية الطول (Length) التي تُعيد العدد الإجمالي للعناصر، على سبيل المثال nums.Length. تُعيد الدالة UBound أعلى فهرس، ولأن المصفوفات تبدأ من الفهرس 0، فإن UBound يساوي الطول ناقص واحد.

استدعِ دالة Array.Sort المشتركة ومرّر إليها المصفوفة، على سبيل المثال Array.Sort(nums). ستعيد هذه الدالة ترتيب العناصر تصاعديًا في مكانها. استخدم Array.Reverse ثم ترتيب العناصر نفسها بترتيب تنازلي.

تُخزّن المصفوفة متعددة الأبعاد، أو المستطيلة، البيانات في صفوف وأعمدة باستخدام فاصلة داخل الأقواس، مثل Dim grid(2, 3) As Integer. يحتوي كل صف على نفس عدد العناصر.

المصفوفة غير المنتظمة هي مصفوفة عناصرها عبارة عن مصفوفات أخرى، لذا يمكن أن يحتوي كل صف على عدد مختلف من العناصر. يتم تعريفها باستخدام مجموعتين من الأقواس، مثل: Dim data() As Integer.

للمصفوفة حجم ثابت بمجرد إنشائها، وتحتاج إلى إعادة تعريف الأبعاد (ReDim) لتغيير حجمها. أما قائمة (List(Of T)) فتنمو وتتقلص تلقائيًا، وتوفر دوال الإضافة والحذف والفرز، مما يُسهّل التعامل معها عندما يتغير عدد عناصرها بشكل متكرر.

نعم. يقوم GitHub Copilot بتحويل التعليقات المكتوبة باللغة الإنجليزية البسيطة إلى كود كامل للمصفوفات، بما في ذلك تعريفات الأبعاد، وتغيير حجمها باستخدام ReDim، واستدعاءات Split أو Join. يرجى مراجعة كل اقتراح للتأكد من صحة الفهارس وأنواع البيانات قبل قبوله.

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

تلخيص هذه التدوينة بـ: