LESSON 3
Conditional/Unconditional
Statements
Loops
Repetition Structure
Learning Objectives:
At
the end of the chapter, the students are expected to:
Understand the importance of relational, equality and
logical operators used in the flow of control
Explain the different repetition structure.
Discuss the conditional statements and the unconditional
transfer statements.
FLOW OF CONTROL
Statements in a program are normally executed one after another.
This is called sequential flow of control. Often it is desirable
to alter the sequential flow of control to provide for a choice
of action, or repetition of action. By means of if, if-else, and
switch statement, a selection among alternative actions are made.
By means of while, for and do statements, interactive actions can
be taken.
The relational, equality, and logical operators are heavily
used in flow of control construct.
1. Operators
RELATIONAL, EQUALITY, AND LOGICAL OPERATORS
The following table contains the operators that are most often
used to affect flow of control:
1.1 Relational Operators
<
less than
>
greater than
<=
less than or equal to
>=
greater than or equal to
1.2 Equality Operators
= =
equal
!=
not equal
1.3 Logical Operators
!
(unary) negation
&&
logical and
||
logical or
Relational,
precedence
Equality,
and
and
Logical
associativity
that
operators
determine
have
rules
precisely
of
how
expressions involving these operators are evaluated.
Operators
Associativity
+ (unary) (unary) ++ -- !
right to left
left to right
<
<=
= =
!=
left to right
>
>=
left to right
left to right
&&
left to right
||
left to right
+=
-=
*=
/=
etc
right to left
The ! operator is unary. All other relational, equality, and
logical operators are binary. They operate on expressions and
yield either the int value 0 or the int value of 1. The reason
for this is that in C language false is represented by the value
zero and true is represented by any nonzero value. The value for
false can be any zero value; or can be a or 0.0 or the null
character \0 or the NULL pointer value. The value true can be
any nonzero value.
Example
a < b is either true or false. In C, the expression will yield
the int value 1 if it is true and the int value 0 if it is false.
1.1.1 Relational Operators and Expressions
The relational operators
<
>
<=
>=
are all binary. Each take two expressions as operands and yield
either the int value 0 or the int value 1.
Relational expression expr < expr
Expr > expr
expr <= expr
expr >= expr
Examples
A < 3;
a > b
-1.3 >= (2.0 * X + 3.3)
1.2.1 Equality Operators and Expressions
The equality operators = = and != are binary operators acting on
expressions. They yield either int value 0 or the int value 1.
The usual arithmetic conversions are applied to expressions that
are the operands of the equality operators.
equality expression:
expr == expr
expr != expr
Examples
C == A;
K != .2;
x + y == 3* z- 7;
1.3.1 Logical Operators and Expressions
The logical operator ! is unary, and the logical operators && and
||
are
binary.
All
of
these
operators,
when
applied
to
expressions, yield either the int value 0 or the int value 1.
Logical negation can be applied to an expression of arithmetic or
pointer type. If an expression has value zero, then its negation
will yield the int value 0.
logical_negation_expression = !expr;
Examples
!a;
!(x + 6.88);
!(a>b) ;
The binary logical operators && and || also act on expressions
and yield either the int value 0 or the int value 1. The syntax
for a logical expression is given by:
Logical_expression
logical_negation_expression;
logical_or_expression;
logical_and _expression;
logical_or_expression
expr || expr;
logical_and_expression
expr && expr;
Examples
a && b;
a || b;
!(a>b) &&x
2. The COMPOUND STATEMENT
A compound statement is a series of declarations and statements
surrounded by braces.
Syntax:
compound_statement { { declaration } { statement } }
The chief use of the compound statement is to group statements
into an executable unit. When declarations come at the beginning
of a compound statement, the compound statement is called block.
In C, wherever it is syntactically correct to place statement, it
is also syntactically correct to place a compound statement. A
compound statement is itself a statement. An important use of the
compound statement is to achieve the desired flow of control in
if, if-else, while, for, and switch statements.
Example
#include <stdio.h>
#include <conio.h>
void main( )
{
int a=1, b, c;
{ b=2;
c=3;
}
getch();}
3. THE CONDITIONAL STATEMENTS
3.1 The if statement
The general form of an if statement is:
if (expr)
statement;
Action:
If expr is nonzero (true), then statement is executed; otherwise
statement is skipped control passes to the next statement.
Example
if (grade >= 90)
printf(Congratulations !!!);
printf (Your grade is %d\n,grade);
Usually,
the
expression
in
an
if
statement
is
relational,
logical, equality expression an expression from any domain is
permissible.
Where appropriate, compound statement should be used to group a
series of statements under the control of a singe if expression.
The
code
can
be
written
to
be
more
efficient
and
more
understandable by using a single if statement with a compound
statement for its body.
Example
if ( a < b)
{
ave=a;
printf(a is smaller than b\n);
}
3.2 The if-else statement
The general form is:
if (expr)
statement1
else
statement2
If expr is nonzero, then statement1 is executed and statement2 is
skipped;
if
expr
is
zero,
then
statement1
is
skipped
and
statement2 is executed. In both cases control then passes to the
next statement.
Example
if (a>b)
{ b++;
printf( Value is smaller %d\n, b);
}
else
printf(You got a bigger value %d\n, a);
An if-else statement can be used as the statement part of another
if statement, this is what you call nested if.
Example
if(x == 50)
if(y >= 120)
{ sum = x + y;
printf(the sum of x and y is %d, sum);
}
else
{ diff = x y;
printf(the difference between x and y is %d, diff);
}
else
printf(Next time);
3.3 THE switch STATEMENT
The switch is a multiway conditional statement generalizing the
if-else statement.
Syntax:
switch(expression)
case constant expression: statement; break;
case constant expression:
statement:
break:
case constant expression:
statement;
break;
[default
statement;]
}
Action:
The switch expression maybe any expression which evaluates
to an int, conditional, char or double value. The case list lust
consists of constants whose type matches that of the
switch
expression. Note that the case list cannot include variables or
expressions. After the statements for a case, a keyword break
maybe used. The break keyword means that at the point, execution
should
jump
to
the
end
of
the
switch
statement.
The
switch
statement is terminated by curly bracket ( } ). Note the optional
switch constant default. This switch constant can be used to
specify
an
action
to
be
taken
if
the
value
of
the
expression does not match any of the listed values.
Example
Assign a letter grade based on the number value 0-10
switch (QUIZ) {
case
10:
case
9:
printf(A);
break;
case
8:
printf(B);
break;
case
7:
printf(C):
break;
switch
case
case
case
case
case
case
case
default:
switch
6:
printf(D);
break;
5:
4:
3:
2:
1:
0:
printf(F); break;
printf(Input out of Range);
end of
Sample Program:
This program will prompt the user to input an
integer number which will determine the corresponding month in
words.
Sample Run:
Please enter a number:
November
11
#include <stdio.h>
#include <conio.h>
void main()
{ clrscr();
int number;
printf(Please enter a number: );
scanf(%d,&number);
switch(number) {
case 1: printf(January\n);
break;
case 2: printf(February\n);
break;
case 3: printf(March\n);
break;
case 4: printf(April\n);
break;
case 5: printf(May\n);
break;
case 6: printf(June\n);
break;
case 7: printf(July\n);
break;
case 8: printf(August\n);
break;
case 9: printf(September\n);
break;
case 10: printf(October\n);
break;
case 11: printf(November\n);
break;
case 12: printf(December\n);
break;
default: printf(Invalid entry!);
getch();
}
4. Unconditional Transfer Statement
THE break AND continue STATEMENTS
Two special statements:
break(); and continue;
4.1 The break statement
The break statement has two uses:
1. To terminate a CASE in the switch statement
2. To force termination of a loop, bypassing inside the loop, the
loop is immediately terminated and program control resumes at the
next statement following the loop.
Example
while(1) {
scanf(%lf,&x);
if(x < 0.0)
break;
printf(%f\n,sqrt(x));}
4.2 The continue statement
The continue statement causes the current iteration of the
loop to stop and causes the next iteration of the loop to begin
immediately. The continue statement may only occur inside for,
while, and do loops.
Example
do{
scanf(%d,&num);
if (x < 0 )
continue;
printf(%d,x);
} while (x != 100);
5. LOOPS
Repetition of action is one reason we rely on computers.
When there are large amount of data, it is very convenient to
have
control
mechanism
that
repeatedly
execute
specific
statements. In C, the while, for, and, do statements provide for
repetitive actions.
5.1 THE while STATEMENT
Syntax:
while(expr)
statement;
next statement;
Action:
First the expr is evaluated. If it is nonzero(true), then
statement is executed and control is passed back at the beginning
of the while loop. The effect of this is that the body of the
while loop, namely statement is executed repeatedly until expr is
zero (false). At that point control passes the next statement.
It is possible to inadvertently specify an expression that
never becomes zero, and unless other means of escaping the while
loop are introduced, the program is stuck in an infinite loop.
Care should be taken to avoid this difficulty.
Example
While(number != 0)
{ scanf (%d,&number);
sum += number;
}
printf( the sum of all numbers is %d,sum);
5.2 THE for STATEMENT
Syntax:
for(initialization; condition; increment)
statement;
Action:
The for statement allows many variants, but there are three main
parts;
1. initialization is usually an assignment statement that is
used to set the loop control variable.
2. condition is a relational expression that determines when
the loop will exit.
3. increment defines how the loop control variable will change
each time the loop is repeated.
These three major sections must be separated by semicolon. The
for loop continues to execute as long as the condition is TRUE.
Once the condition becomes FALSE, program execution resumes on
the statement following the for loop.
Example
for(x=100;x!=65;x+=5)
{
z=sqrt(x);
printf(The square root of %d is %f,x,z);
}
An important point above for loop is that conditional test is
always performed at the top of the loop. This means that the code
inside the loop may not be executed at all if the condition is
FALSE to begin with.
5.2.1 for LOOP VARIATIONS
5.2.1 One of the most common variations is achieved by using the
COMMA operator to allow 2 or more variables to control the loop.
Example:
for(x=0,y=0; x+y < 10; x++)
{
scanf(%d, &y);
sum = x + y;
}
printf(The sum of x and y is %d, sum);
5.2.1.1 Nested for loop
Syntax:
for(initialization1; condition1; increment1)
{
for(initialization2;condition2;increment2)
{
statement;
statement;
}
}
5.3 THE do STATEMENT
Syntax:
do {
Statement;
} while(expr);
next statement;
Action:
First statement is executed and expr is evaluated. If the value
of
expr
is
beginning
of
nonzero(TRUE),
the
do
then
statement
control
and
then
passes
the
back
process
to
the
repeats
itself. When expr is zero (FALSE), then control passes to next
statement.
Example
do {
scanf(%d,&num);
sum += num;
}
while (num > 100);
printf(Then sum is %d, sum);
Sample program:
This program prompts the user to enter series of integer numbers
which will be terminated when 0 is entered and will display the
sum of all the integer values entered.
#include<stdio.h>
#include<conio.h>
void main()
{ int a, sum;
clrscr();
printf(Enter series of integers, until 0\n);
printf(Is entered:\n\n);
sum=0;
do {
printf(enter the number: );
scanf(%d, &a);
sum=sum + a;
} while (a!=0);
printf(\nThe sum is %d,sum);
getch();
}
Sample run:
Enter series of integers, until 0 is entered:
Enter the number: 7
Enter the number: 3
Enter the number: 9
Enter the number: 0
The sum is 19
EXERCISE NO. 3
NAME ______________________________
YEAR AND SECTION __________________
DATE _______________
SCORE ______________
1. Give the syntax and explain the following C
statements/functions/symbols:
if-else
_________________________________________________________________
_________________________________________________________________
_______________________________________________
switch
_________________________________________________________________
_________________________________________________________________
_______________________________________________
break
_________________________________________________________________
_________________________________________________________________
_______________________________________________
continue
_________________________________________________________________
_________________________________________________________________
_______________________________________________
2.
A. Give the syntax and explain for loop:
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________
B. Give the syntax and explain the while loop:
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________
C. Give the syntax and explain the do loop:
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________
SAMPLE EXERCISES NO. 3
Answer the following questions:
1. What is a compound statement?
2. True or false. The else statement
in the if.. else
statement
is required.
3. True or false. All conditional expressions should be enclosed
in parenthesis.
4. Correct the syntax error:
if x>25.0{
y=x
else
y=z;; }
5. What value is assigned to num using if statement when var1 is
80?
if (var1 > 35)
num=20.0;
else
if (var1>50
num=40.0;
else
if(var1>80)
num = 60.0;
6. What will be the output of the following program segment?
(a)
x=7; y=8;
if(x<=y)
if(x==y)
x++;
else
y++;
printf(%d%d\,x,y);
(b)
k=3; j=5;
if (k<4)
if (j>2)
if (k-j=3)
k=k+J
else
k=k-j;
printf(%d\n,k);
7. What output line(s) are displayed by the statements that
follow when mark is T?
When mark is A? When mark is B? When mark is C?
points =0;
switch (mark) {
case A:
points =4;
exit();
case B:
points =3;
break;
case C:
points =2;
continue;
case E:
case I:
case W:
points =0;
}
if (points>0)
printf (Passed, points earned =%d\n, points);
else
printf (Failed, no points earned\n);
(b)
x=7;y=8
if (x<=y)
{if(x=y)
x++;}
8. Explain the difference between the statements on the left and
the statements on the right. For each group of statements, give
the final value of x if the initial value of x is 1
if (x>0)
x=x+1;
else if (x>=1)
x=x+2;
if (x>0)
x=x+1;
if (x>=)
x=x+2;
9. Differentiate the use of break and continue.
10. What is the use of else in a switch statement? Is this
optional or required?
11.
Write
program
segment
for
the
following
using
(a)
if
statement and (b) switch ..case statement: If the value of the
integer variable ME is less than 2 and greater than 0, assign the
value of ME to integer variable YOU. If the value of ME is 5,
multiply
variables
THEY
and
THEM
and
assign
the
results
to
variable YOU. If the value of ME is 2, increment YOU by 1. If the
value of ME is 7, decrement YOU by 4. Any other value of ME would
display the value of YOU.
___________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_____________________________
12. Write a program segment for the following using case. If the
value of the character variable CHAR_VAR is A or a, add 1 to
integer variable JETT. If the value of CHAR_VAR is B or b,
subtract Y from Z giving the value to JETT. If the value of
CHAR_VAR is C or c, subtract Z from Y giving the value to
JETT. Any other value would result to an error message INVALID
ENTRY.
___________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
___________________________________
___________________________________________________________
13. The following program is partially complete:
a=5;
x:
c++;
if(c==1)
{ a=a*a;
goto x;}
else
if (c==2)
{ a = a + a;
goto x;}
else
Complete the program to produce the following output:
The value of a is 25.
The value of a is 10.
The value of a is 0.
14. What is the output of the following program segments:
(a)
for(i=1; i<=5;
printf(%2d, i);
i++)
(b)
ctr = 0;
do
{ ctr = ctr + 1;
if ((ctr % 2) != 0)
continue
else
printf(%2d, ctr);
}while ( ctr !=10 );
(c)
x = 10; y = 10;
while (x != y) {
printf(%5d %5d\n,x,y);
x--; y ++; }
15. PROGRAMMING. Write a program for the following problem.
PROGRAMMING EXERCISE 3-1
Write a program that will determine whether a person is a child,
a teen-ager or an adult using age as input. Assume that a child
is from 0 to 12 years old, a teen-ager is from 13 to 19 and adult
is from 20 years old and above. Return C from child, T for
teen-ager and A for adult.
PROGRAMMING EXERCISE 3-2
Pizza parlors offers different pizza sizes in terms of diameters.
For example, Dominos has three options: 10 inches, 12 inches, 14
inches diameter. Extravaganza pizza costing 178 pesos, 259 pesos
and 314 pesos respectively. Write a program that will input the
diameter of the pizza, and its price. Determine the (a) area of
the pizza and (b) the price by the divided area. Find out which
of the three options above (for Dominos) is the least expensive
in terms of price per square inch of pizza. Note that the area of
a circle is equivalent to PI* (diameter / 2)2.
PROGRAMMING EXERCISE 3-3
Write a program that would input 3 integers and would output them
in descending order.
PROGRAMMING EXERCISE 3-4
An applicant will be accepted to the Jedi Knight Academy if he is
at least 200 cm tall; age is between 21 and 25 inclusive, and a
citizen
of
the
Planet
Endor.
However,
if
the
applicant
is
recommendee of Jedi Master Obi Wan, he is accepted automatically
regardless of his height, age and citizenship. Write a program
that would input the applicants height, age, citizenship code
(1- citizen 0-not citizen) and recommendees code (1- recommended
0- not recommended) and then output whether the applicant is
accepted or rejected.
PROGRAMMING EXERCISE 3-5
Assume a range of integer values starting from N1 and ending at
N2. Assume also an integer say M. Write a program that will print
and display all the numbers from N1 to N2 which are divisible by
M. You are also required display the count of such numbers. For
example, if N1 = 4, N2 = 12 and M = 4, the output will be: 4, 8,
12. The value 3 will also be displayed indicating that there are
3 numbers which are divisible by 4.
PROGRAMMING EXERCISE 3-6
A Video Rental gives a fine to their customers who return the
CDs of tape later than the due date. Input the number of days
late and display the fine.
Days
< = 2
<= 4
<= 5
>= 7
Fine
10.00
15.00
20.00
Equal to the amount of rent
(CD = 50.00 / VHS = 35.00 )
PROGRAMMING EXERCISE 3-7
Write a program that will input non-negative integer and would
display the prime factors of the given integer.
Example:
Enter non-negative number: 15
Prime factors are: 1 3 5
CASE STUDY 1
Write a program that accepts a positive integer and gives its
prime factorization, that expresses the integer as a product of
primes.
CASE STUDY 2
N factorial can be defined as the product of all integers from 1
to N and it is denoted by the symbol N!. 0! (zero factorial) is
defined as 1. Write a program that will input N and would display
N factorial. (Determine first if N is a nonnegative integer).
CASE STUDY 3
Write a program that will input non-negative integer and call a
function DWARF to determine if the integer is DWARF or NOT. An
integer is said to be DWARF if the sum of its factors is greater
than the half of the number.
Example:
Input number: 6
Factors are: 1 2 3
Sum of its factor: 1 +2+3 =6
Half of the number : 6 /2 = 3
6 is DWARF
Input number: 9
Factors are 1,3
Sum of its factors : 1 + 3 = 4
Half of number : 9 / 2 = 4.5
9 is NOT DWARF