מה זה איטרציה (Iteration)?
בתכנות, איטרציה (iteration) היא חזרה על אוסף של הוראות, בדרך כלל בעזרת לולאה, עד שתנאי מתקיים או עד שכל הפריטים באוסף עובדו. כל מעבר בודד על ההוראות החוזרות נקרא גם הוא איטרציה.
עודכן ב-24 בספטמבר 2026
תוכנית ששולחת אימייל תזכורת ל-10,000 משתמשים לא מכילה 10,000 עותקים של קוד השליחה. היא מכילה את הקוד פעם אחת, בתוך לולאה, והלולאה מריצה אותו פעם אחת לכל משתמש. כל הרצה היא איטרציה אחת, והלולאה כולה היא הדרך שבה התוכנית עוברת באיטרציה על המשתמשים שלה.
איך איטרציה עובדת, שלב אחרי שלב
כל לולאה עוברת את אותו מחזור:
- בדיקה. בודקים את התנאי של הלולאה, שהוא ערך בוליאני: האם יש עוד פריט, או האם המונה עדיין מתחת לגבול?
- הרצה. אם התשובה היא אמת, מריצים את גוף הלולאה פעם אחת.
- עדכון. עוברים לפריט הבא או משנים את המונה.
- חזרה. חוזרים לשלב 1. כשהבדיקה נותנת שקר, התוכנית ממשיכה עם הקוד שאחרי הלולאה.
כאן הגוף רץ חמש פעמים, וכל איטרציה מוסיפה את המספר הבא לסכום מצטבר:
iteration 1 total is now 1
iteration 2 total is now 3
iteration 3 total is now 6
iteration 4 total is now 10
iteration 5 total is now 15
Done: 15
המשתנה total נמצא מחוץ ללולאה, ולכן הוא שומר על הערך שלו מאיטרציה לאיטרציה. הדפוס הזה, משתנה שמאותחל לפני הלולאה ומתעדכן בתוכה, נקרא צובר (accumulator), והוא מופיע כמעט בכל לולאה שמחשבת משהו.
לולאות ספירה ולולאות תנאי
יש שני סוגים של איטרציה. איטרציה מוגדרת רצה מספר ידוע של פעמים: פעם אחת לכל פריט ברשימה, או פעם אחת לכל מספר מ-1 עד 5. לולאת for של Python בנויה בשביל זה, לעתים קרובות יחד עם range().
איטרציה לא מוגדרת חוזרת עד שמשהו קורה, ומספר המעברים לא ידוע מראש. לולאת while מתאימה למקרה הזה:
8 years, balance 214.36
כסף שגדל ב-10% בשנה צריך 8 שנים כדי להכפיל את עצמו. התוכנית גילתה את זה באיטרציה, לא בפתרון משוואה. המדריכים ללולאות for וללולאות while מכסים את שתיהן ב-Python.
מעבר על אוסף
רוב הלולאות עוברות על אוסף: האיברים של מערך, התווים של מחרוזת, השורות של קובץ. לולאת for של Python נותנת לכם כל איבר ישירות, ו-enumerate() מוסיפה את המיקום שלו:
0 apple
1 banana
2 cherry
מאחורי הקלעים, for מבקשת מהאוסף iterator בעזרת iter(), ואז קוראת ל-next() עליו פעם אחת בכל איטרציה. אפשר לבצע את אותן קריאות בעצמכם:
red
green
blue
no more items
בלי ערך ברירת המחדל, ה-next() הרביעי זורק StopIteration. החריגה הזו היא האות שלולאת for משתמשת בו כדי לדעת שהאוסף נגמר.
שפות אחרות כותבות את אותו רעיון בצורה אחרת. C סופרת עם אינדקס, ואילו ל-Java ול-JavaScript יש גם לולאה שנותנת לכם כל איבר:
for (int i = 0; i < 3; i++) {
printf("%s\n", colors[i]);
}
for (String color : colors) {
System.out.println(color);
}
for (const color of colors) {
console.log(color);
}
איטרציה מול רקורסיה
רקורסיה היא הדרך השנייה לחזור על עבודה: פונקציה קוראת לעצמה על גרסה קטנה יותר של הבעיה, עד שהיא מגיעה למקרה שהיא יכולה לענות עליו ישירות. כל מה שנכתב באחת אפשר לכתוב בשנייה, אבל הן מתנהגות אחרת:
| איטרציה | רקורסיה | |
|---|---|---|
| איך היא חוזרת | לולאה קופצת חזרה להתחלה שלה | פונקציה קוראת לעצמה |
| מתי היא עוצרת | תנאי הלולאה הופך לשקר | מגיעים למקרה בסיס |
| זיכרון | אותה כמות לכל מספר של מעברים | מסגרת מחסנית אחת לכל קריאה שעדיין פתוחה |
| כשל טיפוסי | לולאה אינסופית | גלישת מחסנית (RecursionError ב-Python) |
| מתאימה ל | רשימות, מונים, חזרה עד תנאי | עצים, נתונים מקוננים, הפרד ומשול |
שורת הזיכרון חשובה בפועל. Python מאפשרת כברירת מחדל בערך 1,000 קריאות מקוננות, כך שסכום רקורסיבי של 5,000 מספרים נכשל במקום שבו ללולאה אין שום בעיה:
5050 5050
12502500
sum_recursive(5000) failed: RecursionError
ההדמיה של רקורסיה מראה את מחסנית הקריאות גדלה וקטנה צעד אחרי צעד.
טעויות נפוצות
הלולאה האינסופית. לולאת while שהתנאי שלה אף פעם לא הופך לשקר רצה עד שעוצרים את התוכנית. הסיבה הרגילה היא ששוכחים את שלב העדכון, למשל משמיטים את count = count - 1.
טעות של אחד (off by one). range(1, 5) נותן 1, 2, 3 ו-4, לא 5, כי ערך הסוף לא נכלל. לולאה שרצה פעם אחת יותר מדי או פחות מדי עדיין רצה בלי שגיאה ונותנת תשובה שגויה, וזו שגיאה לוגית.
שינוי רשימה תוך כדי מעבר עליה. הסרת פריטים מהרשימה שעוברים עליה גורמת ללולאה לדלג על איברים:
[1, 2, 3]
אחד מה-2 שרד, כי הסרת ה-2 הראשון הזיזה את השני למיקום שהלולאה כבר עברה. בנו רשימה חדשה במקום זאת: numbers = [n for n in numbers if n != 2].
לאן ממשיכים מכאן
לולאות עוברות על אוספים, ולכן מה זה מערך הוא העמוד המשלים הטבעי, ומה זה ערך בוליאני מסביר את בדיקות האמת והשקר שמחליטות מתי לולאה עוצרת. כשלולאה נותנת תוצאה שגויה בלי הודעת שגיאה, קראו מה זו שגיאה לוגית. כדי לתרגל כתיבת לולאות, התחילו את קורס Python או נסו את הדוגמאות שלמעלה בעורך ה-Python אונליין.
שאלות נפוצות
מה דוגמה לאיטרציה?
for שמדפיסה כל שם ברשימה של 100 משתמשים מריצה 100 איטרציות, אחת לכל שם. לולאת while שממשיכה לבקש סיסמה עד שמקלידים את הנכונה היא גם איטרציה, אף שמספר המעברים לא ידוע מראש.מה עדיף, רקורסיה או איטרציה?
האם איטרציה זה אותו דבר כמו לולאה?
for או while, ואיטרציה היא החזרה שהיא מבצעת. מעבר בודד על גוף הלולאה נקרא גם הוא איטרציה, כך שלולאה שרצה 5 פעמים מבצעת 5 איטרציות.מה ההבדל בין ספרינט לאיטרציה?
מה פירוש iterable?
for, כמו רשימה, מחרוזת, מילון, קובץ או range. ב-Python, אובייקט הוא iterable אם iter() יכולה לייצר ממנו iterator. מספרים שלמים אינם iterable, ולכן for x in 5: זורק TypeError.