0% found this document useful (0 votes)
13 views

Chapter 3 (Control Statements)

Uploaded by

rahul015january
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 views

Chapter 3 (Control Statements)

Uploaded by

rahul015january
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/ 28

Chapter 3

Control Statements
Introduction

There come situations in real life when we need to make some decisions and
based on these decisions, we decide what should we do next. Similar situations
arise in programming also where we need to make some decisions and based on
these decisions we will execute the next block of code. For example, if a program
checks a file for the number of times a certain word appears, it should be able to
give the correct count no matter what file and word are given to it. We need to be
able to alter the order in which a program's statements are executed, the control
flow structure.

Control structures are portions of program code that contain statements within
them and, depending on the circumstances, execute these statements in a certain
way. There are typically two kinds: conditionals and loops.

In this chapter, we will learn the control statements in detail.

3.1 Control Statements:


Control statements are the statements which alter the flow of execution and
provide better control to the programmer on the flow of execution. In C++
control statements are categorized into selection or Decision control statements,
iteration or loop control statements and jump control statements.
3.2 Selection or Decision Control Statements:
Decision-making statements in programming languages decide the direction of
the flow of program execution. Decision-making statements available in C or
C++ are:
i. if statement
ii. if..else statements
iii. nested if statements
iv. if-else-if ladder
v. switch statements
i) if statement in C/C++
if statement is the most simple decision-making statement. It is used to decide
whether a certain statement or block of statements will be executed or not i.e if a
certain condition is true then a block of statement is executed otherwise not.
Syntax:

if(condition)
{
// Statements to execute if
// condition is true
}
Here, the condition after evaluation will be either true or false. C if statement
accepts boolean values – if the value is true then it will execute the block of
statements below it otherwise not. If we do not provide the curly braces ‘{‘ and
‘}’ after if(condition) then by default if statement will consider the first
immediately below statement to be inside its block.
Example:

if(condition)
statement1;
statement2;
// Here if the condition is true, if block
// will consider only statement1 to be inside
// its block.
Flowchart
// C program to illustrate If statement
#include <iostream.h>
Using namespace
int main()
{
int i = 10;

if (i > 15)
{
cout<<"10 is less than 15";
}

Cout<<"I am Not in if";


}

Output:
I am Not in if
As the condition present in the if statement is false. So, the block below the if
statement is not executed.
ii) if-else in C/C++
The if statement alone tells us that if a condition is true it will execute a block of
statements and if the condition is false it won’t. But what if we want to do
something else if the condition is false. Here comes the C else statement. We can
use the else statement with if statement to execute a block of code when the
condition is false.
Syntax:

if (condition)
{
// Executes this block if
// condition is true
}
else
{
// Executes this block if
// condition is false
}
Flowchart:
Example:
// C++ program to illustrate if-else statement
#include<iostream>
using namespace std;

int main()
{
int i = 20;

if (i < 15)
cout<<"i is smaller than 15";
else
cout<<"i is greater than 15";

return 0;
}

Output:
i is greater than 15

The block of code following the else statement is executed as the condition
present in the if statement is false.

iii) nested-if in C/C++


A nested if in C is an if statement that is the target of another if statement. Nested
if statements mean an if statement inside another if statement. Yes, both C and
C++ allow us to nested if statements within if statements, i.e, we can place an if
statement inside another if statement.
Syntax:

if (condition1)
{
// Executes when condition1 is true
if (condition2)
{
// Executes when condition2 is true
}
}
Flowchart

// C++ program to illustrate nested-if statement


#include <iostream>
using namespace std;

int main()
{
int i = 10;

if (i == 10)
{
// First if statement
if (i < 15)
cout<<"i is smaller than 15\n";

// Nested - if statement
// Will only be executed if statement above
// is true
if (i < 12)
cout<<"i is smaller than 12 too\n";
else
cout<<"i is greater than 15";
}

return 0;
}
Output:
i is smaller than 15
i is smaller than 12 too

iv) if-else-if ladder in C/C++


Here, a user can decide among multiple options. The C if statements are executed
from the top down. As soon as one of the conditions controlling the if is true, the
statement associated with that if is executed, and the rest of the C else-if ladder is
bypassed. If none of the conditions are true, then the final else statement will be
executed.
Syntax:

if (condition)
statement;
else if (condition)
statement;
.
.
else
statement;
Example:
// C++ program to illustrate if-else-if ladder
#include<iostream>
using namespace std;

