למה צריך לולאות
מחשבים מצוינים בדבר שבני אדם שונאים: לחזור על אותו דבר שוב ושוב בלי להשתעמם ובלי לטעות. לולאה היא הוראה שאומרת ״חזור על ההוראות האלה״. במקום לכתוב עשר שורות זהות, כותבים אותן פעם אחת ועוטפים אותן בלולאה. הקוד קצר יותר, קל יותר לקרוא, וקל לשנות: אם רוצים 20 חזרות במקום 10, משנים מספר אחד.
לולאות נמצאות בכל מקום בחיים: ״ערבבו עשר פעמים״, ״הקיפו את המגרש שלוש פעמים״, ״חזרו על הפזמון״. גם רמזור הוא לולאה — ירוק, צהוב, אדום, ושוב מההתחלה, כל היום. בתכנות, לולאה מאפשרת לצייר מאה כוכבים, לבדוק כל תלמיד ברשימה, או להזיז דמות עוד ועוד כל עוד המשחק פועל.
לולאה עם מספר חזרות
הלולאה הפשוטה ביותר חוזרת מספר קבוע של פעמים. בסקראץ׳ יש בלוק ״חזור 10 פעמים״, שבתוכו שמים את הבלוקים שחוזרים. אם נשים בתוכו ״זוז 10 צעדים״ ו״הסתובב 36 מעלות״, הדמות תצייר עיגול כמעט מושלם של עשר צלעות — כי 10 פעמים 36 מעלות זה סיבוב שלם של 360 מעלות.
בפייתון משתמשים ב־for. הקוד for i in range(3): print(i) מציג את המספרים 0, 1 ו־2 — שלוש חזרות. המשתנה i נקרא מונה: הוא סופר באיזו חזרה אנחנו נמצאים. שימו לב שבפייתון הספירה מתחילה מ־0, ומספר החזרות הוא המספר שבסוגריים. אם רוצים לספור מ־1 עד 3, כותבים range(1, 4) — המספר האחרון לא נכלל.
לולאה ״כל עוד״
לפעמים לא יודעים מראש כמה פעמים לחזור. ״המשך לשחק כל עוד יש לך חיים״. ״המשך לשאול עד שהתשובה נכונה״. לזה יש לולאה מסוג אחר: while בפייתון (״כל עוד״), ובסקראץ׳ ״חזור עד ש…״. הלולאה בודקת תנאי לפני כל חזרה. אם התנאי עדיין נכון — היא חוזרת שוב; אם לא — היא נעצרת וממשיכים הלאה.
למשל: count = 3 ואחריו while count > 0: count = count - 1. בכל חזרה count קטן באחד: 3, 2, 1, 0. כשהוא מגיע ל־0, התנאי ״count גדול מ־0״ כבר לא נכון, והלולאה נעצרת. כך לולאה ותנאי עובדים יחד — וזה אחד הרעיונות החשובים בכל התכנות.
הסכנה: לולאה שלא נגמרת
מה יקרה אם נשכח את השורה שמקטינה את count? התנאי יישאר נכון לנצח, והלולאה תמשיך ותמשיך. לזה קוראים לולאה אינסופית. התוכנית ״נתקעת״ — לא מגיבה, או מציגה את אותו דבר שוב ושוב — עד שעוצרים אותה בכוח. כשזה קורה בפייתון, אפשר לעצור את התוכנית בלחיצה על Ctrl+C, ובסקראץ׳ — בלחיצה על הסימן האדום של העצירה.
ובכל זאת, לפעמים רוצים לולאה אינסופית בכוונה. משחק צריך לבדוק כל הזמן אם לחצו על מקש, ושעון צריך להתקדם בלי הפסקה. בסקראץ׳ יש לזה בלוק ״לעולמים״. ההבדל הוא שזה מתוכנן: המשחק נעצר כשסוגרים אותו. הכלל למתכנתים: בכל לולאת ״כל עוד״, ודאו שמשהו בתוכה משתנה, כך שיום אחד התנאי יפסיק להתקיים.

