If Else and Switch Statement in C++
If Else and Switch Statement in C++
1. Simple statements
2. Structured statements-
decision control statements/conditional statements-if-else , switch …case
repetitive/iterative/loop statements-for loop, while loop and do…while
loop
if(condition) if(a>b)
cout<<”a is max”;
{ else
Statement1(s); cout<<”b is max”;
Statement2;
}
The statements inside if parenthesis (usually referred as if body) gets executed
only when the given condition is true. If the condition is false then the
statements inside if body are completely ignored.
if(condition_2)
{
Statement2(s);
}
}
if(a>b)
{cout<<”a is max”;
if(a>c)
{cout<<”a is max”;}
}
Output:
num is greater than or equal 50
Switch case statement is used when we have multiple conditions and we need
to perform different action based on the condition. When we have multiple
conditions and we need to execute a block of statements when a particular
condition is satisfied. In such case either we can use lengthy if..else-if
statement or switch case. The problem with lengthy if..else-if is that it becomes
complex when we have several conditions. The switch case is a clean and
efficient method of handling such scenarios.
#include <iostream>
using namespace std;
int main()
{
int num;
cout<<”enter the value of num”;
cin>>num; 2
switch(num) 2
{
case 1:
int a,b;
cout<<"Case1: Value is: "<<num<<endl;
break;
case 2:
cout<<"Case2: Value is: "<<num<<endl;
break;
case 3:
cout<<"Case3: Value is: "<<num<<endl;
break;
default:
cout<<" invalid Value " <<endl;
return 0;
Output:
Default: Value is: 5
Explanation: In switch I gave an expression, you can give variable as well. I gave
the expression num+2, where num value is 5 and after addition the expression
resulted 7. Since there is no case defined with value 4 the default case got
executed.
Switch Case Flow Diagram
It evaluates the value of expression or variable (based on whatever is given
inside switch braces), then based on the outcome it executes the corresponding
case.
Break statement in Switch Case
Before we discuss about break statement, Let’s see what happens when we don’t
use break statement in switch case. See the example below:
#include <iostream>
using namespace std;
int main(){
int i=2;
switch(i) {
case 1: cout<<"Case1 "<<endl;
case 2: cout<<"Case2 "<<endl;
break;
case 3: cout<<"Case3 "<<endl;
case 4: cout<<"Case4 "<<endl;
default: cout<<"Default "<<endl;
}
return 0;
}
Output:
Case2
Case3
Case4
Default
In the above program, we have the variable i inside switch braces, which means
whatever the value of variable i is, the corresponding case block gets executed.
We have passed integer value 2 to the switch, so the control switched to the
case 2, however we don’t have break statement after the case 2 that caused the
flow to continue to the subsequent cases till the end. However this is not what
we wanted, we wanted to execute the right case block and ignore rest blocks.
The solution to this issue is to use the break statement in after every case block.
Break statements are used when you want your program-flow to come out of the
switch body. Whenever a break statement is encountered in the switch body, the
execution flow would directly come out of the switch, ignoring rest of the cases.
This is why you must end each case block with the break statement.
Let’s take the same example but this time with break statement.
#include <iostream>
using namespace std;
int main(){
int i=2;
switch(i) {
case 1:
cout<<"Case1 "<<endl;
break;
case 2:
cout<<"Case2 "<<endl;
break;
case 3:
cout<<"Case3 "<<endl;
break;
case 4:
cout<<"Case4 "<<endl;
break;
default:
cout<<"Default "<<endl;
break;
}
return 0;
}
Output:
Case2
Now you can see that only case 2 got executed, rest of the subsequent cases
were ignored.
Why didn’t I use break statement after default?
The control would itself come out of the switch after default so I didn’t use
break statement after it, however if you want you can use it, there is no harm in
doing that.
Important Notes
1) Case doesn’t always need to have order 1, 2, 3 and so on. It can have any
integer value after case keyword. Also, case doesn’t need to be in an ascending
order always, you can specify them in any order based on the requirement.
2) You can also use characters in switch case. for example –
#include <iostream>
using namespace std;
int main()
{
char ch;
cout<<”enter your choice”<<endl;
cin>>ch; ‘a’
switch(ch)
{ Default
case 'd': cout<<"Case1 ";
break;
case 'b': cout<<"Case2 ";
break;
case 'x': cout<<"Case3 ";
break;
case 'y': cout<<"Case4 ";
break;
default: cout<<"Default ";
}
return 0;
}
3) 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.
#include<iostream.h>
#include<conio.h>
void main()
{
int a,b,c; OUTPUT
clrscr();
cout<<”enter the values of a and b”; enter the values of a and b
cin>>a>>b; 10 20
cout<<”menu driven program”<<”\n”; menu driven program
cout<<”1=Addition” <<endl; 1=Addition
cout<<”2=Subtraction’<<endl; 2=Subtraction
cout<<”3=Even/Odd” <<endl; 3=Even/Odd
cout<<”Please enter your choice”<<endl; Please enter your choice
cin>>c;
5
getch();
#include<iostream.h>
#include<conio.h>
int main()
{
int a, b;
clrscr();
cout<<”enter the value of a”;
cin>>a; 9
if(a%2==0);
cout<<” a is even”;
else
cout<<” a is odd”;
getch();
return 0;
}