int main()
{
int i = 20;

if (i == 10)
cout<<"i is 10";
else if (i == 15)
cout<<"i is 15";
else if (i == 20)
cout<<"i is 20";
else
cout<<"i is not present";
}

Output:
i is 20

v) Switch Statement in C/C++


Switch case statements are a substitute for long if statements that compare a
variable to several integral values
• The switch statement is a multiway branch statement. It provides an easy way
to dispatch execution to different parts of code based on the value of the
expression.
• Switch is a control statement that allows a value to change control of
execution.
Syntax:
switch (n)
{
case 1: // code to be executed if n = 1;
break;
case 2: // code to be executed if n = 2;
break;
default: // code to be executed if n doesn't match any cases
}
Important Points about Switch Case Statements:

1. The expression provided in the switch should result in a constant


value otherwise it would not be valid.
Valid expressions for switch:
// Constant expressions allowed
switch(1+2+23)
switch(1*2+3%4)

// Variable expression are allowed provided


// they are assigned with fixed values
switch(a*b+c*d)
switch(a+b+c)
2. Duplicate case values are not allowed.
3. The default statement is optional. Even if the switch case statement do not have
a default statement,
it would run without any problem.
4. The break statement is used inside the switch to terminate a statement
sequence. When a break statement is reached, the switch terminates, and the flow
of control jumps to the next line following the switch statement.
5. The break statement is optional. If omitted, execution will continue on into the
next case. The flow of control will fall through to subsequent cases until a break
is reached.
6. Nesting of switch statements are allowed, which means you can have switch
statements inside another switch. However nested switch statements should be
avoided as it makes program more complex and less readable.
7. Switch statements are limited to integer values only in the check condition.

Flowchart:
// Following is a simple C program
// to demonstrate syntax of switch.
#include <stdio.h>
int main()
{
int x = 2;
switch (x)
{
case 1: printf("Choice is 1");
break;
case 2: printf("Choice is 2");
break;
case 3: printf("Choice is 3");
break;
default: printf("Choice other than 1, 2 and 3");
break;
}
return 0;
}

Output:
Choice is 2

3.3 Jump Statements


These statements are used in C or C++ for the unconditional flow of control
throughout the functions in a program. They support four types of jump
statements:

C/C++ break
This loop control statement is used to terminate the loop. As soon as the break
statement is encountered from within a loop, the loop iterations stop there, and
control returns from the loop immediately to the first statement after the loop.
Basically, break statements are used in situations when we are not sure about the
actual number of iterations for the loop or we want to terminate the loop based on
some condition.
// CPP program to illustrate
// Linear Search
#include <iostream>
using namespace std;

void findElement(int arr[], int size, int key)


{
// loop to traverse array and search for key
for (int i = 0; i < size; i++) {
if (arr[i] == key) {
cout << "Element found at position: " << (i + 1);
break;
}
}
}

// Driver program to test above function


int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6 };
int n = 6; // no of elements
int key = 3; // key to be searched

// Calling function to find the key


findElement(arr, n, key);

return 0;
}

Output:
Element found at position: 3

C/C++ continue
This loop control statement is just like the break statement.
The continue statement is opposite to that of the break statement, instead of
terminating the loop, it forces to execute the next iteration of the loop.

As the name suggests the continue statement forces the loop to continue or
execute the next iteration. When the continue statement is executed in the loop,
the code inside the loop following the continue statement will be skipped and the
next iteration of the loop will begin.

// C++ program to explain the use


// of continue statement

#include <iostream>
using namespace std;

int main()
{
// loop from 1 to 10
for (int i = 1; i <= 10; i++) {

// If i is equals to 6,
// continue to next iteration
// without printing
if (i == 6)
continue;

else
// otherwise print the value of i
cout << i << " ";
}

return 0;
}

Output:
1 2 3 4 5 7 8 9 10
C/C++ goto
The goto statement in C/C++ also referred to as unconditional jump statement can
be used to jump from one point to another within a function.
Syntax:

Syntax1 | Syntax2
----------------------------
goto label; | label:
. | .
. | .
. | .
label: | goto label;
1. In the above syntax, the first line tells the compiler to go to or jump to the
statement marked as a label. Here label is a user-defined identifier that
indicates the target statement. The statement immediately followed after
‘label:’ is the destination statement. The ‘label:’ can also appear before the
‘goto label;’ statement in the above syntax.
Below are some examples of how to use goto statement:
// C++ program to print numbers
// from 1 to 10 using goto statement
#include <iostream>
using namespace std;

