اليوم سنتحدث عن قاعده
Do While وهي تعتبر حلقه تكراريه يتم تنفيذ ما بداخلها حتي ان يتم حدث معين للخروج
منها
والصيغه العامه لها :
- اقتباس :
- Do While Condition
......................
.......................
Code
....................
.....................
Loop
Condition=
هو الشرط
اذا كانت قيمه هذا الشرط True ستظل الحلقه
التكراريه تعمل ويظل تنفيذ الاوامر بداخل الحلقه Do
While
اذا كانت قيمته False سيتم الخروج من الحلقه
التكراريه ويتم تنفيذ الاوامر التي تلي Loop
كيف تعمل هذه الحلقه؟
تبدأ الحلقه من عند Do While يبدأ بقراءة Condition اذا اصبحت قيمته False
سيتم تنفيذ الاكواد ما بعد Loop
اذا اصبحت True
ستقوم الحلقه بتنفيذ الاكواد سطرا سطرا ما بعد Do
While
حتي تصل الي الكلمه Loop في حين وصلها لكلمه Loop ستقوم بالذهاب الي Condition
اذا لم يتحقق سيتم ستقوم بتنفيذ جميع الاوامر المحصورة داخل Do While……….Loop مرة اخري
حتي ان يتم تحقيق الشرط سيذهب الي Condition اذا
تحقق سيذهب الي كلمه Loop ويقوم بتنفيذ الاوامر
التي تليها
والصورة الاتيه توضح :
مثال:
قم باضافه 2 ليبل الاول سمه Counter والثاني ضع فيه القيمه 1
وضع Timer واجعل الـ Interval=
100
- اقتباس :
- Dim S As Integer
'---------------------------
Private Sub Form_Load()
S=1
End Sub
'----------------------------------
Private Sub Timer1_Timer()
Do While S=1
Label2.Caption=Val(Label2.Caption)+1
If Val(Label2.Caption)=100 then S = 2 Else Exit Sub
Loop
Timer1.Enabled=False
End Sub
في هذا المثال اولا قمت بتعريف متغير اسمه S ومن نوع Integer
ثم بعد ذلك اسندت اليه القيمه 1 في حدث
التحميل للفورم
ثم بعد ذلك قمت ببدأ الكود في في اداه التايمر وذلك لتري التغير بنفسك في
حال ان وضعته في حدث التحميل ستجد عند فتحك ان قيمه الليبل 100
اما في تايمر لتري التغيير
معني الكود بالعربي :
قم بتنفيذ جميع الاكواد المحصورة بين Do While
و Loop
ما دامت قيمه الـ S = 1
قيمه الليبل رقم 2 تساوي القيمه الحاليه
لليبل ثم قم باضافه 1 عليها
اذا اصبحت قيمه الليبل = 100 اذا قم بتغير
قيمه S الي 2 غير
ذلك قم بالخروج من الامر
وضعنا قاعده If وذلك عند تحقق شرط ما نريد ان
نخرج من الحلقه فلذلك قمنا في حاله كان العدد 100 ان
يقوم بوضع رقم 2 للـ S
فعند ذهاب الحلقه الي الشرط سيجد انه اصبح 2 وليس
1 اذا سيتم الخروج من الامر
بالطبع هذه كانت الطريقه التقليديه
هنا طريقه اخري افضل ومنها سنستغني عن تعريف المتغير وكل هذا
وسنستخدم Exit Do
سيصبح الكود كاملا
- اقتباس :
- ()Private Sub Timer1_Timer
Do While s = 1
Label2.Caption = Val(Label2.Caption) + 1
If Val(Label2.Caption) = 100 Then Exit Do Else Exit Sub
Loop
Timer1.Enabled = False
End Sub
وهذه الطريقه المستخدمه
بالفعل وهي الافضل ولكن الاخري من باب العلم بالشيئ
Do
until تعتبر ايضا من الحلقات التكراريه ولكنها علي عكس do while
في Do Untile
يقوم باختبار الشرط اذا كانت قيمته False يبدأ
التكرار ويستمر في تكرار الاكواد حتي تصبح قيمه الشرط True
اذا اصبحت قيمه الشرط True
اذا يقوم البرنامج بتنفيذ الاكواد ما بعد Loop
واليكم الاشكال الاتيه للتوضيح:
بالنسبه لاليه العمل بين الاثنين فهم متماثلتين
تماما ما عدا الاتي:
ملحوظه يمكن استخدام كلمه Not في الحلقتين
مثال :
- اقتباس :
- Do While Not s=1
………
………
Code
…….
………
Loop
وتعني قم بتنفيذ الاكواد ما دام
S لا
تساوي
1 مثال اخر :
- اقتباس :
- Do Until Not s=1
………
………
Code
…….
………
Loop
وتعني قم بتنفيذ الاكواد حتي تصبح قيمه S لا تساوي 1