الأربعاء، 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 في شيفرتك يجب عليك اجتنابها.

ولأي إستفسار الرجاء ترك تعليقاتكم لأقوم بالإجابة عليها في القريب العاجلfaseel

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





ضع تعليقك

0 التعليقات:

البحــث

English French German Spain Italian Dutch

Russian Portuguese Japanese Korean Arabic Chinese Simplified

المتابعون

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