You are on page 1of 79

BITS Pilani

K K Birla Goa Campus

CSF111: Computer Programming

Repetition: Loops

Swaroop Joshi

2023
Control flow

✤ The order in which statements in a


program are executed is called the
flow of control or control flow
Control flow

✤ The order in which statements in a


program are executed is called the
flow of control or control flow

✤ So far we have only seen sequential


and conditional execution.
Control flow

//…
✤ The order in which statements in a bool lunch_time = ...;
bool bed_time = ...;
program are executed is called the
flow of control or control flow if (lunch_time) {
eat();
} else if (bed_time) {
✤ So far we have only seen sequential sleep();
and conditional execution. }
Control flow

//…
✤ The order in which statements in a bool lunch_time = ...;
bool bed_time = ...;
program are executed is called the
flow of control or control flow if (lunch_time) {
eat();
} else if (bed_time) {
✤ So far we have only seen sequential sleep();
and conditional execution. }
Control flow

//…
✤ The order in which statements in a bool lunch_time = ...;
bool bed_time = ...;
program are executed is called the
flow of control or control flow if (lunch_time) {
eat();
} else if (bed_time) {
✤ So far we have only seen sequential sleep();
and conditional execution. }
Control flow

//…
✤ The order in which statements in a bool lunch_time = ...;
bool bed_time = ...;
program are executed is called the
flow of control or control flow if (lunch_time) {
eat();
} else if (bed_time) {
✤ So far we have only seen sequential sleep();
and conditional execution. }
Consider the following task
Consider the following task

✤ Write a piece of code that asks the user to input non-zero integers and
returns the total number of integers entered, including 0, once 0 is entered.

✤ Example: input stream = 3, 9, -1, 9, -4, 0; output: 6


Consider the following task

✤ Write a piece of code that asks the user to input non-zero integers and
returns the total number of integers entered, including 0, once 0 is entered.

✤ Example: input stream = 3, 9, -1, 9, -4, 0; output: 6

✤ Can you do this using if-else?


Count the non-zero values entered

int input = 1;
int count = 0;

while (input != 0) {
printf("Enter a non-zero integer: ");
scanf("%d", &input);

count++;
}
printf("You entered %d integers\n”,
count);
Count the non-zero values entered
input = 1
count = 0

int input = 1;
int count = 0;

while (input != 0) {
printf("Enter a non-zero integer: ");
scanf("%d", &input);

count++;
}
printf("You entered %d integers\n”,
count);
Count the non-zero values entered
input = 1
count = 0

int input = 1;
int count = 0;
input ≠ 0?
while (input != 0) {
printf("Enter a non-zero integer: ");
scanf("%d", &input);

count++;
}
printf("You entered %d integers\n”,
count);
Count the non-zero values entered
input = 1
count = 0

int input = 1;
int count = 0;
input ≠ 0?
while (input != 0) {
printf("Enter a non-zero integer: ");
Yes scanf("%d", &input);
Take input
Increment count count++;
}
printf("You entered %d integers\n”,
count);
Count the non-zero values entered
input = 1
count = 0

int input = 1;
int count = 0;
input ≠ 0?
while (input != 0) {
printf("Enter a non-zero integer: ");
Yes scanf("%d", &input);
Take input
Increment count count++;
}
printf("You entered %d integers\n”,
count);
Count the non-zero values entered
input = 1
count = 0

int input = 1;
int count = 0;
No
input ≠ 0?
while (input != 0) {
printf("Enter a non-zero integer: ");
Yes scanf("%d", &input);
Take input
Increment count count++;
}
printf("You entered %d integers\n”,
count);
Count the non-zero values entered
input = 1
count = 0

int input = 1;
int count = 0;
No
input ≠ 0?
while (input != 0) {
printf("Enter a non-zero integer: ");
Yes scanf("%d", &input);
Take input
Increment count count++;
}
printf("You entered %d integers\n”,
count);

Report count
Count the non-zero values entered
input = 1
count = 0

int input = 1;
int count = 0;
No
input ≠ 0?
while (input != 0) {
printf("Enter a non-zero integer: ");
Yes scanf("%d", &input);
Take input
Increment count count++;
}
printf("You entered %d integers\n”,
count);

Report count
Count the non-zero values entered
input = 1
count = 0

int input = 1;
int count = 0;
No
input ≠ 0?
while (input != 0) {
LOOP printf("Enter a non-zero integer: ");
Yes scanf("%d", &input);
Take input
Increment count count++;
}
printf("You entered %d integers\n”,
count);

Report count
A repetition instruction: while loop
Initialisation

Test
No
Yes
While block

Update

Next statement
A repetition instruction: while loop
Initialisation

