Module 2-Decision Control Statements in C
Module 2-Decision Control Statements in C
Decision control statements require that the programmer specifies one or more conditions to
be evaluated or tested by the program, along with a statement or statements to be executed if
the condition is determined to be true, and optionally, other statements to be executed if the
condition is determined to be false.
if statement
if...else statement
An if statement can be followed by an optional else statement, which executes when the
A switch statement allows a variable to be tested for equality against a list of values.
if statement
An if statement consists of a Boolean expression followed by one or more statements.
Syntax
if(test expression)
Statements:
If the test expression evaluates to true, then the block of code inside the 'if' statement will be
executed. If the test expression evaluates to false, then the first set of code after the end of the
'if' statement (after the closing curly brace) will be executed. C programming language
assumes any non-zero and non-null values as true and if it is either zero or null, then it is
assumed as false value.
Flow Diagram
Example
#include <stdio.h>
int main ()
int a = 10;
if( a < 20 )
return 0;
When the above code is compiled and executed, it produces the following result −
if...else statement
An if statement can be followed by an optional else statement, which executes when the test
expression is false.
Syntax
if(test expression)
else
If the test expression evaluates to true, then the if block will be executed, otherwise, the else
block will be executed. C programming language assumes any non-zero and non-null values
as true, and if it is either zero or null, then it is assumed as false value.
Flow Diagram
Example:
#include <stdio.h>
int main ()
int a = 100;
if( a < 20 )
else
return 0;
When the above code is compiled and executed, it produces the following result −
value of a is : 100
When using if...else if..else statements, there are few points to keep in mind −
An if can have zero or one else's and it must come after any else if's.
An if can have zero to many else if's and they must come before the else.
Once an else if succeeds, none of the remaining else if's or else's will be tested.
Syntax
if(test expression 1)
else
Flow Diagram:
Example
#include <stdio.h>
int main ()
int a = 100;
if( a == 10 )
printf("Value of a is 10\n" );
else if( a == 20 )
printf("Value of a is 20\n" );
}
else if( a == 30 )
printf("Value of a is 30\n" );
else
return 0;
When the above code is compiled and executed, it produces the following result −
Nested if statements
It is always legal in C programming to nest if-else statements, which means you can use one
if or else if statement inside another if or else if statement(s).
Syntax
if(test expression 2)
{
/* Executes when the test expression 2 is true */
Example
#include <stdio.h>
int main ()
int a = 100;
int b = 200;
if( a == 100 )
if( b == 200 )
return 0;
When the above code is compiled and executed, it produces the following result −
switch statement
A switch statement allows a variable to be tested for equality against a list of values. Switch
statement is a multi-way decision control structure Each value is called a case, and the
variable being switched on is checked for each switch case.
Syntax
switch(expression)
case constant-expression :
statement(s);
break;
case constant-expression :
statement(s);
break;
default :
statement(s);
The expression used in a switch statement must have an integral or enumerated type,
or be of a class type in which the class has a single conversion function to an integral
or enumerated type.
You can have any number of case statements within a switch. Each case is followed
by the value to be compared to and a colon.
The constant-expression for a case must be the same data type as the variable in the
switch, and it must be a constant or a literal.
When the variable being switched on is equal to a case, the statements following that
case will execute until a break statement is reached.
When a break statement is reached, the switch terminates, and the flow of control
jumps to the next line following the switch statement.
If no break appears, the flow of control will fall through to subsequent cases until a
break is reached.
A switch statement can have an optional default case, which must appear at the end of
the switch. The default case can be used for performing a task when none of the cases
is true.
No break is needed in the default case.
Flow Diagram
Example
#include <stdio.h>
int main ()
switch(grade)
case 'A' :
printf("Outstanding !\n" );
break;
case 'B' :
printf("Excellent !\n" );
break;
case 'C' :
printf("Well done\n" );
break;
case 'D' :
printf("You passed\n" );
break;
case 'F' :
break;
default :
printf("Invalid grade\n" );
return 0;
When the above code is compiled and executed, it produces the following result −
Well done
Your grade is B
It is possible to have a switch as a part of the statement sequence of an outer switch. Even if
the case constants of the inner and outer switch contain common values, no conflicts will
arise.
Syntax
switch(ch1)
{
case 'A':
switch(ch2)
case 'A':
break;
case 'B':
break;
case 'B':
Example
#include <stdio.h>
int main ()
int a = 100;
int b = 200;
switch(a)
case 100:
switch(b)
case 200:
printf("This is part of inner switch\n", a );
return 0;
When the above code is compiled and executed, it produces the following result −
Programming languages provide various control structures that allow for more complicated
execution paths.
while loop in C
A while loop in C programming repeatedly executes a target statement as long as a given
condition is true.
Syntax
while(condition) {
statement(s);}
Here, statement(s) may be a single statement or a block of statements. The condition may be
any expression, and true is any nonzero value. The loop iterates while the condition is true.
When the condition becomes false, the program control passes to the line immediately
following the loop.
Flow Diagram
Here, the key point to note is that a while loop might not execute at all. When the condition is
tested and the result is false, the loop body will be skipped and the first statement after the
while loop will be executed.
Example
#include <stdio.h>
int main () {
int a = 10;
while( a < 20 ) {
return 0;
When the above code is compiled and executed, it produces the following result −
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
value of a: 16
value of a: 17
value of a: 18
value of a: 19
for loop in C
A for loop is a repetition control structure that allows you to efficiently write a loop that
needs to execute a specific number of times.
Syntax
statement(s);
The init step is executed first, and only once. This step allows you to declare and
initialize any loop control variables. You are not required to put a statement here, as
long as a semicolon appears.
Next, the condition is evaluated. If it is true, the body of the loop is executed. If it is
false, the body of the loop does not execute and the flow of control jumps to the next
statement just after the 'for' loop.
After the body of the 'for' loop executes, the flow of control jumps back up to the
increment statement. This statement allows you to update any loop control variables.
This statement can be left blank, as long as a semicolon appears after the condition.
The condition is now evaluated again. If it is true, the loop executes and the process
repeats itself (body of loop, then increment step, and then again condition). After the
condition becomes false, the 'for' loop terminates.
Flow Diagram
Example
#include <stdio.h>
int main () {
int a;
/* for loop execution */
return 0;
When the above code is compiled and executed, it produces the following result −
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
value of a: 16
value of a: 17
value of a: 18
value of a: 19
do...while loop in C
Unlike for and while loops, which test the loop condition at the top of the loop, the do...while
loop in C programming checks its condition at the bottom of the loop. A do...while loop is
similar to a while loop, except the fact that it is guaranteed to execute at least one time.
Syntax
do {
statement(s);
} while( condition );
Notice that the conditional expression appears at the end of the loop, so the statement(s) in
the loop executes once before the condition is tested.
If the condition is true, the flow of control jumps back up to do, and the statement(s) in the
loop executes again. This process repeats until the given condition becomes false.
Flow Diagram
Example
#include <stdio.h>
int main () {
int a = 10;
/* do loop execution */
do {
a = a + 1;
}while( a < 20 );
return 0;
When the above code is compiled and executed, it produces the following result −
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
value of a: 16
value of a: 17
value of a: 18
value of a: 19
Nested Loops in C
C programming allows to use one loop inside another loop. The following section shows a
few examples to illustrate the concept.
Syntax :
statement(s);
statement(s);
The syntax for a nested while loop statement in C programming language is as follows −
while(condition) {
while(condition) {
statement(s);
statement(s);
}
The syntax for a nested do...while loop statement in C programming language is as follows −
do {
statement(s);
do {
statement(s);
}while( condition );
}while( condition );
A final note on loop nesting is that you can put any type of loop inside any other type of loop.
For example, a 'for' loop can be inside a 'while' loop or vice versa.
Example
The following program uses a nested for loop to find the prime numbers from 2 to 100 −
#include <stdio.h>
int main () {
int i, j;
return 0;
When the above code is compiled and executed, it produces the following result −
2 is prime
3 is prime
5 is prime
7 is prime
11 is prime
13 is prime
17 is prime
19 is prime
23 is prime
29 is prime
31 is prime
37 is prime
41 is prime
43 is prime
47 is prime
53 is prime
59 is prime
61 is prime
67 is prime
71 is prime
73 is prime
79 is prime
83 is prime
89 is prime
97 is prime
Loop Control Statements
Loop control statements change execution from its normal sequence. When execution leaves
scope, all automatic objects that were created in that scope are destroyed.
break statement in C
The break statement in C programming has the following two usages −
Syntax
break;
Flow Diagram
Example
#include <stdio.h>
int main () {
int a = 10;
while( a < 20 ) {
a++;
break;
return 0;
}
When the above code is compiled and executed, it produces the following result −
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
continue statement in C
The continue statement in C programming works somewhat like the break statement. Instead
of forcing termination, it forces the next iteration of the loop to take place, skipping any code
in between. For the for loop, continue statement causes the conditional test and increment
portions of the loop to execute. For the while and do...while loops, continue statement causes
the program control to pass to the conditional tests.
Syntax
continue;
Flow Diagram
Example
#include <stdio.h>
int main () {
int a = 10;
/* do loop execution */
do {
if( a == 15) {
a = a + 1;
continue;
a++;
} while( a < 20 );
return 0;
When the above code is compiled and executed, it produces the following result −
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 16
value of a: 17
value of a: 18
value of a: 19
goto statement in C
A goto statement in C programming provides an unconditional jump from the 'goto' to a
labeled statement in the same function.
NOTE − Use of goto statement is highly discouraged in any programming language because
it makes difficult to trace the control flow of a program, making the program hard to
understand and hard to modify. Any program that uses a goto can be rewritten to avoid them.
Syntax
goto label;
..
label: statement;
Here label can be any plain text except C keyword and it can be set anywhere in the C
program above or below to goto statement.
Flow Diagram
Example
#include <stdio.h>
int main () {
int a = 10;
/* do loop execution */
LOOP:do {
if( a == 15) {
a = a + 1;
goto LOOP;
}
printf("value of a: %d\n", a);
a++;
}while( a < 20 );
return 0;
When the above code is compiled and executed, it produces the following result −
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 16
value of a: 17
value of a: 18
value of a: 19
A loop becomes an infinite loop if a condition never becomes false. The for loop is
traditionally used for this purpose. Since none of the three expressions that form the 'for' loop
are required, you can make an endless loop by leaving the conditional expression empty.
#include <stdio.h>
int main () {
for( ; ; ) {
return 0;
}
When the conditional expression is absent, it is assumed to be true. You may have an
initialization and increment expression, but C programmers more commonly use the for(;;)
construct to signify an infinite loop.