A while loop repeats as long as its condition remains true.

while `while (condition)` checks before each iteration.
countdown Changing the loop variable moves the condition toward false.

While Loop

countdown
while_loop.c
Replay: real traced execution (multi-file project)
#include <stdio.h>

int main(void) {
    int countdown = 3;
    int sum = 0;

    while (countdown > 0) {
        sum += countdown;
        countdown--;
    }

    printf("sum=%d\n", sum);
    return 0;
}
#include <stdio.h>

int main(void) {
    int countdown = 2;
    int sum = 0;

    while (countdown > 0) {
        sum += countdown;
        countdown--;
    }

    printf("sum=%d\n", sum);
    return 0;
}
#include <stdio.h>

int main(void) {
    int countdown = 4;
    int sum = 0;

    while (countdown > 0) {
        sum += countdown;
        countdown--;
    }

    printf("sum=%d\n", sum);
    return 0;
}
  1. countdown ← 3, sum ← 0

    3int main(void) {4    int countdown→ 3 = 3; //@countdown=2, 45    int sum→ 0 = 0;
  2. sum ← 3, countdown ← 2

    pass 1 of 3
    7while (countdown3 > 0) {8    sum→ 3 += countdown3;9    countdown→ 2--;10}
    All 3 passes — pass 1 is the card above
    passsumcountdown
    10 33 2
    23 52 1
    35 61 0
  3. printf("sum=%d ", sum);

    12    printf("sum=%d\n", sum6);13    return 0;14}
    outputsum=6
  1. countdown ← 2, sum ← 0

    3int main(void) {4    int countdown→ 2 = 2;5    int sum→ 0 = 0;
  2. sum ← 2, countdown ← 1

    pass 1 of 2
    7while (countdown2 > 0) {8    sum→ 2 += countdown2;9    countdown→ 1--;10}
  3. sum ← 3, countdown ← 0

    pass 2 of 2
    7while (countdown1 > 0) {8    sum→ 3 += countdown1;9    countdown→ 0--;10}
  4. printf("sum=%d ", sum);

    12    printf("sum=%d\n", sum3);13    return 0;14}
    outputsum=3
  1. countdown ← 4, sum ← 0

    3int main(void) {4    int countdown→ 4 = 4;5    int sum→ 0 = 0;
  2. sum ← 4, countdown ← 3

    pass 1 of 4
    7while (countdown4 > 0) {8    sum→ 4 += countdown4;9    countdown→ 3--;10}
    All 4 passes — pass 1 is the card above
    passsumcountdown
    10 44 3
    24 73 2
    37 92 1
    49 101 0
  3. printf("sum=%d ", sum);

    12    printf("sum=%d\n", sum10);13    return 0;14}
    outputsum=10

Follow the Countdown

  1. countdown starts as 3.
  2. sum starts as 0.
  3. Each loop pass adds the current countdown value.
  4. After adding, countdown-- moves the loop toward stopping.
  5. The loop adds 3 + 2 + 1, so the program prints sum=6. | countdown before pass | sum after add | | --- | --- | | 3 | 3 | | 2 | 5 | | 1 | 6 |

Exercise: while_loop.c

Reproduce sum=6, then use the pinned countdown variants 2 and 4 to predict sum=3 and sum=10.