Test initialisation
No
while (test) {
Yes
while_block
While block update
}
Update next_stmt

Next statement
Menu driven programs

✤ While loops are very useful for writing menu-driven programs

✤ The program gives the user a menu to choose from

✤ And based on their inputs, performs the operations

✤ Example: write a program that takes a real number, n, and asks the user to
choose between four operations on that number and reports the result

✤ (1) en (2) ln n (3) log2 n (4) 1/n, or (0) exit


A repetition instruction: while loop
Initialisation
✤ Example: write a program that takes a
real number, n, and asks the user to
choose between four operations on that
Test
No number and reports the result
Yes
While block ✤ (1) en (2) ln n (3) log2 n (4) 1/n, or (0) exit

Update

Next statement
A repetition instruction: while loop
Initialisation
✤ Example: write a program that takes a
real number, n, and asks the user to
choose between four operations on that
Test
No number and reports the result
Yes
While block ✤ (1) en (2) ln n (3) log2 n (4) 1/n, or (0) exit
initialisation
Update while (test) {
while_block
update
}
Next statement next_stmt
A menu driven program
Initialise response to any
nonzero value ✤ Example: write a program that takes a
real number, n, and asks the user to
choose between four operations on that
respnose=0?
No number and reports the result
Yes
Get response ✤ (1) en (2) ln n (3) log2 n (4) 1/n, or (0) exit

Compute result accordingly

Next statement
double n;
int response = -1;

printf("Enter a real number: ");


scanf("%lf", &n);

while (response != 0) {
printf("Choose one of these four options:\n");
printf("1. e^n\n2. ln n\n3. log_2 n\n4. 1/n\n0. Exit\n");
scanf("%d", &response);

double result = 0;
if (response == 1) result = exp(n);
else if (response == 2) result = log(n);
else if (response == 3) result = log2(n);
else if (response == 4) result = 1/n;

printf("Result = %lf\n", result);


}
double n;
int response = -1;

printf("Enter a real number: ");


scanf("%lf", &n);

while (response != 0) {
printf("Choose one of these four options:\n");
printf("1. e^n\n2. ln n\n3. log_2 n\n4. 1/n\n0. Exit\n");
scanf("%d", &response); Input error handling: what if the
response is not in the 0-4 range?
double result = 0;
if (response == 1) result = exp(n);
else if (response == 2) result = log(n);
else if (response == 3) result = log2(n);
else if (response == 4) result = 1/n;

printf("Result = %lf\n", result);


}
...
while (response != 0) {
printf("Choose one of these four options:\n");
printf("1. e^n\n2. ln n\n3. log_2 n\n4. 1/n\n0. Exit\n");
scanf("%d", &response);

while (response < 0 || response > 4) {


printf("Invalid response!\n");
printf("Choose one of these four options:\n");
printf("1. e^n\n2. ln n\n3. log_2 n\n4. 1/n\n0. Exit\n");
scanf("%d", &response);
}

double result = 0; ...


printf("Result = %lf\n", result);
}
...
while (response != 0) {
printf("Choose one of these four options:\n");
Nested loops - loop inside a loop
printf("1. e^n\n2. ln n\n3. log_2 n\n4. 1/n\n0. Exit\n");
scanf("%d", &response);

while (response < 0 || response > 4) {


printf("Invalid response!\n");
printf("Choose one of these four options:\n");
printf("1. e^n\n2. ln n\n3. log_2 n\n4. 1/n\n0. Exit\n");
scanf("%d", &response);
}

double result = 0; ...


printf("Result = %lf\n", result);
}
...
while (response != 0) {
printf("Choose one of these four options:\n");
printf("1. e^n\n2. ln n\n3. log_2 n\n4. 1/n\n0. Exit\n");
scanf("%d", &response);

while (response < 0 || response > 4) {


printf("Invalid response!\n");
printf("Choose one of these four options:\n");
printf("1. e^n\n2. ln n\n3. log_2 n\n4. 1/n\n0. Exit\n");
scanf("%d", &response);
}

double result = 0; ... Extract into a function for better


printf("Result = %lf\n", result); readability
}
Example

✤ Suppose a kid is given ₹ 100 and allowed to go to the store and buy all he can with that
amount.

✤ Write a program that

✤ asks the kid for the amount of the next item (assume he always enters a positive integer),

✤ displays the cart total, and

✤ if he still has some money left, asks again and repeats

✤ Finally, it shows him the final cart total


int cart_total = 0;
int item_price = 0;

while (cart_total <= 100) {


printf("Current cart total: %3d\n", cart_total);

printf("Enter next item price: ");


scanf("%d", &item_price);

cart_total += item_price;
}
cart_total -= item_price;

