לולאות while
הוצג| English | משמעות |
|---|---|
| while loop/waɪl luːp/ | לולאת while |
| loop control variable/luːp kənˈtrəʊl ˈveərɪəbl/ | משתנה בקרת לולאה |
| infinite loop/ˈɪnfɪnət luːp/ | לולאה אינסופית |
חזרה כל עוד נכון
- לולאת while מבצעת את הגוף שלה כל עוד תנאי נשאר
true. while (i <= 5) { sum = sum + i; i++; }- לפני כל עבר, Java בודקת את התנאי; אם הוא
false, הלולאה מסתיימת. - השתמש ב-
whileכאשר אינך יודע מראש כמה מעברים יהיו נדרשים.
בדיקה לפני כל עבר
- התנאי נבדק לפני שהגוף מתבצע בכל פעם.
- אם הוא
falseבבדיקה הראשונה, הגוף מתבצע אפס פעמים. - לאחר כל עבר, התנאי נבדק מחדש לפני הבא.
- סדר "בדיקה, ואז אולי ביצוע" זה שווה לשינון.
משתנה בקרת הלולאה
- משתנה בקרת לולאה מניע את ההתקדמות לעבר עצירה.
- הקפל אותו לפני הלולאה, השתמש בו בתנאי, ושנה אותו בתוך הגוף.
iמתחיל ב-1, התנאי בודקi <= 5, ו-i++מזיז אותו קדימה.- ללא שינוי שמפר לבסוף את התנאי, הלולאה לעולם לא תסתיים.
לולאות אינסופיות
- לולאה אינסופית מתרחשת כשהתנאי לעולם לא הופך לשגוי.
- שכחת
i++(או עדכון המשתנה הלא נכון) תופסת את התוכנית לנצח. - סימן ההיכר: הלולאה אינה מקדמת לעבר תנאי עצירה שלה.
- וודא תמיד שכל מעבר מרחיק את משתנה הבקרה מהיציאה.
לולאת while בודקת את התנאי שלה לפני כל מעבר — ולכן היא יכולה להירץ אפס פעמים. אם התנאי כבר false, הגוף לא יירץ לעולם. ועליך להשלים לשנות את משתנה הבקרה בתוך הגוף כדי שהתנאי יגיע בסוף לfalse; שכחת העדכון (למשל, ללא ⟨⟩i++) היא הלולאה האינסופית הקלאסית ביותר.
סיכום של 1 עד 5:
int i = 1, sum = 0;while (i <= 5) { sum = sum + i; i++; }- מעברים:
i=1sum=1,i=2sum=3,i=3sum=6,i=4sum=10,i=5sum=15; לאחר מכןi=6כושל ב<= 5→ עצור.sumהוא15.
לולאת while חוזרת על גופה כל עוד תנאי מסוים הוא true, ובוחנת לפני כל מעבר (לכן היא עשויה להירץ אפס פעמים). משתנה בקרת לולאה חייב להיות מוגדר, נבדק, ומותעדכן בתוך הגוף כדי שהלולאה תקדם — ושכחת העדכון גורמת ללולאה אינסופית.
סיכום מספרים מ-1 עד 5 עם לולאת while
בכל עבר נוסף i לסכום, ולאחר מכן i++ מקרבת את הלולאה ליציאה.
לולאת while בודקת את התנאי שלה...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
התנאי נבדק לפני כל עבר, ולכן ייתכן שהיא תפעיל 0 פעמים.
int i=1, sum=0; while (i<=5){ sum+=i; i++; } מהו הערך של sum בסוף?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
1+2+3+4+5 = 15.
שכחת עדכון משתנה הבקרה בתוך גוף הלולאה גורמת בדרך כלל ל...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ללא התקדמות, התנאי לעולם לא יהפוך לשקר.
אם התנאי בלולאת while הוא שגוי בבדיקה הראשונה, הגוף לא יופעל אפס פעמים.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
בדיקה לפני כל עבר אומרת she יכולה לפעול 0 פעמים.
לולאה שעולם אינה נעצרת כי התנאי שלה מעולם לא הופך לשקר היא לולאת ___ (מילה אחת).
Difficulty 1/5 · 100 coins + a small bonus on first completion today
לולאת אינסוף אינה מתקדמת לעבר עצירה.