מדריך VBS – לולאות
מהי לולאה?
לפעמים אנו נתקלים במצב בו אנו רוצים לבצע קטע קוד מסויים כמה פעמים. הלולאות מאפשרות לנו לעשות זאת, ללא חזרה על אותה שורת קוד.
ישנן כמה דרכים לבצע לולאות ב-VBScript :
לולאות For ..Next
For <Variable> = <Value> To <Value> 'some code Next
נשתמש בסוג זה של לולאה, כאשר אנו יודעים בדיוק כמה פעמים אנו רוצים לבצע את קטע הקוד. בדוגמא הבאה, אנו סוכמים את כל המספרים מ-1 עד 10:
Dim i,num For i=1 To 10 num=num+i Next
כמובן שגם המספרים בלולאה (1 ו-10) יכולים להיות משתנים בעצמם.
כל פעם שמגיעים לשורה Next, ערכו של המשתנה i עולה באחד. כאשר i מגיע ל-11 (גדול מ-10), הלולאה מסתיימת.
דרך נוספת לסיים את הלולאה היא באמצעות הפקודה Exit for. לרוב נבדוק בתוך הלולאה האם תנאי מסויים, בו אנו רוצים לסיים את הלולאה, מתקיים, ואם כן – נפעיל את הפקודה.
בדוגמא הקודמת ראינו לולאה המבצעת קפיצות של 1. אך יש ביכולתינו לשנות פרמטר זה, ע"י הפקודה step.
בלולאה הבאה, אנו מבצעים קפיצות של 3:
For i=1 To 10 Step 3 str=str & "," & i Next
בסופה של הלולאה, str תכיל את המחרוזת "1,4,7,10"
באמצעות הפקודה Step ניתן גם לקבוע שהלולאה תרוץ "אחורנית":
For i=10 to 1 Step -1 num=num+i Next
במקרה זה, המשתנה i מתחיל מהערך 10 ויורד במשך הלולאה עד הערך 1.
לולאות Do While
Do While <Condition> 'some code Loop
נשתמש בלולאה זו, כאשר אנו מעוניינים לבצע קטע קוד מסויים כל עוד תנאי כלשהו מתקיים:
Do While i>10 'some code Loop
לולאה זו תתקיים כל עוד i גדול מ-10. אם מלכתחילה, עוד לפני תחילת הלולאה, i קיבל ערך שהוא קטן מ-10, הלולאה לא תתבצע אפילו פעם אחת.
בלולאות מסוג זה יש להקפיד ולוודא שתנאי העצירה של הלולאה אכן יתקיים אי פעם. אם זה לא יקרה, אנו נגיע למצב של לולאה אינסופית
– לולאה שאין ממנה יציאה. לכן, בדוגמא למעלה, יש לוודא שהערך של i בתוך הלולאה משתנה, ושיהיה מצב בו i יהיה קטן מ-10:
Do While i>0 i=i-1 'some code Loop
לולאות Do Until
Do Until <Condition> 'some code Loop
לולאה זו דומה ללולאת Do While, רק שזו מתבצעת כל עוד התנאי אינו מתקיים, כלומר, היא תתבצע "עד ש" משהו יקרה.
Do Until i=10 'some code Loop
גם בלולאה זו, יש לוודא שתנאי העצירה אכן יתקיים.
בכל הלולאות האלו, ניתן לסיים את ריצת הלולאה גם אם תנאי העצירה לא מתקיים, באמצעות הפקודה Exit Do.
סוג לולאה נוסף הוא For Each…Next, עליו נדון בפרק הבא.
תגובות בפייסבוק