printf("Last item removed from the cart.\n");


printf("Final cart total = %3d\n", cart_total);
A possible solution
int cart_total = 0;
int item_price = 0;

while (cart_total <= 100) {


printf("Current cart total: %3d\n", cart_total);

printf("Enter next item price: ");


scanf("%d", &item_price);

cart_total += item_price;
}
cart_total -= item_price;

printf("Last item removed from the cart.\n");


printf("Final cart total = %3d\n", cart_total);
int cart_total = 0;
int item_price = 0;
What does %3d mean?
while (cart_total <= 100) {
printf("Current cart total: %3d\n", cart_total);

printf("Enter next item price: ");


scanf("%d", &item_price);

cart_total += item_price;
}
cart_total -= item_price;

printf("Last item removed from the cart.\n");


printf("Final cart total = %3d\n", cart_total);
Tracing a while loop

✤ To trace a while loop, you may trace over statements multiple times

✤ Each time you pass through the loop, you trace over all of the statements
in the loop body

✤ You stop tracing (and jump to the end) when the boolean condition on
the loop evaluates to false
Program State
int cart_total = 0;
int item_price = 0;
cart_total =
item_price =
while (cart_total <= 100) {
cart_total =
item_price =
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total =
item_price =
cart_total += item_price;
cart_total =
item_price =
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price =
while (cart_total <= 100) {
cart_total =
item_price =
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total =
item_price =
cart_total += item_price;
cart_total =
item_price =
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total =
item_price =
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total =
item_price =
cart_total += item_price;
cart_total =
item_price =
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
Is the expression
cart_total = 0 true for the
item_price
values=at0this point?
while (cart_total <= 100) { Yes! – so we enter the loop
cart_total =
item_price =
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total =
item_price =
cart_total += item_price;
cart_total =
item_price =
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0
item_price =
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total =
item_price =
cart_total += item_price;
cart_total =
item_price =
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0
item_price = 0
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total =
item_price =
cart_total += item_price;
cart_total =
item_price =
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0
item_price = 0
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
Assume the first cart_total =
amount entered was item_price =
cart_total += item_price; 12
cart_total =
item_price =
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0
item_price = 0
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0
item_price =
cart_total += item_price;
cart_total =
item_price =
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0
item_price = 0
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0
item_price = 12
cart_total += item_price;
cart_total =
item_price =
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0
item_price = 0
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0
item_price = 12
cart_total += item_price;
cart_total = 12
item_price =
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0
item_price = 0
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0
item_price = 12
cart_total += item_price;
cart_total = 12
item_price = 12
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0
item_price = 0
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0
item_price = 12
cart_total += item_price;
cart_total = 12
item_price = 12
}
We are at the end of the loop. cart_total =
item_price =
Go back and
cart_total -= item_price;
check the test
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
Copy over the values from the cart_total = 0 12
item_price = 0
previous iteration
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0
item_price = 12
cart_total += item_price;
cart_total = 12
item_price = 12
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12
item_price = 0 12
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0
item_price = 12
cart_total += item_price;
cart_total = 12
item_price = 12
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12
item_price = 0 12
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12
item_price = 12
cart_total += item_price;
cart_total = 12
item_price = 12
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12
item_price = 0 12
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12
item_price = 12 24
cart_total += item_price;
cart_total = 12
item_price = 12
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12
item_price = 0 12
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12
item_price = 12 24
cart_total += item_price;
cart_total = 12 36
item_price = 12
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12
item_price = 0 12
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12
item_price = 12 24
cart_total += item_price;
cart_total = 12 36
item_price = 12 24
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36
item_price = 0 12
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12
item_price = 12 24
cart_total += item_price;
cart_total = 12 36
item_price = 12 24
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36
item_price = 0 12 24
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12
item_price = 12 24
cart_total += item_price;
cart_total = 12 36
item_price = 12 24
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36
item_price = 0 12 24
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36
item_price = 12 24
cart_total += item_price;
cart_total = 12 36
item_price = 12 24
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36
item_price = 0 12 24
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36
item_price = 12 24 60
cart_total += item_price;
cart_total = 12 36
item_price = 12 24
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36
item_price = 0 12 24
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36
item_price = 12 24 60
cart_total += item_price;
cart_total = 12 36 96
item_price = 12 24
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36
item_price = 0 12 24
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36
item_price = 12 24 60
cart_total += item_price;
cart_total = 12 36 96
item_price = 12 24 60
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36
item_price = 12 24 60
cart_total += item_price;
cart_total = 12 36 96
item_price = 12 24 60
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24 60
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36
item_price = 12 24 60
cart_total += item_price;
cart_total = 12 36 96
item_price = 12 24 60
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24 60
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36 96
item_price = 12 24 60
cart_total += item_price;
cart_total = 12 36 96
item_price = 12 24 60
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24 60
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36 96
item_price = 12 24 60 5
cart_total += item_price;
cart_total = 12 36 96
item_price = 12 24 60
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24 60
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36 96
item_price = 12 24 60 5
cart_total += item_price;
cart_total = 12 36 96 101
item_price = 12 24 60
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24 60
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36 96
item_price = 12 24 60 5
cart_total += item_price;
cart_total = 12 36 96 101
item_price = 12 24 60 5
}
cart_total =
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24 60
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36 96
item_price = 12 24 60 5
cart_total += item_price;
cart_total = 12 36 96 101
item_price = 12 24 60 5
}
cart_total = 101
item_price =
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24 60
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36 96
item_price = 12 24 60 5
cart_total += item_price;
cart_total = 12 36 96 101
item_price = 12 24 60 5
}
cart_total = 101
item_price = 5
cart_total -= item_price;
cart_total =
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24 60
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36 96
item_price = 12 24 60 5
cart_total += item_price;
cart_total = 12 36 96 101
item_price = 12 24 60 5
}
cart_total = 101
item_price = 5
cart_total -= item_price;
cart_total = 96
item_price =
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24 60
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36 96
item_price = 12 24 60 5
cart_total += item_price;
cart_total = 12 36 96 101
item_price = 12 24 60 5
}
cart_total = 101
item_price = 5
cart_total -= item_price;
cart_total = 96
item_price = 5
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24 60
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36 96
For clarity, use separate columns item_price = 12 24 60 5
cart_total +=for
item_price;
each iteration: number of
cart_total = 12 36 96 101
iterations = number of columns item_price = 12 24 60 5
}
cart_total = 101
item_price = 5
cart_total -= item_price;
cart_total = 96
item_price = 5
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24 60
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36 96
item_price = 12 24 60 5
cart_total += item_price;
cart_total = 12 36 96 101
item_price = 12 24 60 5
}
Note, columns are shown only cart_total = 101
item_price = 5
inside the loop
cart_total -= item_price;
body, not before
and after! cart_total = 96
item_price = 5
Program State
int cart_total = 0;
int item_price = 0;
cart_total = 0
item_price = 0
while (cart_total <= 100) {
cart_total = 0 12 36 96
item_price = 0 12 24 60
printf("Current cart total: %3d\n", cart_total);
printf("Enter next item price: ");
scanf("%d", &item_price);
cart_total = 0 12 36 96
item_price = 12 24 60 5
cart_total += item_price;
cart_total = 12 36 96 101
item_price = 12 24 60 5
}
cart_total = 101
item_price = 5
cart_total -= item_price;
cart_total = 96
item_price = 5
Your turn

