במחשוב, לולאה (באנגלית: Loop) היא תיאור כללי לכל תהליך שחוזר על עצמו לפי תנאי אחד לפחות.
תנאי ללולאה הוא לדוגמה "שנה את צבע הרקע של אלמנטים מסוג X מהראשון ועד האחרון" או "שנה את צבע הרקע של אלמנטים מסוג X מהראשון ועד החמישי".
ראשון יכול להיות 0 או 1, תלוי בשפת מחשב עימה עובדים.
פורמליות
המושג "לולאה" אינו מושג פורמלי במדעי המחשב, אך הוא כן פורמלי בשפות תכנות מסוימות (כגון שפת JavaScript).
מושג האיטרציה
כשמדברים על לולאות, מושג חשוב הוא המושג "איטרציה".
איטרציה זה למעשה ריצה, אחת לפחות, של הלולאה.
כל פעם שהלולאה רצה או לחלופין מופעלת, זה "איטרציה".
תנאי איטרציה
אפשר לקבוע ללולאה לבצע שתי איטרציות לפחות.
- מספר האיטרציות כפי מספר האלמנטים עליהם עובדת הלולאה.
- מספר האיטרציות יהיה עד גבול מסוים כמו הגבול 4, כך שמספר האיטרציות יהיה תלוי בבסיס המנייה, למשל 1,2,3 או 0,1,2,3.
דוגמאות
דוגמאות לפעולה רפטטבית (חוזרנית) עם לולאה הן למשל חיבור מתמשך של רשימת מספרים טבעיים או שינוי הרשאות רקורסיבי לתיקייה (כלומר, שינוי הרשאות לתיקייה מסוימת ולכל תת-תיקייה ותת-תת-תיקייה וכן הלאה אם יש בה כזו\כאלה).
השימוש בלולאות היא לעתים רבות פשוט מטעמי נוחות; במקום לכתוב פרוצדורה ולקרוא לה שתיים או יותר פעמים (בצורה ישירה), כותבים לולאה שמבצעת את אותה פעולה ורצה n פעמים.
דוגמת קוד משפת JavaScript
for (let iteration = 0; iteration < 3; iteration ++) { alert("Hi"); }
ניתן להריץ קוד זה ב console של דפדפן. קוד זה יגרום להופעתן של 3 תיבות alert. כל אחת באיטרציה עצמאית.
במנייה בבסיס אפס:
- איטרציה 0 עד 1
- איטרציה 1 עד 2
- איטרציה 2 עד 3
הערות כלליות
- לולאה היא אבסטרקציה של של שניים או יותר איטרציות בהקשר נתון.
- פרוצדורה רקורסיבית (פרוצדורה שקוראת לעצמה) היא בעלת התנהגות "לולאתית" אך עקרונית איננה לולאה.
- בשפת JavaScript, מתודות שונות יכולות להתנהג כלולאה בפועל כגון
forEach()
.