בכל שפת תכנות ישנן לולאות.
לולאות הן פקודות אשר מאפשרות לנו לגרום לקטע קוד לחזור על עצמו מספר פעמים שאותו אנו יכולים לקבוע חפי מספר פעמים או להתנות את ביצוע הלולאה בתנאי מסויים.
הלולאות מאוד דומות בין שפה לשפה אך צורת כתיבתן (Syntax) בדרך כלל שונה.
במאמר זה אסביר על לולאות ב-VBScript שאיתן נעבוד ב-ASP ובכלל ב-HTML.
לולאות ב-VBScript
ישנן מספר סוגי לולאות והן:
For... Next
While תנאי... Wend
Do... Loop Until תנאי
כעת אסביר מה ההבדל בין סוגי הלולאות וכיצד משתמשים בכל אחת מהן.
For... Next
For... Next
For i = 1 To 10
Response.Write i & ", "
Next
הפלט יראה כך:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
דוגמא זו תכתוב את המספרים 1 עד 10 אחד ליד השני כאשר הם מופרדים בפסיקים.
בלולאת For אנו מגדירים ללולאה לרוץ ממספר אינדקס מסוים עד מספר אחר ובתוך הלולאה עצמה, אנו יכולים להשתמש באינדקס (i) היכן שנחפוץ.
הקוד אשר יתבצע מספר פעמים כנדרש ימצא בין המילה For לסוגר שלה, Next.
ניתן להשתמש בלולאת For רק כאשר הגבלת מספר החזרות היא למספר מסוים של חזרות ואנחנו לא תלויים בתנאים אלא במספר הפעמים שעלינו לבצע את הלולאה.
כמו כן, במקום במספרים ניתן להשתמש במשתנים או אף באותיות. להלן דוגמא לשימוש באותיות:
For i = 65 To 90
Response.Write chr(i) & ", "
Next
דוגמא זו תכתוב למסך את האותיות הלועזיות מ-A ועד Z כאשר הן מופרדות בפסיקים.
הפלט יראה כך:
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
במידה ואין אנו מעוניינים לעבור על הלולאה כאשר בכל פעם האינדקס עולה באחד, ניתן להשתמש בפקודת Step ולקבוע כמה יעלה המונה בכל פעם שהלולאה תתבצע.
להלן דוגמא ללולאה שתרוץ על המספרים מ-1 עד 10 בקפיצות של 2:
For i = 1 To 10 Step 2
Response.Write i & ", "
Next
הפלט יראה כך:
1, 3, 5, 7, 9,
אם ברצוננו שהאינדקס ירד בכל פעם שהלולאה מתבצעת, חובה עלינו לומר ללולאה לרוץ מהמספר הגבוה לנמוך וחייבים להגדיר את ה Step כמספר השלילי בו אנו רוצים שהמדרגה תרד, גם אם מדובר במספר 1- אחרת הלולאה לא תתבצע כלל וכלל.
דוגמא פשוטה לשימוש בלולאת For היא בניית לוח הכפל.
For y = 1 To 10
For x = 1 To 10
Response.Write x*y & " "
Next
Response.Write " "
Next
הפלט יראה כך:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
במידה ובמצב כלשהו ברצוננו לתת פקודה אשר תפסיק את הלולאה, ניתן לעשות זאת על ידי פקודת End For.
לא מומלץ בשום פנים ואופן להשתמש בפקודה זו וגם אם הגעתם למצב שבו אתם חושבים שאין לכם ברירה, נסו לחשוב שובת מכיוון שזהו דבר שפשוט לא עושים. ואם אתם חושבים אחרת, לכו תשאלו מתכנת מנוסה מה דעתו בנושא...
While תנאי... Wend
לולאת While שימושית לנו כאשר ברצוננו לבצע לולאה מסויימת כל עוד התנאי שלה מתקיים. ברגע שהתנאי יחדול מלהיות נכון, הלולאה תפסיק להתבצע.
i = 1
While i < 10
Response.Write i & ", "
i = i + 1
Wend
הפלט יראה כך:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
הלולאה מתבצעת כל עוד ערכו של משתנה i קטן מ-10. תחום הלולאה הוא בין המילה While למילה Wend.
בתוך הלולאה, הורנו למשתנה i לעלות כל פעם ב-1 בעת ביצוע הלולאה, ולכן לאחר 9 פעמים שהלולאה מתבצעת ערכו של i יהיה 10 ואז בפעם ה-10 הלולאה כבר אינה מתבצעת מכיוון שהתנאי שלה כבר לא נכון.
בלולאת While יש להקפיד שהגדרנו תנאי אשר יתקיים בשלב כלשהו, אחרת לולאה זו תהיה לולאה אין סופית שהיא אחד האוייבים הגדולים ביותר של המתכנתים בכל השפות.
לולאה אין סופית תכביד מאוד על השרת ותאט את פעילותו ולרוב אף תגרום למחשב להתקע. (ואנחנו ממש לא רוצים...)
דוגמא לשימוש בלולאת While היא לעבור על כל הרשומות באובייקט מסוג RecordSet והצגתן:
Do... Loop Until תנאי
לולאת Do דומה מאוד ללולאת While רק שההבדל בינהן הוא שללולאת While בודקת תחילה אם התנאי מתקיימת ורק במידה והוא מתקיים היא מתחילה להתבצע בעוד לולאת Do דבר ראשון מבצעת את הקוד ורק בסיום כל מחזור היא בודקת את קיום התנאי.
עובדה זו מאפשרת לנו לדעת בוודאות כי לולאת Do תרוץ לפחות פעם אחת.
i = 1
Do
Response.Write i & ", "
i = i + 1
Loop Until i > 10
הפלט יראה כך:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
דוגמא לשימוש בלולאת Do היא לעבור על מחרוזת ולחשב כמה פעמים מופיעה בה תת-מחרוזת מסויימת.
בקרוב אשתדל להרחיב את המאמר ולכתוב גם על לולאות בשפת JavaScript
|