0% found this document useful (0 votes)
13 views16 pages

Control Statements (Chapter 5)

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views16 pages

Control Statements (Chapter 5)

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

Chapter 5 Page 1 Nawaraj Paudel

Chapter 5
Control Statements
Introduction
A control statement is a statement that causes program statements to execute in a manner that
doesn’t relate to the order it appears in the source code. These statements help to jump from one
part of the program to another. The control transfer may be conditional or unconditional. C
supports three types of control statements namely selection, repetition and jump statements.

Selection Statements
These are also known as branching, decision making, or conditional statements. These
statements execute program statements depending upon a given condition. C supports two
selection statements: if and switch. There are different forms of if statements: if only, if-else-if,
and if-else-if ladder.

The if only statement


Allows your program to execute a single statement, or a block of statements enclosed between
braces, if a given condition is true. Its general form (syntax) is:
if (expression)
statement 1
OR
if (expression)
{
statement 1
statement 2

statement n
}
If expression evaluates to true (any non-zero value), statement or the block of statements
enclosed between braces is executed. If expression evaluates to false (0), these are not executed.
In either case, execution then passes to whatever code follows the if statement. Expression can
be any valid C expression and statement can be simple or compound or even another control
statement. For example,

Control Statements
Chapter 5 Page 2 Nawaraj Paudel

if(amount >= 1000)


discount = amount * 0.05;

Fig: Flow chart of if only statement

The if else statement


When there is a need of executing a statement or a block of statements enclosed between braces
if a condition is true and another statement or a block of statements enclosed between braces to
be executed otherwise, then we use if–else statements. Its syntax is:
if (expression)
statement 1
else
statement 2

Control Statements
Chapter 5 Page 3 Nawaraj Paudel

OR
if (expression)
{
statement 1
statement 2

statement n
}
else
{
statement 1
statement 2

statement n
}
If expression evaluates to true (any non-zero value), statement or the block of statements in the
if body is executed. If expression evaluates to false (0), statement or the block of statements in
the else body is executed. For example,
if(amount >= 1000)
discount = amount * 0.05;
else
discount = amount * 0.03;
Using if-else, you can specify an action to be performed both when the condition is true and
when it is false.
The if else statement resembles with the conditional operator (?:). Conditional operator is a
ternary operator (demands 3 operands), and is used in certain situations, replacing if-else
statement. Its general form is:
exp1 ? exp2 : exp3;
If exp1 is true, exp2 is executed and whole expression is assigned with value of exp2. If the exp1
is false, then exp2 is executed, and whole expression is assigned with exp2 value. For example,
c = a > b ? a+b : a-b;

Control Statements
Chapter 5 Page 4 Nawaraj Paudel

is equivalent to
if(a>b)
c=a+b;
else
c=a-b;

Fig: Flow-chart of if else statement

The if else if ladder statement


If we have the situation where there are different actions that are executed depending upon
different conditions with same type of instance then if-else-if ladder is useful. Its syntax is:
if (expression)
statement 1
else if
statement 2
………….

Control Statements
Chapter 5 Page 5 Nawaraj Paudel

else
statement n
OR
if (expression)
{
statement 1
statement 2

statement n
}
else if
{
statement 1
statement 2

statement n
}
…………………..
else
{
statement 1
statement 2

statement n
}
The conditions are evaluated from the top downward. As soon as a true condition is found, the
statement associated with it is executed and the rest of the ladder is bypassed. If none of the
conditions are true, the final else is executed. If the final else is not present, no actions take place
if all other conditions are false. For example,
if(amount >= 5000)
discount = amount * 0.1;

Control Statements
Chapter 5 Page 6 Nawaraj Paudel

else if (amount >= 4000)


discount = amount * 0.07;
else if (amount >= 3000)
discount = amount * 0.05;
else
discount = amount * 0.03;

Expre False
ssion1

True Expre False


ssion2

Body of if

True Expre False


ssion n
Body of else if

True

Body of else if Body of else

Statement
following else
body

Fig: Flow-chart of if else if ladder

Control Statements
Chapter 5 Page 7 Nawaraj Paudel

The switch statement