// function to print numbers from 1 to 10


void printNumbers()
{
int n = 1;
label:
cout << n << " ";
n++;
if (n <= 10)
goto label;
}

// Driver program to test above function


int main()
{
printNumbers();
return 0;
}
Output:
1 2 3 4 5 6 7 8 9 10

3.4 Loops in C and C++

Loops in programming come into use when we need to repeatedly execute a


block of statements. For example: Suppose we want to print “Hello World” 10
times. This can be done in two ways as shown below:

An iterative method to do this is to write the printf() statement 10 times.


// C++ program to illustrate need of loops
#include <iostream>
using namespace std;

int main()
{
cout << "Hello World\n";
cout << "Hello World\n";
cout << "Hello World\n";
cout << "Hello World\n";
cout << "Hello World\n";
cout << "Hello World\n";
cout << "Hello World\n";
cout << "Hello World\n";
cout << "Hello World\n";
cout << "Hello World\n";
return 0;
}

Or Using Loop

In Loop, the statement needs to be written only once and the loop will be
executed 10 times as shown below.
In computer programming, a loop is a sequence of instructions that is repeated
until a certain condition is reached.
• An operation is done, such as getting an item of data and changing it, and then
some condition is checked such as whether a counter has reached a prescribed
number.
• Counter not Reached: If the counter has not reached the desired number, the
next instruction in the sequence returns to the first instruction in the sequence
and repeat it.
• Counter reached: If the condition has been reached, the next instruction “falls
through” to the next sequential instruction or branches outside the loop.
There are mainly two types of loops:
1. Entry Controlled loops: In this type of loops the test condition is tested
before entering the loop body. For Loop and While Loop are entry controlled
loops.
2. Exit Controlled Loops: In this type of loops the test condition is tested or
evaluated at the end of loop body. Therefore, the loop body will execute atleast
once, irrespective of whether the test condition is true or false. do – while
loop is exit controlled loop.

For Loop

A for loop is a repetition control structure which allows us to write a loop that is
executed a specific number of times. The loop enables us to perform n number of
steps together in one line.
Syntax:
for (initialization expr; test expr; update expr)
{
// body of the loop
// statements we want to execute
}
In for loop, a loop variable is used to control the loop. First initialize this loop
variable to some value, then check whether this variable is less than or greater
than counter value. If statement is true, then loop body is executed and loop
variable gets updated . Steps are repeated till exit condition comes.
• Initialization Expression: In this expression we have to initialize the loop
counter to some value. for example: int i=1;
• Test Expression: In this expression we have to test the condition. If the
condition evaluates to true then we will execute the body of loop and go to
update expression otherwise we will exit from the for loop. For example: i <=
10;
• Update Expression: After executing loop body this expression
increments/decrements the loop variable by some value. for example: i++;
Equivalent flow diagram for loop :

// C++ program to illustrate for loop


#include <iostream>
using namespace std;
int main()
{
for (int i = 1; i <= 10; i++)
{
cout << "Hello World\n";
}

return 0;
}

Output:
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World

While Loop
While studying for loop we have seen that the number of iterations is known
beforehand, i.e. the number of times the loop body is needed to be executed is
known to us. while loops are used in situations where we do not know the exact
number of iterations of loop beforehand. The loop execution is terminated on the
basis of test condition.

Syntax:
We have already stated that a loop is mainly consisted of three statements –
initialization expression, test expression, update expression. The syntax of the
three loops – For, while and do while mainly differs on the placement of these
three statements.
initialization expression;
while (test_expression)
{
// statements

update_expression;
}
Flow Diagram:

// C++ program to illustrate while loop


#include <iostream>
using namespace std;

int main()
{
// initialization expression
int i = 1;

// test expression
while (i < 6)
{
cout << "Hello World\n";

// update expression
i++;
}

return 0;
}

Output:
Hello World
Hello World
Hello World
Hello World
Hello World

Do While Loop
In do while loops also the loop execution is terminated on the basis of test
condition. The main difference between do while loop and while loop is in do
while loop the condition is tested at the end of loop body, i.e do while loop is exit
controlled whereas the other two loops are entry controlled loops.
Note: In do while loop the loop body will execute at least once irrespective of test
condition.

