לולאת חזרה
הקדמה
בשפת Wave, ניתנים לולאות לטיפול במצבים בהם יש להריץ את אותו הקוד מספר פעמים. לולאות משמשות להרצת קוד כאשר תנאי מסוים מתקיים או לכמות חזרה מוגדרת מראש.
באמצעות כך ניתן לבטא פעולות חוזרות ללא צורך להעתיק את הלוגיקה שוב ושוב, עם קוד פשוט ונהיר. Wave תומכת הן בלולאות מותנות והן בלולאות לפי כמות חזרה, כולל מילים לשליטת זרימת ההרצה תוך כדי החזרה.
בחלק זה מוסבר אופן השימוש בלולאות while ו-for, וכן בשימוש במילות המפתח break ו-continue לשליטה בזרם החזרה.
לולאת while
לולאת while מריצה קוד בבלוק כל עוד התנאי שניתן נחשב כ-true.
כאשר התנאי הופך ל-false, החזרה נפסקת מייד.
שיטה זו מתאימה למצבים בהם כמות החזרות אינה ברורה ויש לחזור עד שתנאי מסוים מתקיים.
מבנה בסיסי
ב-Wave, המבנה הבסיסי של לולאת while הוא כדלקמן.
while (תנאי) {
// קוד לביצוע חוזר
}
התנאי חייב להיות מוערך לטיפוס bool ובבלוק הקוד המוקף בסוגריים מסולסלים {} אפשר לכתוב משפט אחד או יותר.
דוגמה: הדפסה מ-0 עד 4
var i :i32 = 0;
while (i < 5) {
println("i הוא {}.", i);
i = i + 1;
}
בדוגמה זו, החזרה מבוצעת כל עוד המשתנה i קטן מ-5.
בכל מחזור חזרה, הערך הנוכחי מודפס וערך i מוגדל ב-1, עד שהתנאי בסופו של דבר הופך ל-שקר.
לולאת for
לולאת for מתאימה למצבים בהם כמות החזרות ידועה מראש.
ניתן להגדיר את הערך התחלתי, תנאי והגדלה בפעם אחת כדי להביע בבירור את זרם החזרה.
כל הרכיבים הדרושים לשליטה בחזרה ממוקמים במקום אחד ולכן קל לעקוב אחרי מבנה החזרה.
מבנה בסיסי
for (אתחול; תנאי; שינוי) {
// קוד לחזרה
}
ב-Wave, אתחול לולאת for תומך בצורות רבות.
- אתחול טיפוס
varמרומז - אִתחוּל הכרזות
var/let mut/const - אִתחוּל ביטויים כלליים (שימוש חוזר במשתנים קיימים)
דוגמה 1: אִתחוּל סוג משתנה באופן משתמע
for (i :i32 = 1; i <= 5; i += 1) {
println("i = {}", i);
}
דוגמה 2: אִתחוּל var / let mut
for (var i: i32 = 0; i < 3; i += 1) {
println("var i = {}", i);
}
for (let mut j: i32 = 0; j < 3; j += 1) {
println("let mut j = {}", j);
}
דוגמה 3: אִתחוּל מבוסס ביטוי (שימוש חוזר במשתנים קיימים)
var i: i32 = 99;
for (i = 3; i <= 5; i += 1) {
println("i = {}", i);
}
println("after loop: {}", i); // 6
אִתחוּל באמצעות הכרזות (var, let mut, i :i32 = ...) פועלות כמשתני לולאה סְקוֹפוֹת, ואִתחוּל מבוסס ביטוי (i = ...) מעדכן את המשתנה החיצוני ישירות.