الأربعاء، 14 نوفمبر 2012
دورة [VBScript] الدرس السادس: الحلقات التكرارية ج6
الدرس السادس: الحلقات التكرارية Loops ج6
قد تحتاج في برنامجك تنفيذ مهمة معينة لعدد ما من المرات، لا شك انه يمكنك كتابة هذه الأوامر بشكل متسلسل ولكن هذه الطريقة غير عمليه لأنك قد تحتاج مثلا إلى إسنادقيم لألف عنصر من مصفوفة ... وهنا يتجلى دور الحلقات التكرارية في إنجاز المهمة
بطريقة سهلة وكود مختصر.....
توفر لغة VBScript إمكانية تطبيق فكرة الحلقات التكرارية بصورتين، فيمكنك تنفيذ مهمة ما عدد معين من المرات أو تنفيذ المهمة حتى يتحقق شرط معين...
الحلقة For .... Next
تمكنك الحلقة السابقة من تنفيذ أمر معين لعدد من المرات ... والصيغة العامة لهذه الحلقة على الشكل التالي:
كود
For (counter) = (Start) To (End) Step (Num)
‘مجموعة الأوامر‘
Next
حيث counter متغير يمثل العداد و start قيمة ابتدائية للعداد و End القيمة النهائية، أما الكلمة المفتاحية Step فهي اختيارية ويمكن استعمالها لزيادة قيمة العداد بقيم مختلفة ويقتضي حذفها أن تكون الزيادة بمعدل واحد ... وهذا مثال توضيحي..
كود :
Dim I
For I = 1 To 10
document.write "VBScript مرحبا بكم معنا في دروس" & "< BR>"
Next
في المثال السابق قمنا بكتابة عبارة الترحيب عشر مرات، لاحظ انه يمكننا التعامل مع رموز HTML عند وضعها بين علامتي تنصيص.
ويمكن إدخال حلقة تكرارية داخل أخرى بحيث يتم تنفيذ الأمر الذي بداخل الحلقة الداخلية بمقدار حاصل ضرب التكرارين وهذا ما يسمى بالحلقات المتداخلة Nest loop..
لاحظ المثال..
كود:
For I = 10 To 1 Step -1
For K = 1 To 10
'كتابة العددين المراد ضربهما
document.write I & " * " & K & " = "
'كتابة نتيجة الضرب
document.write I*K & "< BR>"
'نهاية الحلقة الداخلية
Next
'وضع خط أفقي بعد نهاية كل جدول
document.write "< HR>"
'نهاية الحلقة الخارجية
Next
عند تطبيقك للمثال السابق ستلاحظ كتابة جدول الضرب للأعداد من 10 إلى 1 تنازليا..
الآن تأمل الشيفرة السابقة، تلاحظ في السطر الأول الحلقة الأولى والتي تحوي عداد تنازلي، وقد استعملنا القيمة –1 مع الكلمة المفتاحية Step لكي نجعل الزيادة في قيمة التكرار تكون بمعدل تناقصي من 10 إلى 1 وهذه الحلقة تستخدم لتحديد الجدول مثلا في المرة الأولى الجدول رقم 10 ثم 9 ثم 8 وهكذا... وفي الحلقة الداخلية نقوم بطباعة جدول العشرة كاملا ونعود لجدول التسعة وهكذا..
الحلقة Do .... loop
تستخدم هذه الحلقة لتكرار تنفيذ أوامر معينة حتى يتحقق شرط معين .. ولهذه الحلقة
أربعة أشكال متقاربة ... وهذه هي الصيغ العامة لها
أولا: اختبار الشرط عند بداية الحلقة..
- الحلقة Do ... While
كود:
Do While (Condition)
الأوامر التي تريد تكرارها طالما أن الشرط متحقق
loop
- الحلقة Do ... Until
كود:
Do Until (Condition)
الأوامر التي تريد تكرارها حتى يتحقق الشرط.
loop
وهذا مثال توضيحي
كود:
Dim Counter
Counter =0
Do While Counter <> 4
Counter = Counter + 1
document.write Counter & "< BR>"
Loop
تلاحظ في المثال السابق كتابة الأرقام من 1 إلى 4، حيث في المرة الأولى تزيد قيمة العداد لتصبح 1 ويتم كتابة العدد ثم 2 ... 3 وهكذا حتى تصبح قيمة العداد 4 فلا يمكننا بعدها تكرار الدخول إلى الحلقة...
ثانيا: اختبار الشرط عند نهاية الحلقة... والشرط
الموجود بنهاية الحلقة هو الذي يحدد هل يتم إعادة تكرار الحلقة أم لا...- الحلقة Loop ... While
كود:
Do
الأوامر التي تريد تكرارها
loop While (Condition)
- الحلقة Loop ... Until
كود:
Do
الأوامر التي تريد تكرارها
loop Until (Condition)
وهذا مثال توضيحي...
كود:
Do
Counter = Counter + 1
document.write Counter & "< BR>"
Loop Until Counter = 4
الحلقة While ... Wend
هذه الحلقة كانت مستخدمة في لغة بيسك القديمة و فيما يبدو أن مايكروسوفت تركتها لمسألة التوافقية بين الإصدارات فقط ويمكن تنفيذ مهمتها باستخدام الحلقة Do While
... loop وبمرونة اكثر....
كود:
Dim SiteName
'سيتم التكرار طالما انك لم تدخل العنوان بشكل صحيح
'Not لاحظ استعمالنا للمعامل
While Not SiteName = "www.c4arab.com"
SiteName = InputBox("ادخل عنوان موقع الموسوعة")
Wend
المجموعات والحلقة For Each .... Next
الحلقة For Each .... Next هي نوع خاص من التكرار ويستخدم عند التعامل مع المجموعات... والمجموعة تتكون من عدة كتل من البيانات ويمكن التعامل مع المصفوفات كمبدأ شبيه بالمجموعات وتستخدم المجموعات غالبا عند التعامل مع الكائنات والتي
سنتطرق إليها لاحقا...
وسنتعامل هنا مع المصفوفات لتوضيح طريقة التعامل مع الحلقة For Each .... Next ....
تستخدم العبارة السابقة لإنشاء تكرار يمر على كافة العناصر في المجموعة بغض النظر عن عددها والصيغة العامة لها على الشكل التالي ..
كود:
For Each (Variable) In (Collection)
‘الأوامر التي سيتم تنفيذها
Next
وهذا مثال توضيحي...
كود:
Dim MyCol,Counter,SiteName(3)
Dim Prompt,Title
'For...Next إسناد قيم إلى المصفوفة من خلال حلقة
For Counter = 1 To 3
Prompt = "ادخل موقعا من مفضلتك"
Title ="الموقع رقم " & I
SiteName(Counter) =InputBox(Prompt,Title) & "< BR>"
Next
'For Each...Next قراءة القيم من المصفوفة من خلال حلقة
For Each MyCol In SiteName
'كتابة العنصر الحالي
document.write MyCol
Next
ملاحظات عامة:
1) يمكن الخروج من الحلقة التكرارية قبل إنهاءها وذلك باستخدام العبارة Exit Do للحلقة Do ... loop و Exit For للحلقة For ... Next ...
كود:
Dim sSiteName,iCounter
For iCounter = 1 To 10
sSiteName =InputBox("ادخل موقعا من مفضلتك")
'إذا لم تدخل أي عنوان سيتم الخروج من الحلقة
If sSiteName = "" Then Exit For
document.write sSiteName & "< BR>"
Next
2) تجنب الحلقات الغير منتهية... لاحظ المثال... كود:
Dim iNum
Do Until A <> 0
iNum = InputBox("ادخل رقما")
iNum = iNum * 0
Loop
تلاحظ في المثال أن الحلقة ستستمر إلى ما لانهاية لأن القيمة لن تتغير عن الصفر،
وهذا يعد علة bug في شيفرتك يجب عليك اجتنابها.
ولأي إستفسار الرجاء ترك تعليقاتكم لأقوم بالإجابة عليها في القريب العاجل
لا تقرأ وترحل شارك معنا بتعليق فنحن نسعى لنقدم لك الافضل والاجمل
التسميات:
دورة تعليم لغة الــ html,
دورة css,
دورة xml,
HTML دورة,
xhtml
بقلم : Abda3Design
لخدمات التصميم والبرمجة
إدارة تتبنى عمل المواقع الخدمية المتنوعة للأفراد والهيئات والمؤسسات الكبرى. كما يمكنها عمل مواقع للتجارة الإلكترونية كما تتميز مؤسسة "ابداع ديزاين" . بأقوى فريق عمل متواصل مع العملاء 24 ساعة على مدار الأسبوع وتمتاز أيضا بكفاءة الدقة والسرعة
ضع تعليقك
0 التعليقات:
إرسال تعليق