Syntax:
initialization expression;
do
{
// statements

update_expression;
} while (test_expression);
Note: Notice the semi – colon(“;”) in the end of loop.
Flow Diagram:

// C++ program to illustrate do-while loop


#include <iostream>
using namespace std;

int main()
{
int i = 2; // Initialization expression

do
{
// loop body
cout << "Hello World\n";

// update expression
i++;

} while (i < 1); // test expression

return 0;
}
Output:
Hello World
In the above program the test condition (i<1) evaluates to false. But still as
the loop is exit – controlled the loop body will execute once.

Infinite Loop
An infinite loop (sometimes called an endless loop ) is a piece of coding that
lacks a functional exit so that it repeats indefinitely. An infinite loop occurs when
a condition always evaluates to true. Usually, this is an error.

// C++ program to demonstrate infinite loops


// using for and while
// Uncomment the sections to see the output

#include <iostream>
using namespace std;
int main ()
{
int i;

// This is an infinite for loop as the condition


// expression is blank
for ( ; ; )
{
cout << "This loop will run forever.\n";
}

// This is an infinite for loop as the condition


// given in while loop will keep repeating infinitely
/*
while (i != 0)
{
i-- ;
cout << "This loop will run forever.\n";
}
*/

// This is an infinite for loop as the condition


// given in while loop is "true"
/*
while (true)
{
cout << "This loop will run forever.\n";
}
*/
}

Output:
This loop will run forever.
This loop will run forever.
...................

For Each Loop in C++


In this topic, we will discuss the range-based for loop in the C++
programming language. The C++ language introduced a new
concept of the range-based for loop in C++11 and later versions,
which is much better than the regular For loop. A range-based for
loop does not require large coding to implement for loop iteration. It
is a sequential iterator that iterated each element of the container
over a range (from beginning to end).

Syntax
for (range_declaration : range_expression ) loop statement
1. range_declaration: It is used to declare a variable whose type
is the same as the types of the collected elements represented
by the range_expression or reference to that type.
2. range_expression: It defines an expression that represents the
suitable sequence of elements.
3. loop statement: It defines the body of the range-based for loop
that contains one or more statements to be repeatedly executed
till the end of the range- expression.
Note: If we don't know the data type of the container elements, we
can use the auto keyword that automatically identifies the data type
of the range_expression.

Let's consider an example to print the int and double array using the
range-based for loop in C++.
program.cpp

#include <iostream>
using namespace std;
int main ()
{
int arr1 [5] = { 10, 20, 30, 40, 50};
double darr [5] = { 2.4, 4.5, 1.5, 3.5, 4.0 };

// use range based for loop


for ( auto &var : darr )
{
Var++;
cout << var << " " ;
}
// use auto keyword to automatically specify the data type of arr1 container.
for ( const auto &var : darr )
{
cout << var << " " ;
}
return 0;
}

Output

10 20 30 40 50
2.4 4.5 1.5 3.5 4.0

Nested range-based for loop


When a loop is defined inside the body of another loop, the loop is called a nested
for loop. Similarly, when we define a range in a loop inside another range-based
loop, the technique is known as a nested range-based for loop.

Syntax:

for ( int x : range_expression) // outer loop


{
for ( int y : range_expression) // inner loop
{
// statement to be executed
}
// statement to be executed
}

Consider an example to demonstrate the nested range based for loop in C++
programming language.

#include <iostream>
using namespace std;
int main ()
{
int arr1[4] = { 0, 1, 2, 3 };
int arr2[5] = { 1, 2, 3, 4, 5 };
// use nested range based for loop
for ( int x : arr1 )
{
// declare nested loop
for ( int y : arr2 )
{
cout << " x = " << x << " and j = " << y << endl;
}
}
return 0;
}

Output

x = 0 and j = 1
x = 0 and j = 2
x = 0 and j = 3
x = 0 and j = 4
x = 0 and j = 5
x = 1 and j = 1
x = 1 and j = 2
x = 1 and j = 3
x = 1 and j = 4
x = 1 and j = 5
x = 2 and j = 1
x = 2 and j = 2
x = 2 and j = 3
x = 2 and j = 4
x = 2 and j = 5
x = 3 and j = 1
x = 3 and j = 2
x = 3 and j = 3
x = 3 and j = 4
x = 3 and j = 5

You might also like