לדלג לתוכן

תנאים ולולאות בשפת C

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

תנאים - if / else

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

דוגמה:

int a = 5;

if (a > 3) {
    printf("a is greater than 3\n");
} else {
    printf("a is less than or equal to 3\n");
}

שימו לב:

  • התנאי נמצא בתוך סוגריים רגילים ()

  • גוף התנאי תמיד בסוגריים מסולסלים {} - גם אם יש רק שורה אחת!

  • אין : כמו בפייתון, ואין טאב - רק סוגריים קובעים מה בפנים.

לולאות

1. while - לולאה כל עוד התנאי מתקיים

int i = 0;

while (i < 3) {
    printf("i = %d\n", i);
    i++;
}

כמו פייתון, רק עם () ו-{}.

2. do while - מבטיחה שהתוכן ירוץ לפחות פעם אחת

int i = 0;

do {
    printf("i = %d\n", i);
    i++;
} while (i < 3);

3. לולאת for - כמו בפייתון עם range, אבל עם שליטה מלאה

for (int i = 0; i < 3; i++) {
    printf("i = %d\n", i);
}

הסבר:

for (start; condition; update) {
    // loop body
}

במקום לכתוב i = 0, ואז while (i < 3), ואז i++ בתוך הלולאה - ב-for עושים את הכל בשורה אחת.

תרשים זרימה המראה את שלושת החלקים של לולאת for בשפת C: האתחול, בדיקת התנאי עם ערכים אמיתיים, גוף הלולאה, קידום המשתנה והיציאה מהלולאה

פעולות בתוך לולאות

break; // exit the loop
continue; // skip to the next iteration

תנאים בתוך לולאה:

for (int i = 0; i < 5; i++) {
    if (i % 2 == 0) {
        printf("%d is even\n", i);
    } else {
        printf("%d is odd\n", i);
    }
}

תנאים מקוננים:

int age = 18;
int has_license = 1;

if (age >= 18) {
    if (has_license) {
        printf("You can drive!\n");
    } else {
        printf("Go get a license!\n");
    }
}

טיפ חשוב:

ב-C כל ערך שאינו 0 נחשב ל-"אמת" (true), ו-0 נחשב ל-"שקר" (false).

if (1)        // will execute
if (0)        // will not execute
if (-15)      // will execute