منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
الفصل(15): الفئتان Stack و Queue - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90)
+--- قسم : قسم دورات المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=113)
+---- قسم : دورة تعليم البرمجة باستخدام VB.net, (http://vb4arb.com/vb/forumdisplay.php?fid=129)
+---- الموضوع : الفصل(15): الفئتان Stack و Queue (/showthread.php?tid=4387)



الفصل(15): الفئتان Stack و Queue - B3dak Hbebe - 23-09-12

السلام عليكم ورحمة الله وبركاته
موضوعنا لليوم خفيف وبسيط

الفئة Stack :
يمكن تسمية الفئة Stack بالمكدسة وهي تطبق خوارزمية LIFO - Last In First Out
بمعنى أول ما يدخل أول ما يخرج
ويمكن تمثيل العملية بالشكل التالي



لنعرف كائن جديد من هذه الفئة :

كود :
[color=#000000] [COLOR=#0000BB]Dim stk [/color][color=#007700]As New [/color][color=#0000BB]Stack[/color][color=#007700]([/color][color=#0000BB]Of String[/color][color=#007700])  [/color][/COLOR]

في السطر السابق صرحنا عن كائن جديد من نوع Stack وجعلناها مكدسة كائنات من النوع String


طرق هذه الفئة - ليس جميعها - :
  • Push
تفوم هذه الطريقة بعملية إضافة عنصر جديد للمكدسة:
كود :
[color=#000000][COLOR=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Push[/color][color=#007700]([/color][color=#DD0000]"Mohammed"[/color][COLOR=#007700])
[/COLOR][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Push[/color][color=#007700]([/color][color=#DD0000]"Lo2i"[/color][COLOR=#007700])
[/COLOR][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Push[/color][color=#007700]([/color][color=#DD0000]"Islam"[/color][COLOR=#007700])
[/COLOR][/COLOR]


  • Pop
تقوم هذه الطريقة بقراءة العنصر الأخير ومن ثم إزالته:
كود :
[color=#000000][COLOR=#0000BB]يصبح عدد العناصر بعد الازالة 2      WriteLine[/color][color=#007700]([/color][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Pop[/color][color=#007700]) [/color][COLOR=#DD0000]' Islam
   يصبح عدد العناصر بعد الازالة 1      WriteLine(stk.Pop) ' [/COLOR][COLOR=#0000BB]Lo2i
   يصبح عدد العناصر بعد الازالة 0      WriteLine[/COLOR][color=#007700]([/color][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Pop[/color][color=#007700])  [/color][COLOR=#0000BB]Mohammed
[/COLOR][/COLOR]
[COLOR=#000000][COLOR=#0000BB]
[/COLOR][/COLOR]

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

  • Clear
تقوم بإزالة جميع العناصر
كود :
[color=#000000] [COLOR=#0000BB]stk[/color][color=#007700].[/color][COLOR=#0000BB]Clear
[/COLOR][/COLOR]



  • Contains
تقوم هذه الطريقة بالتحقق فيما إذا كانت القيمة الممرة لها محتواة داخل المكدسة أم لا
كود :
[color=#000000][COLOR=#007700]If [/color][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Contains[/color][color=#007700]([/color][color=#DD0000]"Lo2i"[/color][color=#007700]) [/color][COLOR=#0000BB]Then
MsgBox[/COLOR][color=#007700]([/color][color=#DD0000]"True"[/color][COLOR=#007700])
[/COLOR][color=#0000BB]End [/color][COLOR=#007700]If
[/COLOR][/COLOR]


  • CopyTo

تقوم هذه الطريقة بنسخ عناصر المكدسة لمصفوفة مع تحديد رقم الفهرس من المصفوفة للبدء بالنسخ انطلاقا منه
كود :
[color=#000000][COLOR=#0000BB]Dim stk [/color][color=#007700]As New [/color][color=#0000BB]Stack[/color][color=#007700]([/color][color=#0000BB]Of String[/color][COLOR=#007700])
[/COLOR][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Push[/color][color=#007700]([/color][color=#DD0000]"Mohammed"[/color][COLOR=#007700])
[/COLOR][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Push[/color][color=#007700]([/color][color=#DD0000]"Lo2i"[/color][COLOR=#007700])
[/COLOR][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Push[/color][color=#007700]([/color][color=#DD0000]"Islam"[/color][COLOR=#007700])
  
[/COLOR][color=#0000BB]Dim A[/color][color=#007700]([/color][color=#0000BB]2[/color][color=#007700]) As [/color][COLOR=#0000BB]String
stk[/COLOR][color=#007700].[/color][color=#0000BB]CopyTo[/color][color=#007700]([/color][color=#0000BB]A[/color][color=#007700], [/color][color=#0000BB]0[/color][COLOR=#007700])
For [/COLOR][color=#0000BB]I [/color][color=#007700]= [/color][color=#0000BB]0 To UBound[/color][color=#007700]([/color][color=#0000BB]A[/color][COLOR=#007700])
[/COLOR][color=#0000BB]WriteLine[/color][color=#007700]([/color][color=#0000BB]A[/color][color=#007700]([/color][color=#0000BB]I[/color][COLOR=#007700]))
[/COLOR][color=#0000BB]Next[/color][/COLOR]


والناتج :
كود :
Islam
Lo2i
Mohammed

لاحظ أنه عند عملية النسخ لا يبدأ بالنسخ من الصفر بل من آخر عنصر وصولا لأول عنصر
أيضا يجب الانتباه بألا تخرج عملية النسخ عن حدود المصفوفة
  • Count
خاصية للقراءة فقط تعود بعدد عناصر المكدسة
كود :
[color=#000000] [COLOR=#0000BB]MsgBox[/color][color=#007700]([/color][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Count[/color][COLOR=#007700])  
[/COLOR][/COLOR]


  • Peek
تقوم هذه الطريقة بارجاع قيمة آخر عنصر دون حذف
كود :
[color=#000000] [COLOR=#0000BB]stk[/color][color=#007700].[/color][COLOR=#0000BB]Peek  
[/COLOR][/COLOR]


  • ToArray

تقوم بإرجاع مصفوفة بالعناصر الموجودة في المكدسة ويجب أن تكون من نفس النوع للمكدسة
كود :
[color=#000000] [COLOR=#0000BB]Dim strArray[/color][color=#007700]() As [/color][color=#0000BB]String [/color][color=#007700]= [/color][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]ToArray  [/color][/COLOR]

الآن ننتهي من الفئة Stack

الفئة Queue:
يمكن تسميتها بالطابور وتطبق مبدأ FIFO - First In First Out
أي ما يضاف أولا يخرج أولا
ويمكن تمثيل العملية بالشكل التالي :



طرقها :
  • Enqueue
تقوم هذه الطريقة بإضافة عنصر للطابور
كود :
[color=#000000][COLOR=#0000BB]        Dim que [/color][color=#007700]As New [/color][color=#0000BB]Queue[/color][color=#007700]([/color][color=#0000BB]Of String[/color][COLOR=#007700])
         [/COLOR][color=#0000BB]que[/color][color=#007700].[/color][color=#0000BB]Enqueue[/color][color=#007700]([/color][color=#DD0000]"Mohammed"[/color][COLOR=#007700])
         [/COLOR][color=#0000BB]que[/color][color=#007700].[/color][color=#0000BB]Enqueue[/color][color=#007700]([/color][color=#DD0000]"Lo2i"[/color][COLOR=#007700])
         [/COLOR][color=#0000BB]que[/color][color=#007700].[/color][color=#0000BB]Enqueue[/color][color=#007700]([/color][color=#DD0000]"Islam"[/color][COLOR=#007700])
[/COLOR][/COLOR][color=#000000][COLOR=#007700] [/color][/COLOR]

  • Dequeue
تقوم هذه الطريقة بازالة العنصر الأول في الطابور
كود :
            [color=#000000] [COLOR=#0000BB]que[/color][color=#007700].[/color][color=#0000BB]Dequeue[/color][color=#007700]()  [/color][/COLOR][COLOR=#000000][COLOR=#007700]
[/COLOR][/COLOR]



أما بالنسبة لباقي الطرق فلا تختلف كثيرا عن المكدسة







الفصل(15): الفئتان Stack و Queue - abdoojh - 25-02-13

اولا اخي العزيز الفصل (14 ) غير موجود
اما لانه محذوف او انكم اخطأتم في وضع الارقام
************
وبارك الله فيكم على المجهودات الطيبة


الفصل(15): الفئتان Stack و Queue - خليل اسماعيل - 27-04-13

بارك الله فيك