It is a multiple branch selection statement, which successively tests the value of an expression
against a list of integer or character constants. When a match is found, the statement(s)
associated with that constant are executed. Its syntax is:
switch (expression)
{
case constant1:
statement(s)
break;
case constant2:
statement(s)
break;
...
case constantn:
statement(s)
break;
default:
statement(s)
}
The expression must evaluate to an integer type. The value of expression is tested against the
constants present in the case labels. When a match is found, the statement sequence, if present,
associated with that case is executed until the break statement or the end of the switch statement
is reached. The statement following default is executed if no matches are found. The default is
optional, and if it is not present, no action takes place if all matches fail. For example,
char ch;
printf("Enter a character:");
scanf("%c", &ch); //ch = getchar();
switch(ch)
{
case 'a':
case 'A':
printf("EXCELLENT");
break;
case 'b':

Control Statements
Chapter 5 Page 8 Nawaraj Paudel

case 'B':
printf("VERY GOOD");
break;
case 'c':
case 'C':
printf("GOOD");
break;
case 'd':
case 'D':
printf("SATISFACTORY");
break;
case 'e':
case 'E':
printf("FAIL");
break;
default:
printf("Wrong entry!");
}
Things to remember with switch:
 A switch statement can only be used to test for equality of an expression. We cannot check
for other comparisons like <, <=, >, >=
 switch expression must evaluate to an integral value
 No two case constants can be same
 Omission of a break statement causes execution to go to next case label
 The default label is executed when no case constants matches the expression value

Control Statements
Chapter 5 Page 9 Nawaraj Paudel

Expression True
result equals First case
first-case body
constant

False

Expression True
result equals Second
second-case case body
constant

False

Expression True
result equals nth case
nth-case body
constant

False Default
body

Statement
following
switch

Fig: Flow-chart of switch statement

Control Statements
Chapter 5 Page 10 Nawaraj Paudel

Repetition Statements
Repetition is the process of executing a statement or a block of statements enclosed between
braces more than one time as long as some condition remains true. Repetition in C can be
implemented using three control statements: for, while, and do – while statements. These
statements are also known as iteration or looping statements.

The for statement


When we have the fixed number of iterations known then we use for loop (normally, while loop
is also possible). Its basic syntax is:
for(expr1; expr2; expr3)
statement1
OR
for(expr1; expr2; expr3)
{
statement 1
statement 2

statement n
}
First before loop starts, the initialization (expr1) is executed that initializes the variable or
variables in the loop. Second the condition (expr2) is evaluated, if it is true, the statement (s) in
the body of for loop will be executed. Finally, the increment/decrement (expr3) will be
executed, and the condition (expr2) will be evaluated, this continues until the condition (expr2) is
false, at which point control passes to next statement following for loop. For example,
int i, s = 0;
for(i = 0; i <= 10; i++)
s = s + i;
printf("Sum = %d", s);

Control Statements
Chapter 5 Page 11 Nawaraj Paudel

exp1

exp2 False
?

True

Body of for Statement following


for body

exp3

Fig: Flow-chart of for statement


We can use comma operator for multiple initializations and multiple processing of loop control
variables in for statement. For example
for (sum = 0, i = 1; i <= n; i++)
sum += i;
You can omit, any of the three expression of the for statement. However, semicolons must be
present. If your remove all three expressions like for(; ;), it becomes infinite loop. You can also
omit first expression and initialize it before the loop as follows.
int digit = 0;
for ( ; digit <= 9 ;digit++ )
printf("%d\n", digit);

Control Statements
Chapter 5 Page 12 Nawaraj Paudel

The while statement


When we do not know the number of iterations in advance then we use while loop (normally, for
loop is also possible). Its basic syntax is:
while(expression)
statement 1
OR
while(expression)
{
statement 1
statement 2

statement n
}
Here while body is executed as long as the expression evaluates to true. First expression is
evaluated. If expression is nonzero (true), then body is executed and control is passed back to
the beginning of the while statement, otherwise control passes to next statement following the
while statement. The statement inside the while loop must include some feature that eventually
alters the value of the expression, thus providing a stopping condition for the loop. For example,
int i = 1, s = 0;
while (i <= 10)
{
s = s + i;
i++;
}
printf("Sum = %d", s);

