Sie sind auf Seite 1von 94

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

Das könnte Ihnen auch gefallen