לולאה

מתוך ויקיפדיה, האנציקלופדיה החופשית

ערך זה עוסק בלולאה בתכנות; לערך העוסק במשחקי לולאה, ראו משחקי לולאה.

לולאה (loop) היא טכניקת תכנות המשמשת לבקרת זרימה ומבצעת רוטינה מספר רב של פעמים.

תוכנית מחשב בנויה כך שהיא מטפלת בפריט מידע אחד או במצב אחד בכל פעם. כדי לחזור על התהליך עם פריט המידע הבא או המצב הבא, הוראה בתוכנית מסתעפת אחורנית וחוזרת ופונה להוראה הראשונה בסדרה. טכניקה זו רבת עוצמה מכיוון שהיא מאפשרת לחזור על פעולות אלפי ומיליוני פעמים בהקשרים שונים בכל פעם. דוגמה פשוטה וידועה לכך היא יצירת לוח הכפל באמצעות שתי לולאות אחת בתוך השניה.

תוכן עניינים

[עריכה] סוגי לולאות

סוגי הלולאות הנפוצים:

  1. לולאה שמתבצעת מספר קבוע מראש של פעמים (למשל, לולאת for בפסקל).
  2. לולאה שנבדקת בראשה. רק אם התנאי הוא אמת, נכנסים ללולאה בפעם הראשונה וממשיכים בחזרה כל עוד הוא אמת (למשל, לולאת while בפסקל).
  3. לולאה שנבדקת בתחתיתה. מבצעים את הלולאה בפעם הראשונה בכל מקרה ואחר כך בודקים את התנאי (למשל, לולאת repeat-until בפסקל).
  4. לולאת אוסף, לולאה שעוברים בה על כל האובייקטים באוסף (מערך, רשימה וכו') ומבצעים את תוכן הלולאה עליהם (למשל for each ב-#C או perl).

[עריכה] דוגמה

דוגמה לפונקציית PL/I הבודקת האם מספר נתון הוא מספר ראשוני, תוך ביצוע לולאה עד לשורש הריבועי של המספר הנבדק:

PRIMALITY: PROC (NUMBER) RETURNS (BIT (1)); /* בדיקת ראשוניות של מספר */
DECLARE NUMBER FIXED (9); /* המספר הנבדק */
DECLARE F FIXED (9);
DO F=2 TO SQRT (NUMBER); /* לולאה עד שורש המספר הנבדק */
IF FIXED (NUMBER / F) * F = NUMBER
THEN RETURN ('0'B); /* המספר אינו ראשוני */
END;
RETURN ('1'B); /* המספר ראשוני */
END PRIMALITY;

[עריכה] לולאה אינסופית

לולאה ללא תנאי עצירה או שתנאי העצירה שבה אינו מתקיים לעולם קרויה לולאה אינסופית. בלשון העממית קרוי מצב זה "תקיעה" של התוכנה, כאשר המשתמש רואה מסך שקפא, ואיבד את יכולת התיקשור עם ממשק המשתמש של התוכנה, בשל העובדה שהמעבד מתעסק רק או בעיקר בעיבוד של הפונקציה של הלולאה. לרוב היא עשוייה להיווצר עקב באג, אך היא עשוייה להיות גם כלי תכנותי. לולאה כזו שימושית כאשר היציאה מן הלולאה מבוצעת באמצעות קפיצה החוצה מן הלולאה.

[עריכה] ראו גם