CHAPTER 5: Decision Making
and Looping
CSEB113 PRINCIPLES of
PROGRAMMING CSEB134
PROGRAMMING I
by
Badariah Solemon
BS (Sept 2012)
Topics
1. Decision making using:
Simple if selection
Simple ifelse selection and using ?: operator
Handling multiple conditions
Nested ifelse selection
ifelse if selection
switch selection
2. Looping:
Design: Counter-controlled vs Sentinel-controlled
Using while loop
Using dowhile loop
Using for loop
3. Data validation in selection and repetition structures
4. Combinations of control structures
5. Using continue and break statements
BS (Sept 2012)
Topic 1
DECISION MAKING
BS (Sept 2012)
Intro to Decision Making
Re-call the Apples problem:
Compute and display the total cost of apples
given the number of kilogram (Kg) of apples
purchased and the cost per Kg of apples
In this problem, we have identified two conditions/
constraints:
1. The quantity purchased must be more than zero
2. The cost per Kg apples must be more than zero
Because of those conditions, before the C program
calculates the total cost of apples purchased, we must
make it DECIDE that both conditions have been met.
We can get our C programs to make decisions of this
sort using Selection Structure
BS (Sept 2012)
What is Selection Structure?
Take actions depending on the outcome of a condition. A
condition is a logical expression that is either True or False.
General forms of selection structure (SYNTAX):
1
2
3
BS (Sept 2012)
Topic 1-1
SIMPLE if SELECTION
BS (Sept 2012)
if Selection
Is used when a statement or group of statements is to be
executed when the logical expression of the condition is
TRUE.
an expression that can return true or false
Syntax: if (condition)
No semicolon at the end
of the if statement.
single thenstatement;
The expression of the condition must be specified using
Relational
and Equality
Type
Operato
Meaning operators as follows:
Example
Result if x=5
r
Relation
al
Equality
expressio
n
and y=4
>
x is greater than y
x > y
5 > 4 is TRUE
<
x is less than y
x < y
5 < 4 is FALSE
>=
x is greater than or
equal to y
x >= y
5 >= 4 is TRUE
<=
x is less than or equal to
y
x <= y
5 <= 4 is
FALSE
==
x is equal to y
x == y
5 == 4 is
FALSE
!=
x is not equal to y
x != y
5 != 4 is TRUE
BS (Sept 2012)
Example Relational
Operator
Case Apples: the algorithm is refined by making
the
program decide that the followingBegin
condition
is met:
Prompt and get
QtyApple
The quantity purchased must be more than zero
Prompt and get
Cost
Begin
Prompt and get QtyApple
Prompt and get Cost
if QtyApple > 0
Compute: TotalCost = Cost * QtyApple
End if
Display TotalCost
End
QtyApple > 0?
Compute:
TotalCost = Cost * QtyApple
Print TotalCost
End
BS (Sept 2012)
Example Relational
Operator
Based on the refined algorithm, the C program is
as follows:
BS (Sept 2012)
if with Compound
Statements
In the example that we have seen so far, there is
only one statement to be executed after the if
statement.
To execute more than one statement after the
condition is satisfied, we have to put curly braces
{ } around those statements.
Syntax:if (condition)
{
multiple thenstatements;
}
QtyApple > 0?
Print message
(QtyApple > 0)
ifExample:
{
printf(Calculating the total cost\n);
Total = Cost * QtyApple;
Compute:
TotalCost = Cost * QtyApple
}
BS (Sept 2012)
10
Example Equality Operator
This example demonstrates the use of equality
operators == and !=
Note that == is different that =. Why?Prompt and get
status
status == 1?
Print Kids
status != 0?
Print Adults
BS (Sept 2012)
11
Exercise
What is the output of this program?
the If values entered are:
a)789 and 12
b)44 and 44
c)3 and 9901
BS (Sept 2012)
12
Topic 1-2
SIMPLE ifelse SELECTION
BS (Sept 2012)
13
Simple if..else
Is used when a statement or group of
statements is to be executed when the
logical expression of the condition is
FALSE.
No semicolon
if (condition)
at the end of
Single then Syntax:
the if and
else
statement ;
else.
Single else-statement
;
if (QtyApple
> 0)
Example:
Print message
Total = Cost * QtyApple;
else
QtyApple > 0?
Compute:
TotalCost = Cost
* QtyApple
printf(Invalid quantity!\n);
BS (Sept 2012)
14
ifelse with Compound
Statements
put curly braces { } around a group of
statements
if (QtyApple > 0)
{
printf(Calculating the total cost\n);
(condition)
if
Syntax:
Example:
{
Total = Cost * QtyApple;
}
else
{
}
Total = Cost * QtyApple;
Multiple then-statements ;
}
else
{
printf(Invalid quantity!\n);
Total = 0.0;
Multiple else-statements;
}
F
QtyApple > 0?
Print message
invalid quantity
Total = 0.0
Print message
Compute:
TotalCost = Cost * QtyApple
BS (Sept 2012)
15
Other Variations of Syntax of if
else
1. With one then-statement and multiple
else-statements. Syntax:
if (condition)
else
{
F
QtyApple > 0?
Print message
invalid quantity
Single then-statement;
Multiple elsestatements;
Compute:
TotalCost = Cost * QtyApple
Total = 0.0
if (QtyApple > 0)
Total = Cost *
else
{
printf(Invalid
Total = 0.0;
flag = I;
}
flag = I
BS (Sept 2012)
Example:
QtyApple;
quantity!\n);
16
Other Variations of Syntax of if
else
2. With multiple then-statements and one
else-statement.
(condition)
Syntax: if
{
}
else
Multiple then-statements;
single else-statement ;
Example:
if (QtyApple > 0)
{
Total = Cost * QtyApple;
flag = V;
}
else
printf(Invalid quantity!\n);
QtyApple > 0?
Compute:
TotalCost = Cost * QtyApple
Print message
invalid quantity
BS (Sept 2012)
flag = I
17
Effect of Omitting { }
This what might happens if the { }
are omitted
int score;
printf(Enter the score: );
scanf(%d,&score);
Enter the score: 75
You have done very well
Ill give you a present
Sorry no present for you
Go and study more
if (score >= 60)
{
printf(You have done very well\n);
printf(Ill give you a present\n);
}
else
printf(You have failed the course\n);
printf(Sorry no present for you\n);
printf(Go and study more);
BS (Sept 2012)
18
Test your skill
What happens if we omit the { }?
int score;
printf(Enter the score: );
scanf(%d,&score);
if (score >= 60)
printf(You have done very well\n);
printf(Ill give you a present\n);
else
{
printf(You have failed the course\n);
printf(Sorry no present for you\n);
printf(Go and study more);
BS (Sept 2012)
19
Conditional Operator ( ? : )
Used to simplify an ifelse
statement.
Syntax:
( condition) ? Single then-statement : single elsestatement;
The
statement above is equivalent
if (condition)
single thento:statement;
else
single elsestatement;
BS (Sept 2012)
20
Example
ifelse statement:
if (total > 60)
printf("Passed!!\n");
else
printf("Failed!!\n");
Print Failed
total > 0?
Print Passed
Conditional statement:
printf("%s!!\n", total > 60? "Passed" : "Failed");
OR
total > 60 ? printf("Passed\n") : printf(Failed\n");
BS (Sept 2012)
21
Example 2
#include <stdio.h>
void main(void)
{
char grade;
int marks;
printf("Enter marks");
scanf("%d\n", &marks);
grade = (marks > 60)? 'P': 'F';
printf("\nGrade = %c\n", grade);
}
(marks > 60)? printf("%c",'P'): printf("%c",'F');
BS (Sept 2012)
22
Topic 1-3
HANDLING MULTIPLE
CONDITIONS
BS (Sept 2012)
23
Multiple Conditions Apples
Case
Re-call that in the Apples Case problem, we have
identified two conditions/ constraints:
1. The quantity purchased must be more than zero
2. The cost per Kg apples must be more than zero
So far, we have handled only the first condition in
these statements:
if (QtyApple > 0)
Total = Cost * QtyApple;
We can get our program to check multiple
conditions in one logical expression, using logical
operator &&. Example:
if (QtyApple > 0
Total = Cost
BS (Sept 2012)
&& Cost > 0)
* QtyApple;
24
Logical Operators
To connect two conditions:
Operat
or
Read
as
Evaluation
Example
&&
AND
All the conditions
must be true for
the whole
expression to be
true.
if (x == 10 && y == 9)
The truth of one
condition is
enough to make
the whole
expression true
if (x == 10 || y == 9)
Reverse the
meaning of a
condition
if (!(points > 90))
||
OR
NOT
The if condition is true only when
value x is 10, AND value of y is 9.
The if condition is true when
either one of x OR y has the right
value.
Means if points NOT bigger than
90
BS (Sept 2012)
25
Results of a Logical
Expression
Each logical expression with multiple conditions
has either True or False value, depending of the
value of each condition in it.
This table lists possible result of a logical
expression. Symbols A and B indicate conditions.
A
A &&
B
A || B
!A
!B
True
True
True
True
False
False
True
False
False
True
False
True
False
True
False
True
True
False
False
False
False
False
True
True
BS (Sept 2012)
26
Example
#include<stdio.h>
void main ( )
{
int x=5, y=0;;
printf(x=%d
y=%d\n\n, x,y);
if (x>0 && y>=0)
printf(x greater than zero and
y greater than or equal to zero\n\n);
if (x==0 || y==0)
printf(x and y equal to zero\n\n);
if (!(x==y))
printf(x is not equal to y\n);
x=5
y=0
x greater than zero and y greater than or equal to zero
x and y equal to zero
X is not equal to y
BS (Sept 2012)
27
Exercise
What is the output of this program?
If input data are:
f 25
f 17
- m 25
- m 17
- F 25
- F 17
- M 25
- M 17
#include<stdio.h>
void main ( )
{
char gender;
int age;
float loan;
printf(Enter your gender (f/F or m/M) and age:);
scanf(%c %d, &gender, &age);
if (gender == f && age > 20)
{
car_loan = 200000.00;
printf(Your car loan is %.2f\n, loan);
printf(Well done.\n);
}
BS (Sept 2012)
28
Evaluating Multiple Operators in a Logical
Expression
The C rules for evaluating logical expression with
multiple mix of operators are parentheses rule,
precedence rule and associativity rule.
For a complete list, refer to Appendix C (Hanly
&Koffman)
Precedence
Highest (evaluated
first)
<
Lowest (evaluated
last)
Operation
Associativity
[ ]( )
!
>
<=
== !=
&&
||
?:
L
L
L
L
L
L
R
BS (Sept 2012)
>=
29
Example
#include<stdio.h>
void main ( )
{
int x=8, b=-3, c=0, x;
if(a) printf(a=%d,
if(b) printf(b=%d,
if(c)
else
!a=%d\n, a, !a);
!b=%d\n, a, !a);
printf(Never gets printed\n);
printf(c=%d, !c=%d\n, c, !c);
Single variable
returns True or
False based on its
value
-0 : False
- 1(non-zero): True
a=8 !a=0
b=-3 !a=0
c=0 !c=1
Answer is FALSE
x=1 !x=0
if (a>b && B>c || a==b) printf(Answer is TRUE\n);
else printf(Answer is FALSE\n);
logical expression
x = a>b || b>c && a==b;
returns True or
False
printf(x=%d,
!x=%d\n, x, !x);
BS (Sept 2012)
and the result can
be assigned to an
integer variable
30
Topic 1-4
NESTED ifelse SELECTION
BS (Sept 2012)
31
What is Nested if..else?
if and ifelse contained in another ifelse
selection.
However, as ifelse statements become nested,
programs become harder to understand.
To improve readability, indent each pair of ifelse
statement
Example
syntax
if (outer-condition)
(*numbers of ifs and the numbers of elses are not
//if outer is True, execute this block
necessarily
equal)
if (inner1-condition)
{ inner1 -then-statement; }
//if inner1 is True, execute this
block
else
{ inner1-else-statement n; } //if inner1 is False, execute this
block
}
else
{
//if outer is False, execute this block
if (inner2-condition)
{ inner 2-then-statement; }
//if inner2 is True, execute this
block
else
{ inner2-else-statement
} 2012)
//if inner2 is False, execute this32
BSn;
(Sept
block
Example
#include<stdio.h>
void main ( )
{
int day, time;
printf(Enter day and time: );
scanf(%d %d, &day, &time);
Enter day and time: 3 1000
if (day>0 && day<=6)
Relax
{
if (time<=900) printf(\nSleep\n);
else
{
if (time <=1900) printf(\nWork\n);
else printf(\nRelax\n);
}
}
else
{
if (time<=1100) printf(\nSleep\n);
else printf(\nHave fun\n);
}
BS (Sept 2012)
Draw a flowchart
for this program
33
Topic 1-5
ifelse if SELECTION
BS (Sept 2012)
34
What is ifelse if
selection?
One type of nested selection structure
If any one of the condition is already
satisfied, the other conditions will be
ignored completely.
F
F
F
F
Print
F
score>=70?
score>=60?
score>=80?
score>=90?
if (score >= 90)
printf(A\n);
else if (score >= 80)
printf(B\n);
else if (score >= 70)
printf(C\n);
Print
A
else if (score >= 60)
Print
B
printf(D\n);
else
Print
C
printf(F\n);
Print
D
BS (Sept 2012)
35
Re-writing ifelse if
statements can be re-written to
multiple single if statements. But this applies to
condition that uses equality operator only.
Example:
if..else if
if (number == 1)
printf(One\n);
else if (number == 2)
printf(Two\n);
else if (number == 3)
printf(Three\n);
else
printf(Others\n);
if (number == 1)
printf(One\n);
if (number == 2)
printf(Two\n);
if (number == 3)
printf(Three\n);
if (number < 1 && number > 3)
printf(Others\n);
Enter the score: 2
Two
Enter the score: 2
Two
BS (Sept 2012)
36
Test your skill
What are the outputs of these programs
segments? If value of score entered is 85
if (score >= 90)
printf(A\n);
else if (score >= 80)
printf(B\n);
else if (score >= 70)
printf(C\n);
else if (score >= 60)
printf(D\n);
else
printf(F\n);
if (score >= 90)
printf(A\n);
if (score >= 80)
printf(B\n);
if (score >= 70)
printf(C\n);
if (score >= 60)
printf(D\n);
if (score < 60)
printf(F\n);
Whats the effect of re-writing the above if..else
if statements to multiple if statements?
BS (Sept 2012)
37
Exercise
Write a program that prompts the users to
enter the value of Ritcher scale
number (n), and
print its
equivalent effect as a message to the
users based on the following table:
BS (Sept 2012)
38
Topic 1-6
switch SELECTION
BS (Sept 2012)
39
switch Statement
A switch statement is used to choose one
choice from multiple cases and one default
case.
Syntax:
The break statement is
switch
{
case
needed so that once a case
has been executed, it will skip
all the other cases and go
constant 1: statement; outside the switch statement.
(ControlVariable)
break;
case constant-n: statement;
break;
default: statement;
The default clause is
executed if the cases are not
met.
BS (Sept 2012)
40
Rules for switch Statement
1. The value for case must be integer or
character only.switch (number)
Examples:
if (number==1)
num += 2;
}
case 1 :
num += 2;
break;
The value
for each
case is
followed
by colon
(:).
if (color==R)
colorstr = r;
2. The value checked in each case must be
case
1 : in
case >=
constant only and not
values
range.
BS (Sept 2012)
1 :
41
Example
The logic of this switch selection is similar to if
else if
#include <stdio.h>
void main()
{
int num;
printf(Enter number:");
scanf("%d", &num);
F
F
F
Print
False grade
num==3?
switch (num)
{
case 1: printf("Bad (D)\n");break;
case 2: printf("Good (C)\n");break;
case 3: printf("Excellent (A)\n");break;
default: printf(False grade\n");
}
}
num==2?
num==1?
T
Print
Bad (D)
Print
Good (C)
Print
Excellent (A)
Enter number: 3
Excellent (A)
BS (Sept 2012)
42
Omitting break Statement
#include <stdio.h>
void main()
{
int majorCode;
If the break statement is omitted, the
execution will be carried out to the
next alternatives until the next break
statement is found.
printf("Enter your majoring code: ");
scanf("%d", &majorCode);
switch(majorCode)
{
case 1 :
case 3 :
case 5 : printf(\nScience Student\n);
break;
case 2 :
case 4 : printf(\nArt Student\n);
} /* end_switch */
Enter your majoring code: 3
Science Student
BS (Sept 2012)
43
Example
char grade;
printf(Enter the grade you scored:);
scanf(%c,&grade);
switch (grade)
{
case a:
case A:
printf(Excellent!!\n);
printf(You brilliant..\n);
break;
case b:
case B:
printf(Job well done!!\n);
printf(You deserve it..\n);
break;
default:
printf(undefined grade\n);
}
Observe the
equivalent logical
expression. What
can you conclude
from these two
program segments?
if (grade == a || grade == A)
{
printf(Excellent!!\n);
printf(You brilliant..\n);
}
else if (grade == b || grade == B)
{
printf(Job well done!!\n);
printf(You deserve it..\n);
}
else
printf(undefined grade\n);
BS (Sept 2012)
44
Exercise
1. Using switch statement, write a program
that reads a positive integer
number
between 1 to 5, and
prints the word equivalent to it.
For example, if the user enters 5, the
program should print the word Five to
the screen.
BS (Sept 2012)
45
Topic 2
LOOPING
BS (Sept 2012)
46
Intro to Looping
Re-call the Apples problem:
Compute and display the total cost of apples given
the number of kilogram (Kg) of apples purchased
and the cost per Kg of apples
Before this, weve learned to get our program to make
decisions using Selection Structure.
With the program, when a cashier keys in number of kilogram
of apples purchased and the cost per Kg of apples the
computer will output the total cost of apples purchased for one
customer. However, to calculate the total cost for 100
customers, the cashier would need to execute this program
100 times!
So, the methods by which it is possible to repeat processing
without executing the program or writing the same statements
over and over is called Looping or Iteration using
Repetition Structure.
BS (Sept 2012)
47
What is Repetition
Structure?
Used to repeat a block of statements a number of
times (loop) until a certain condition is met without
having to write the same statements multiple
times.
Two design of loops:
To execute a number
To execute a number
of instructions from
of instructions from
the program for a
the program
finite, preindifinitely until
determined
the user tells it to
number of time
stop or a special
Loop depends of
condition is met
arithmetic or
Loop depends on
conditional
a sentinel
Counter-controlled
Sentinel-controlled
expression.
BS (Sept 2012)
48
value.
Types of Looping
1
while while (condition)
LoopBody-statement;
dowhile
NO semicolon
do
LoopBody-statement;
while (condition);
for
for (InitializationExp; Condition;
UpdateExp)
LoopBody-statement;
Exp = Expression
BS (Sept 2012)
49
Topic 2-1
while LOOP
BS (Sept 2012)
50
while Statement
Syntax:
an expression that can return true or fals
while (condition)
single LoopBodystatement;
while (condition)
{
multiple loopBodystatements;
}
Enclose a group of loop body statements within the
braces
{}
As long as the condition is met (returns true), the
statement inside the while loop will always get executed.
When the condition is no longer met (returns false),
the program will continue on with the next instruction
(the one after the while loop).
BS (Sept 2012)
51
1. Counter-controlled while
Loop
Used to execute a number of instructions from the
program for a finite, pre-determined number of
time
Loop dependstotal
of arithmetic
or conditional
is the loop controlvariable
Total
= 1
expression.
In this case, this loop will keep on
Total = 2
Total = 3
looping until the counter total
variable is 5. Once value of total
is 6, the loop will terminate
...
int total = 1;
while (total <= 3)
{
printf(Total = %d\n, total);
total++;
}
x++;
...
BS (Sept 2012)
x++
total=1
total <= 3?
T
Print value
of total
total++
52
Example
#include<stdio.h>
main ( )
{
printf(Hello
printf(Hello
printf(Hello
printf(Hello
printf(Hello
}
World\n);
World\n);
World\n);
World\n);
World\n);
Hello
Hello
Hello
Hello
Hello
Begin
#include<stdio.h>
main ()
{
int num = 1;
World
World
World
World
World
num=1
while(num < 6)
{
printf("Hello World\n");
num++;
}
End
num < 6?
T
Print Hello
World
num++
BS (Sept 2012)
53
Example 2
You may allow the user to set the
number of iteration as shown in
example below :
#include<stdio.h>
Begin
void main (void)
{
int counter=1, n=0;
printf(Number of iteration?: );
scanf(%d, &n);
while(counter <= n)
{
printf("Hello World\n");
counter++;
}
counter=1, n=0
Prompt and
get n
}
// in this example the output varies
depending on the value of n entered
by the user
BS (Sept 2012)
End
counter < n?
T
Print Hello
World
counter++
54
Exercise
1. For the following code fragment:
sum =0;
count = 2;
while (count <= 5)
{
sum = sum + count;
count = count + 3;
}
How many times will the while loop body be executed?
What will be the end values computed for the variables
sum and count?
2. Write a program that reads 3 integer numbers
and prints the sum of the numbers. Repeat the
reading and printing processes 10 times using
while loop.
BS (Sept 2012)
55
2. Sentinel-Controlled while
Loop
Counter control loop is used when we know
beforehand how many iteration that the loop
should execute.
There will be cases where we (as the programmer)
do not know how many times the loop should be
executed, because the decision is up to the users.
In this case, to terminate the loop, we need to use
sentinel controlled loop method
In order to exit from the loop, the user must enter
a unique data value, called a sentinel value.
The sentinel value must be a value that could not
normally occur as data.
BS (Sept 2012)
56
2. Sentinel-Controlled while
Loop
The algorithm for sentinel-controlled while loop:
Read/assign a value to control variable
While value of the control variable is not
sentinel value
process the value
read the next value
end_while
Get a value
Value != sentinel
value?
Process value
Consider this problem:
Get next
value
Write a program that reads several integer numbers from
the user and prints the sum of the numbers. The program
stops reading numbers from the users when they enter
ZERO.
BS (Sept 2012)
57
Example
Prompt and
get num
The sentinel value in this case is ZERO
#include <stdio.h>
void main(void)
{
int num, sum = 0;
sum += num
Print value
of sum
Prompt and
get num
printf(Enter a number [zero to end]: );
scanf(%d,&num);
num != 0?
while (num != 0)
{
sum += num;
printf(Enter a number [zero to end]: );
scanf(%d,&num);
Enter a
}
Enter a
Enter a
printf(Sum = %d\n, sum);
Enter a
Sentinel value ZERO
will terminate the
loop
number
number
number
number
[zero
[zero
[zero
[zero
to
to
to
to
end]:
end]:
end]:
end]:
3
-6
10
0
Sum = 7
BS (Sept 2012)
58
Example
#include <stdio.h>
Sentinel value -99 will
main ()
terminate the loop
{
int sum=0, score=0, count=0;
printf("Enter first score or (-99 to quit):");
scanf("%d", &score);
while (score != -99)
{
count++;
sum += score;
printf("Enter next score or (-99 to quit):");
scanf("%d", &score);
F
}
printf("Sum of %d scores: %d", count, sum);
Print value of
count and sum
Enter first score (or -99 to quit): 80
Enter next score (or -99 to quit): 77
Enter next score (or -99 to quit): -99
Sum of 2 scores: 157
BS (Sept 2012)
Prompt and
get score
score!= -99?
count++
sum += score
Prompt and
get score
59
Exercise
1. Write a program that calculates and prints the
average of several real numbers.
Assume the last
value read is the
sentinel 9.9. Use a while loop to
accomplish the task. Sample input/ouput:
10.0 12.3 5.6 21.3 9.9
Average: 8.6
2. Write a program that computes and displays the
sum of a collection of Celsius temperatures
entered until a sentinel value of -275 is entered.
BS (Sept 2012)
60
Topic 2-2
dowhile LOOP
BS (Sept 2012)
61
1. Counter-controlled
Loop
Syntax:
do
do/while
NO semicolon
single LoopBody-statement;
while (condition);
do
{
multiple LoopBodystatements;
} while (condition);
Semicolon here is a MUST
the LoopBody-statement inside it will be
executed once no matter what.
Then only the condition will be checked to decide
whether the loop should be executed again or just
continue with the rest of the program.
BS (Sept 2012)
62
Example
#include<stdio.h>
main ( )
{
printf(Hello World\n);
printf(Hello World\n);
printf(Hello World\n);
printf(Hello World\n);
printf(Hello World\n);
}
Hello
Hello
Hello
Hello
Hello
World
World
World
World
World
Begin
num=1
#include<stdio.h>
main ()
{
int num = 1;
Print Hello
World
do
{
printf("Hello World\n");
num++;
} while(num <=5);
num++
num <= 5?
End
BS (Sept 2012)
63
Example 2
You may allow the user to set the
number of iteration as shown in
example below :
#include<stdio.h>
Begin
void main (void)
{
int counter=1, n=0;
printf(Number of iteration?: );
scanf(%d, &n);
num=1
Prompt and
get n
do {
printf("Hello World\n");
counter++;
} while(counter <= n);
Print Hello
World
}
// in this example the output varies
depending on the value of n entered
by the user
counter++
counter <= n?
End
BS (Sept 2012)
64
while Loop vs do..while
Loop
int total = 10;
int total = 10;
while (total < 10)
{
printf(Total = %d\n, total);
total++;
}
do
{
printf(Bye);
printf(Bye);
Print Bye
total < 10?
total=10
while loop
total=10
printf(Total = %d\n, total);
total++;
} while (total < 10);
Print value
of total
dowhile
loop
total++
Print value
of total
F
total++
total < 10?
Print Bye
BS (Sept 2012)
65
Exercise
1. For the following code fragment:
sum =0;
count = 2;
do {
sum = sum + count;
count = count + 3;
} while (count <= 5);
How many times will the dowhile loop body be
executed?
What will be the end values computed for the
variables sum and count?
2.
Re-write the program that reads 3 integer numbers and
prints the sum of the numbers, which keeps on repeating the
reading and printing processes 10 times using dowhile loop.
BS (Sept 2012)
66
2. Sentinel-controlled do/while
Loop
The algorithm for sentinel-controlled dowhile
loop:
Start do
process the value
read a value to the control variable
While value of the control variable is not sentinel
value
Example:
int sum=0, score=0, count=0;
Enter score (or -99 to quit): -99
do
{
Sum of 1 scores: 0
count++;
sum += score;
printf("Enter score or (-99 to quit):");
scanf("%d", &score);
} while (score != -99);
printf("\nSum of %d scores: %d", count, sum);
BS (Sept 2012)
67
Exercise
1. Re-write the program that calculates and prints
the average of several real numbers
after the last
value read is the
sentinel 9.9 by using a dowhile
loop to
accomplish the task. Sample input/output:
10.0 12.3 5.6 21.3 9.9
Average: 8.6
2. Re-write the program that computes and
displays the sum of a collection of Celsius
temperatures entered until a sentinel value of
-275 is entered using a dowhile loop.
BS (Sept 2012)
68
Topic 2-3
for LOOP
BS (Sept 2012)
69
for Loop
Syntax:
MUST semicolons
NO semicolon
for (InitializationExp; Condition;
UpdateExp)
single LoopBody-statement;
for (InitializationExp; Condition;
UpdateExp)
{
multiple LoopBody-statements;
}
InitializationExp : initialize the loop control variable
Condition : determine whether the condition or test
expression returns True or false
UpdateExp : change value of the loop control variable
at the end of each loop
BS (Sept 2012)
70
1. Counter-controlled for
Loop
Control variable
Example:
int total;
for (total = 1; total <= 3; total++)
printf(Total = %d\n, total);
Total = 1
Total = 2
Total = 3
total=1
total <= 3?
T
Print value
of total
total++
BS (Sept 2012)
71
Example 2
You may allow the user to set the
number of iteration as shown in
example below :
#include<stdio.h>
Begin
void main (void)
{
int counter=1, n=0;
printf("Number of iteration?: ");
scanf("%d", &n);
for(counter=1; counter<=n; counter+++)
printf("Hello World\n");
counter=1, n=0
Prompt and
get n
End
// in this example the output varies
depending on the value of n entered by
the user
BS (Sept 2012)
counter <= n?
T
Print Hello
World
counter++
72
while Loop vs for Loop
int total = 1;
Both produce same output and have similar order of
execution!
Because using a for loop is just another way of writing a
int total;
while loop.
while (total <= 3)
{
printf(Total = %d\n, total);
total++;
}
printf(Bye);
for(total=1; total<=3; total++)
{
printf(Total = %d\n, total);
}
printf(Bye);
total=1
Print Bye
total <= 3?
total=1
T
Print value
of total
Print Bye
total++
total <= 3?
T
Print value
of total
total++
BS (Sept 2012)
73
Differences between while Loops and
for Loops
Although the two are similar in their order of
execution, they are different as follows:
Item
for loop
while loop
Initialization
expression
Is one of the loop
expressions
Must be given prior to
the loop
Condition (or
test
expression )
Is one of the loop
expressions
Is one of the loop
expressions
Update
expression
Is one of the loop
expressions
Must be in the loop body
When number
of iteration is
known
Is very convenient
Is less convenient
When number
of iteration is
unknown
Is less convenient
Is ver y convenient
BS (Sept 2012)
74
Omitting for Loop
Expressions
It is also possible to omit one or more
of the for loop expressions.
HOW?
1. Assign initial value to control variable
Example:
2. Place semicolon without the
expression
int num=1;
for (;num<=5;num++)
{
printf("Hello World\n");
}
BS (Sept 2012)
75
2. Sentinel-controlled for
Loop
Example:
#include <stdio.h>
main ()
{
int sum=0, score;
printf("Enter first score (or -99 to quit):");
for ( scanf("%d", &score); score != -99; scanf("%d", &score))
{
sum += score;
printf("Enter next score (or -99 to quit):");
}
printf("Sum of all scores: %d", sum);
BS (Sept 2012)
76
Topic 3
DATA VALIDATION
BS (Sept 2012)
77
Intro to Data Validation
Good programmers would ensure that only valid
data are entered and processed by their programs.
Say for example we want to write a program that
reads the score marks from the user, and print its
equivalent grade.
Say that the valid score marks range is between 0
to100. So, if user keys in value other than 0 to100,
the program should do something such as the
following:
Option 1: Tell the users that they have entered a
wrong input and terminate the program.
Option 2: Tell the users that they have entered a
wrong input and ask them to reenter the input.
BS (Sept 2012)
78
Data Validation: ifelse if
Option 1:
Tell the users that they have entered
a wrong input and terminate the program.
printf(Enter the score: );
scanf(%d,&score);
if (score >= 90 && score <= 100)
printf(A\n);
else if (score >= 80 && score < 90)
printf(B\n);
else if (score >= 70 && score < 80)
printf(C\n);
else if (score >= 60 && score < 70)
printf(D\n);
else if (score >= 0 && score < 60
printf(F\n);
else
printf(Error, input should only be between 0 100 \n);
BS (Sept 2012)
79
Data Validation: while Loop
Option 2(1):
Tell the users that they have
entered a wrong input and ask them to reenter
theprintf(Enter
input using
while
loop.
score:
);
Sentinel-controlled while
scanf(%d, &score);
loop with multiple sentinel
values in the range of <
zero or > 100
while (score < 0 || score > 100)
{
printf(Sorry, input must be between 0 100\n);
printf(Re-enter the score: );
scanf(%d,&score);
}
if (score >= 90 && score <= 100)
printf(A\n);
else if (score >= 80 && score < 90)
printf(B\n);
else if (score >= 70 && score < 80)
printf(C\n);
else if (score >= 60 && score < 70)
printf(D\n);
else
printf(F\n);
BS (Sept 2012)
80
Data Validation: do..while
Loop
Option 2(2):
Tell the users that they have
entered a wrong input and ask them to reenter
the input using dowhile loop.
do{
printf(Enter score: );
scanf(%d,&score);
if (score < 0 || score > 100)
printf(Sorry, input must be between 0 100\n);
}while (score < 0 || score > 100);
Sentinel-controlled
if (score >= 90 && score <= 100)
printf(A\n);
dowhile loop with
else if (score >= 80 && score < 90)
multiple sentinel
printf(B\n);
values in the range
else if (score >= 70 && score < 80)
of < zero or > 100
printf(C\n);
else if (score >= 60 && score < 70)
printf(D\n);
else
printf(F\n);
BS (Sept 2012)
81
Data Validation: for Loop
Option 2(3):
Tell the users that they have
entered a wrong input and ask them to reenter
the input using for loop.
printf("Enter the score:");
for ( scanf("%d", &score); score < 0 || score > 100; scanf("%d",
&score))
{
printf(Sorry, input must be between 0 100\n);
printf("Enter the score:");
}
if (score >= 90 && score
printf(A\n);
else if (score >= 80 &&
printf(B\n);
else if (score >= 70 &&
printf(C\n);
else if (score >= 60 &&
printf(D\n);
else
printf(F\n);
<= 100)
score < 90)
score < 80)
score < 70)
BS (Sept 2012)
Sentinel-controlled
for loop with
multiple sentinel
values in the range
of < zero or > 100
82
Topic 4
COMBINATIONS OF CONTROL
STRUCTURES
BS (Sept 2012)
83
Possible Combinations
Possible combinations are limitless. Four basic
forms of combinations are as follows:
1. One or more selection structures inside a
repetition structure.
2. One or more repetition structures inside a
selection structure.
3. Nested selection structures one or more
selection structures inside a selection structure
4. Nested repetition structures one or more
repetition structures inside a repetition structure
This course covers the first three forms only and
we have seen examples of nested selection
structures before.
BS (Sept 2012)
84
1. Selection Structures inside a Repetition
Structure
Example: a simple if..else inside a while loop
x=1
Prompt and
get status
Print
Bye
x <= 3?
status == 1?
Print
Adults
T
Print
Kids
x++
BS (Sept 2012)
85
2. Repetition Structures inside a Selection
Structure
Example: a while loop inside a simple if..else
x=1
Prompt and
get status
F
status == 1?
T
Print
Kids
x=1
x <= 3?
T
Print
Adults
x++
BS (Sept 2012)
Print
Bye
86
Exercise
1. Write C programs that calculate and
display the average of 10 floating point
numbers read from user by implementing
while, dowhile and for loops to accomplish
the task.
2. Write programs that keep printing the multiples
of the integers 2, namely 2, 4, 8, 16, 32, 64 and
128. Your loop should terminate at 128.
Use while, dowhile and for loops to
implement this.
Implement appropriate data validation
in the programs
BS (Sept 2012)
87
Topic 5
continue AND break
STATEMENTS
BS (Sept 2012)
88
The break statement
The continue and break statements are
used to modify the program flow when a
selection structure or a repetition structure
is used.
The break statement can be used to
forced exit of selection or terminate
repetition
structure.
When the value of
for (num=1;num<=5;num++)
num is equals to 2,
{
Example:
the program will
if (num==2)
break;
printf("Hello World\n");
BS (Sept 2012)
terminate from the
for loop.
OUTPUT?
89
The break statement
You can use the break statement at any
time.
This can be very useful if you want to stop
running a loop because a condition has
The while
been met other than the loop
endloop will
int i;
run, as long i is
condition.
i = 0;
smaller then twenty.
while ( i < 20 )
{
i++;
if ( i == 10)
break;
}
But, the while loop
must stop (break) if i
equals to ten
BS (Sept 2012)
90
The continue Statement
Can be used to skip the rest of the loop
body statements and continue with the
next repetition of the loop (start from the
top again - the loop variable must still be
for (num=1;num<=5;num++)
incremented).
{
When
if (num==2)
Example:
the value of
num is equal to 2, the
program will skip the
printf statement
and continue with
the for loop.
continue;
/* end_if */
printf(Number %d\n,num);
} /*end_for */
OUTPUT?
BS (Sept 2012)
91
The continue Statement
In a for loop, any modification to the
control variable will be done before the
condition is checked.
In a while and dowhile structures, the
loop condition will be checked as soon as
int i=0;
the continue statement
is encountered to
determine whether the
whileloop
( i <will
20 )be
{
continued
.
In the example
i++;
the printf
continue;
above,
Example:
function is never
called because of the
continue statement.
printf("Nothing to see\n");
BS (Sept 2012)
92
Summary
1. We can get our C programs to make decisions using
Selection Structure including if, ifelse, ?: operator,
ifelse if and switch.
2. Also we can get our programs to repeat (loop) processing
without writing the same statements over and over using
Repetition Structure including while loop, dowhile loop,
for loop
3. All the while, dowhile , and for loops can be
implemented as counter-controlled loop or sentinelcontrolled loop.
When number of iteration is known, use countercontrolled loop
When decision to proceed with iteration depends on
a value or a range of values, use sentinel-controlled
loop
BS (Sept 2012)
93
Summary
4. The expression of the condition in the selection
and repetition structures must be specified using
Relational operators (such as >, >=, <, <=) and
Equality operators (==, !=) and several
conditions may be combined using Logical
operators (&&, ||, and !).
5. You may combine sequence, selection and
repetition structures in a C program
6. You may use the continue and break
statements to modify the program flow when a
selection structure or a repetition structure is
used.
BS (Sept 2012)
94