Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Studies

לולאת while

לולאת while מאפשרת לנו לחזור על קטע קוד כלשהו כל עוד תנאי בוליאני כלשהו מתקיים. הסינטקס עבור לולאה כזו הוא:

while (boolean expression) {
    // Loop body
}

כשנגיע לתחילת הלולאה, נבדוק האם התנאי מתקיים. במידה וכן, נבצע את קטע הקוד שבתוכה (גוף הלולאה). בסיום גוף הלולאה, נבדוק שוב את התנאי - במידה והוא עדיין מתקיים, נבצע את גוף הלולאה שוב.

לדוגמא, נחשב עצרת של מספר כלשהו הניתן מהמשתמש. כידוע, מתקיים עבור \(n\) שלם:

$$ n! = 1 \cdot 2 \cdot 3 \cdot … \cdot (n-1) \cdot n $$

#include <stdio.h>
int main() {
    int number = -1;
    scanf("%d", &number);
    int i = 2, factorial = 1;

    while (i <= number) {
        factorial *= i++;
    }
    printf("%d! = %d\n", number, factorial);
}

נניח שהכנסנו לתוכנית את המספר 5. נבחן את המשתנים בכניסה לכל איטרציה של הלולאה:

ifactoriali <= number
21true
32true
46true
524true
6120false

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

#include <stdio.h>
int main() {
    int number = -1;
    while( number <= 0) {
        printf("Enter a positive number\n");
        scanf("%d", &number);
    }
    int i = 2, factorial = 1;
    while(i <= number) {
        factorial *= i++;
    }
    printf("%d! = %d\n", number, factorial);
}

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

Note

ניתן באמצעות while ליצר לולאות אינסופיות, ע״י הגדרת תנאי אמת שלא משתנה - למשל כך:

#include <stdbool.h>
while (1) {
    // Infinite loop
}
while  (true) {
    // Infinite loop
}

בהמשך נראה כיצד ניתן לעצור לולאות אינסופיות.