Control Flow
While Loop
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
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;
}
countdown ← 3, sum ← 0
3int main(void) {4 int countdown→ 3 = 3; //@countdown=2, 45 int sum→ 0 = 0;sum ← 3, countdown ← 2
pass 1 of 37while (countdown3 > 0) {8 sum→ 3 += countdown3;9 countdown→ 2--;10}All 3 passes — pass 1 is the card above pass sumcountdown1 0 → 3 3 → 2 2 3 → 5 2 → 1 3 5 → 6 1 → 0 printf("sum=%d ", sum);
12 printf("sum=%d\n", sum6);13 return 0;14}outputsum=6
countdown ← 2, sum ← 0
3int main(void) {4 int countdown→ 2 = 2;5 int sum→ 0 = 0;sum ← 2, countdown ← 1
pass 1 of 27while (countdown2 > 0) {8 sum→ 2 += countdown2;9 countdown→ 1--;10}sum ← 3, countdown ← 0
pass 2 of 27while (countdown1 > 0) {8 sum→ 3 += countdown1;9 countdown→ 0--;10}printf("sum=%d ", sum);
12 printf("sum=%d\n", sum3);13 return 0;14}outputsum=3
countdown ← 4, sum ← 0
3int main(void) {4 int countdown→ 4 = 4;5 int sum→ 0 = 0;sum ← 4, countdown ← 3
pass 1 of 47while (countdown4 > 0) {8 sum→ 4 += countdown4;9 countdown→ 3--;10}All 4 passes — pass 1 is the card above pass sumcountdown1 0 → 4 4 → 3 2 4 → 7 3 → 2 3 7 → 9 2 → 1 4 9 → 10 1 → 0 printf("sum=%d ", sum);
12 printf("sum=%d\n", sum10);13 return 0;14}outputsum=10
Follow the Countdown
countdownstarts as3.sumstarts as0.- Each loop pass adds the current countdown value.
- After adding,
countdown--moves the loop toward stopping. - The loop adds
3 + 2 + 1, so the program printssum=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.