# C-Decision Making & Branching

### Decision Making & Branching,

INTRODUCTION
We have seen  that a C program is a set of statement which are normally executed sequentially in the order in which they appear. This happens when no option or no repetitions of certain calculation are necessary . However , in practice  , we have a number of situation where we many have to change the order of execution of statement based on certain conditions, or repeat group of statements until certain  specified condition are met.

C language possesses such decision – making capabilities by supporting the following statement

1. if statement
2. switch statement
3. conditional operator statement
4. goto  statement

These statements are popularly known as decision – making statements. Since these statements ‘control’ the flow of execution , they are also known as control statements.

DECISION MAKING WITH IF STATEMENT
The if statement is a powerful decision – making system statement and it used to control flow of execution of statement . It is basically a two – way decision statement and in conjunction  with an expression .It allows the computer to evaluate the expression first and then , depending on whether the value of the expression (relation or condition) is ‘true’ ( or non-zero) or ‘false’ (zero), it transfers the control  to a particular statement.

Some examples of decision making, using  if statements are:

1.   if  (bank balance is zero)
borrow money

2.  if  (room is dark )
put on lights

The  if  statement  may be implemented  in a diffrent form s depending on the complexity of condition to be tested. The different forms are:

1. Simple  if  statement
2. if ……else statement
3. Nested  if ……else statement
4. else if statement.

SIMPLE IF STATEMENT
The  general form simple if  statement is
if (test expression)
{
statement – block;
}
statement – x;

The statement block may be single statement or a group statements if the test expression is true, the statement block will be executed : otherwise the statement block will be execution will jump to  the statement – x .

Consider the following  segment of a program that is written for processing of marks obtained in an entrance examinationif  (category  ==  SPORTS)
{
marks  =  marks  +  bonus _ marks;
}
printf (“%f ” , marks);

The program tests the type of category of the student . If the student belongs to the SPORTS category , then additional bonus _ marks are added to his marks before they are printed. For other bonus_  marks are not added.

THE IF……ELSE STATEMENT
The if…..else statement is an extension of this simple if statement The general form isif (test  expression )
{
true-block statement (s)
}
else
{
false-block statement(s)
}
statement -x

If the test expression is true, then the true block statement (s), immediately following the if statement are executed; otherwise , the false – block statements (s) are executed . In either case, either true- block or false- block will be executed, non both

Let us consider an example  of counting the number of boys and girls in class .we use code 1 for a boys and 2 for a girls . The program is this:
if (code == 1)
boy = boy +1 ;
if ( code == 2)
girl  = girl +1;
The first test determines whether or not the student is a boy . If yes , the number of boy is increased by 1 and program continues to the  second test . The second test determines whether the student the boys or girls . This is unnecessary . Once a student is identified as boy, there no need to test for again for a girl .The else cause program is below:
if (code == 1)
boy = boy +1 ;
else
girl  = girl +1;
Consider the program given in fig 5.3 when the value (c-d) is zero , the ratio is not calculated and program  stop without any massage .In such  cases we may not know  whether the program stopped due to a zero value or some other error.
if (c – d  != 0)
{
ratio  =  (float ) ( a + b ) / (float ) (c – d );
printf (“ratio  = %f\n”, ratio);
}
else
printf (” c – d ” is zero \n “);

NESTING OF IF…ELSE STATEMENT
When a series of decision involved , we may have to use more then one if….else statement statement in nested form as shown below:
if   (test condition -1 )
{ (test condition -2);
{
statement – 1;
}
else
{
statement – 2 ;
}
}
else
{
statement – 3 ;
}
statement- x;
The logic of execution is illustrated in fig 5.7 if the condition – 1 is false , the statement -3 will be executed; otherwise it continues to perform the second test if the condition -2 is true , the statement-1 will be evaluated. and them the control is transferred  to the statement -x.

A commercial bank  has introduce an incentive policy is as follow: A bonus of 2 percent of balance held on 31st December is given to every one , irrespective their balance, and  5 percent is given to female account holder if their balance is more then 5000  this logic coded as follows:
if (sex as female)
{
if ( balance > 5000)
bonus = 0.05 * balance ;
else
bonus =0.02 * balance;
}
else
bonus = 0.02 * balance;
}
balance  = balance + bonus;

There is another ways to putting ifs together when multipath  decision are involved . A multipath decision  if chain of if  in which the statement associated with each else is an if is take the following general form:

if (condition 1)
statement 1;
Else if (condition 3)
statement 2 ;
Else if (condition 3)
statement 3 ;
Else if (condition 3)
statement n ;
else
default statement;
statement x
This construct known as else if ladder . The condition are evaluated from the top (of the ladder), downwards . As soon as tree condition as found , the statement associated with it executed and control is transferred to the statement – x (skipping the rest of the ladder ). When all the n condition become false , then the final else containing the default statement will  be executed Let us consider an example of grading the student is an academic institution . The grading is done  according to the following rules :

80 to 100                     Honours
60 to  79                     First Division
50 to 59                      Second Division
0   to 39                        Fail
if (marks > 79)
else if (marks > 59)
else if (marks > 49)
else if (marks > 39)
else 