✤ What is the value of answer after the


loop ends? int m = 6, n = 3;
int answer = 1;
✤ How many times did the loop run?
while (n > 0) {
answer *= m;
✤ How many times did you check the --n;
test? }

✤ What does the code compute?


Program State
int m = 6, n = 3;
int answer = 1;
m =
n =
answer =
while (n > 0) {
m =
n =
answer =
answer *= n;
m =
n =
answer =
--n;
m =
n =
answer =
}
m =
n =
answer =
Your turn

✤ Design a function that takes two


integers (first must be smaller than
the second) and computes the sum
of all even integers between the two,
both inclusive

✤ using a while loop

✤ using recursion
Your turn

Data Two ints


✤ Design a function that takes two
integers (first must be smaller than
the second) and computes the sum
of all even integers between the two,
both inclusive

✤ using a while loop

✤ using recursion
Your turn

Data Two ints


✤ Design a function that takes two
Contract, Computes the sum of even
integers (first must be smaller than Purpose, and integers between m and n, incl.
the second) and computes the sum Header int sum_even(int m, int n)
of all even integers between the two,
both inclusive

✤ using a while loop

✤ using recursion
Your turn

Data Two ints


✤ Design a function that takes two
Contract, Computes the sum of even
integers (first must be smaller than Purpose, and integers between m and n, incl.
the second) and computes the sum Header int sum_even(int m, int n)
of all even integers between the two,
2 sum(1, 2)
both inclusive Examples 0 sum(-1, 1)

✤ using a while loop

✤ using recursion
Your turn

Data Two ints


✤ Design a function that takes two
Contract, Computes the sum of even
integers (first must be smaller than Purpose, and integers between m and n, incl.
the second) and computes the sum Header int sum_even(int m, int n)
of all even integers between the two,
2 sum(1, 2)
both inclusive Examples 0 sum(-1, 1)

✤ using a while loop
Body // ???
✤ using recursion

You might also like