Control Statements
Chapter 5 Page 13 Nawaraj Paudel

False
expression
?

True

Statement following
Body of while
while body

Fig: Flow-chart of while statement

The do-while statement


Similar to the while statement but condition is tested after the body of the loop is performed
Its basic syntax is:
do
statement1
while(expression);

OR
do
{
statement 1
statement 2

statement n
} while(expression);
First body of do-while is executed, and expression is evaluated. If the value of expression is
nonzero (true), then control passes back to the beginning of the do statement and process repeats
itself. When expression is zero (false), control passes to next statement following the do-while
statement. For example,

Control Statements
Chapter 5 Page 14 Nawaraj Paudel

int i = 1, s = 0;
do
{
s = s + i;
i++;
}while(i <= 10);
printf("Sum = %d", s);
Note that a semicolon is present after the closing parenthesis of the expression. Also note that
loop body will always be executed at least once, since the test for repetition does not occur until
the end of the first pass through the loop. The do-while is most appropriate when the body
associated with the loop must be executed at least once.

Body of do while

False
expression
?

Statement following
True do-while body

Fig: Flow-chart of do-while statement

Comparison of three loops


 Because of the features that are built into the for statement, it is particularly well suited for
the situations in which the number of passes is known in advance.
 The while loop is used when the number of passes is not known in advance.
 Use do-while loop when you want the loop body to execute at least once for the first time
regardless of the outcome of the condition.
 for and while are called entry-controlled loops and do-while is called exit-controlled loop.

Control Statements
Chapter 5 Page 15 Nawaraj Paudel

Nested loops
Like selection statements, a loop can be nested within another. The inner and outer loops need
not be same. It is essential, however, that one loop be completely embedded within the other—
there can be no overlap. When one loop is nested inside another loop, the inner loop is first
terminated and again restarted when the first loop starts for the next incremented value. The
outer loop is terminated last. For example,
for(i=0;i<10;i++)
{
printf(“Hi”)
for(j=0;j<5;j++)
printf(“Hello”);
}

Nested Control Statements


Nested control statements can also involve both loops and selection statements. Thus, a loop can
be nested within a selection statement, and a selection statement can be nested within a loop.
Moreover, we can nest any control flow statement (selection and looping statement) within
another. For example, the code fragment below prints natural numbers those are either divisible
by 3 or divisible by 5 up to the number n.
for (i = 1; i <= n; i++)
if (i%3==0 || i%5 == 0)
printf("%d\n",i);

Jump Statements
For the transfer of control from one part to another, C also supports various jump statements.
These are break, continue, goto, and return (discussed later).

The break statement


The use of break statement causes the immediate termination of a loop (for, while, or do-while)
and switch from the point of break statement. It then passage program control to the statement
following the loop or switch. In case of nested loops if break statement is in inner loop only the
inner loop is terminated. For example,
for( int i=1; i<= 10; i++ )
{

Control Statements
Chapter 5 Page 16 Nawaraj Paudel

if( i == 5 )
break;
printf(" i=%d”, i );
}
printf("oho char pachhi khai ta”);

The continue statement


Use of continue statement skips the remaining statements in the body of a loop and proceeds
with the next iteration of the loop. In case of while and do-while loops, test expression is
evaluated immediately after the continue statement is executed and in case of for loop,
increment/decrement expression is executed and then the test expression is evaluated. For
example,
for(i=0;i<10;i++)
{
if(i>5&&i<8)
continue;
printf("%d\n",i);
}

The goto statement


The goto statement is used to alter the normal sequence of program execution by transferring
control to some other part of the program. In its general form, the goto statement is written as
goto label;
Here, label is an identifier that is used to label the target statement to which control will be
transferred. It is considered a harmful construct because it causes an unconditional jump to a
labeled statement. For example,
int num;
here: // this is label for goto
printf("\nEnter a positive number ");
scanf("%d",&num);
if(num < 0)
goto here; //this statement transfers the control to label here
printf("\nNumber = %d",num);

Control Statements

You might also like