# decision making statement if, if-else, nested-if, switch case

(Last Updated On: April 14, 2020) ## Decision-Making Introduction:

Decision-Making Statement if, if-else, nested-if, switch case-You know that computers can perform arithmetic calculations correctly and rapidly. Besides rapid arithmetic calculations and other capabilities, the computer is also capable of quick decision making and repetition. In this tutorial you will learn how to make decisions in c/c++ i.e you will learn how to code the program so that computer tests a condition and selects one of two alternative actions depending on whether the condition is true or false c/c++

### Transfer of control process:

Normally statements in a program are executed sequentially one after the other in increasing order i.e in the same order in which they appear in the program however it is possible to override this normal sequential order because in certain application it becomes necessary to interrupt the normal sequence and transfer control to some other part of the program. this is call transfer of control. The transfer of control process can be defined as the process of altering the normal sequence in which statements are executed. In c/c++ the transfer of control is achieved by goto, if or if-else and switch statements. Let us discuss these statements in detail.

### The unconditional Jump goto statement:

As discussed earlier that statements are executed one after another in their natural sequence (i.e in gravitational flow). But the order of execution may be changed with a direct (unconditional) jump. In c++ this can be accomplished by means of the goto statement. The goto statement branches unconditionally to a specified labeled-statement. It has the following general form

Goto label;

:

:

Label: statement;

The keyword goto is always followed by a label (a label to which control will be transferred); where label is a valid identifier-name and must be unique in a program i.e no two statements can have the same label in a program.

C/c++ knows a label because it ends with a colon. When computer executes the goto statement it branches to that statement labeled by associated label.

Let us examine the program shown below:

In the above program, the value of C is initially set to zero (int C = 0) such assignment is called initialization. When the computer encounters the statement C= C+1 the value of c is incremented by 1 i.e it sets C to 1. The statement cout<<C instruct the computer to print the value of C on screen. When the statement goto jump is encountered the program returns to labeled-statement jump:C=C+1 to execute the program the second time. at this time the value of C would become 2. This procedure will remain to continue until the user terminates the execution of the program by pressing the Ctrl-Break key.

Avoid using the goto statement whenever possible because modern programming practice discourage its use. It is generally felt that goto statements make a program harder to read and debug. Therefore never ever use goto statement. The structured features of C language eliminate the need of goto by writing more structured programs using other branching statements (for, while and do/while)a well.

### Decision-Making with if statement:

the fundamental decision-making statement in C/c++ is the if statement. it enables you to test for a condition to perform some action. Its simplest format is

for a single statement:

if(condition)

statement;

for multiple statements:

if(condition)

{

Statement1;

Statement2;

:

:

}

The reserved word if is followed by a  condition which is followed by a statement to be carried out if the condition is true. A statement may be a single statement or a block of statements or nothing (in case of null statement). When more than one statements are going to executed after the if statement then the statements must be grouped by enclosing them within a pair of braces. Every statement in the if block must end with a semicolon.

Here is a portion of a C/C++ program with an if statement which illustrates the use of this important statement.

If(pay> 40000)

Tax=0.10 * gross_pay;

Net_pay = gross_pay – Tax;

In the above example the condition (pay > 400000) is tested. In this case the value of pay is larger than the 40000 then the logical condition is true and the statement (Tax = 0.10 * gross_pay) following the condition is executed and the computer then goes on to execute whatever statement follows the semicolon which ends the if statement. However if pay is not larger than 40000 (i.e condition is false) then the statement following the condition will be ignored and control will be transferred to the next statement (i.e Net_pay= gross_pay – Tax) following the semicolon which ends if statement. So the statement following the condition will be obeyed or ignored according to the condition being true or false.

The if statement is flowcharted with the familiar diamond or decision symbol as shown in the figure Example: how to write a program which start beep when the marks is poor:

### Decision-making with if-else statement:

The  second most useful decision-making statement is if-else statement. The general form of if-else statement Is follow:

If(condition)

Statement;

Else

Statement;

With if-else statement if condition is true, the statement or statements immediately following the condition is executed. If the condition is false the else clause is executed.

Any type and any number of statements may appear before and after the else clause. As usual statements must be enclosed within braces for more than one statement.

With if-else statement we test a condition and we perform one of two alternatives i.e it is used in program solutions to perform one action when a given condition is true and a different action when the condition is false. It is similar to the simplest form of the if statement but there is a difference . the simplest form of the if statement performs an indicated action only when the condition is true whereas the if-else statement allows the programmer to specify separate actions to be performed when the condition is true or when the condition is false. The following figure illustrates the flowchart for the if-else statement. let us consider the if-else statement in the following:

if(marks > 33)

cout<<”Pass”;

else

cout<<”Fail”;

the above statement will display “Pass”, if the student’s marks are higher than 33 and will display “ Fail “ if marks are less than 33. As usual statement must be enclosed within braces for more than one statement. For example

if(marks > 55)

{

cout<<”Pass”;

cout<<”\nCongrates”;

}

Else

{

cout<<”Fail\n”;

cout<<”Try Again”;

}

#### Example: write a program in c++ which calculate the two roots of quadratic equation using  decision-making statement if-else:

The roots are calculated as:

1. If discriminant (b2 – 4ac) = 0 then the roots are real

Root1= -b/(2.0 * a)

Root2= -b/(2.0 * a)

1. If discriminant (b2 – 4ac)) < 0 then the root are imaginary

Root1= (-b + i(dicriminant)1/2) / (2.0 * a)

Root1= (-b – i(dicriminant)1/2) / (2.0 * a)

1. If discriminant (b2 – 4ac) > 0 then the roots are real and unequal.

x=(-b±√(b^2-4ac))/2a

In the above program all the three if-conditions will be checked but if we use else-if from it will be executed only in that case if the conditions in all of the preceding if statements are false. Obviously it will lead to efficient programming.

#### Example: write a program in c++ which display subtraction division multiplication addition using decision-making statement if,  else if  and else :

In the above program, exit() function is used which (declared in the stdlib.h header file) enables you to exit the program.

### Decision-Making Nested-if statement:

The if structure can be nested within on another i.e when an if statement is contained within another we say these are nested or nest of conditional statements or a nested if.

A relatively simple example of a nested if statement is shown in the following

If(condition)

If(condition)

Statements

Else

Statement

Else

Statement

The above example shows a simple type of nested decision making. Another example is give with different pattern of nested condition.

If(condition)

If(condition)

If(condition)

Statement

Else

Statement

Else

Statement

Else

Statement

In the above example we need to know which else phrase goes with which if. The rule is very simple each else clause belongs to the nearest if for which there is no else clause i.e each else is paired with the previous if that does not already have an else as shown below: Apply this rule to the example just given and after proper indentation, we get the following pattern Indentation plays an important role in nested if statement because it shows which else belongs to which if statement. It is a visual aid for the programmer. It is no requirement for the compiler but rather a good programming practice to make programs more readable.

#### Example: write a program in c++ which display the largest number using decision-making statement  nested if  :

Nested condition can be very useful in writing program statements but sometimes nested if statements can become extremely long which causes difficulty in reading understanding debugging and modifying the program logic poor indentation may cause a lot of problem for the programmer. So therefore it is always suggested to prefer simple and straightforward logic instead of using long and complex nested decision-making conditions.

### Relational Operators:

The relational operators are used to form of decision making conditions. These are used to write condition expression that describe the relationship between two values i.e these operators allow us to compare two values to see whether they are equal to each other unequal or whether one is greater than the other or vive versa. Relational operators return the value 1(true) or 0(false). Don’t confuse the assignment operator (=) with the equals relational operator(==). The six relational operators in c/c++ are

 Relational  operator meaning examples results == Equal to (2==5) (2==2) False True < Less than (6<2) (2<5) (2<2) False True False > Greater than (10> 5) (8>16) (5>5) True False False <= Less than or equal to (10<=5) (10<=10) (2<=5) False True True >= Greater than or Equal to (10>=5) (10 >= 10) (10 >= 20) True True False != Not Equal to (10 != 5) (10 != 10) True false

### Logical Operators decision-making :

More than one condition can be combined and tested in an if statement by connecting them with logical operator &&(AND),  ||(OR),  and ! (NOT). Such condition expression are referred to as Boolean expression complex or compound expression.

A compound expression with && logical expression is true of both of the relational expression are true otherwise it is false for examples:

If((marks > 70) &&  (marks < 80))

Cout<<”garde is A”;

Suppose if marks is 75 the expression ((marks >= 70) && (marks < 80)) is true if marks has the value  60 the expression ((marks >= 70) && (marks < 80)) is false.

The compound expression with (||) logical operation is true if any of the conditions is/are true and false only in the one case when all condition is false. For example:

If((choice == ‘Y’) || (choice == ‘y’))

goto top;

Thus the logical expression ((choice == ‘Y’) || (choice == ‘y’)) is true if either of the relational expressions is true otherwise it is false.

These definitions are summarized in the following truth table which displays app possible values for two decision-making conditions X and Y and the corresponding values of the logical expression.

 X Y (X&&Y) (X||Y) true true true True true False False True False True False True False False False False

the !(Not) operator is used for a different purpose than the && and || operators. It is used to reverse the meaning of a conditional expression rather than to combine simple conditional expression into compound conditional expressions in other words we can say that !(NOT) operator is used to negate an operand I.e changes true to false or false to true.

 X !(X) True False False true

! (NOT) is called a prefix operator i.e it is always used in front of a condition but it is important to note that the condition must be enclosed in parentheses.

### Operators and their Precedence:

The table below indicates the precedence order of all operators that we have discussed so far. The operators are listed here in order from the highest precedence to the lowest precedence.

 Operators type ! Logical Not *  /  % Multiplication division and modulus +  – Addition and Subtraction <  >  <=  >= Relational operators ==   != Relational operators && Logical AND operator || Logical OR operator = Assignment operator

#### Conditional operators or Ternary (?  : )

Conditional operator is the condensed form of an if-else decision-making statement for example

If(condition)

Variable= exp1;

Else

Variable= exp2;

The equivalent conditional expression is:

(Condition) ? (exp1) : (exp2)

The question mark(?) and the colon (:) are use to form the conditional expression operator. The expression is read as if(condition) is true then the value returned to the target variable will be exp1 otherwise the value returned will be exp2 for example the assignment statement

Max = A > B ? A:Y;

Will assign the value of A to max if A>B otherwise it will assign the value of B to max.

Conditional expression is actually a ternary (three operands) operation in which condition exp1 and exp2 are the three operands and ? and : act as the operators.

a ternary operator in C++ is often called as the short end to the simple you find else so to use this ternary operator we can make use of two operators one is the question mark(?) and the Colin(:)  so the syntax of this ternary operator is first we should have to write the expression which should result in either true or false then we have to write this question mark and then the statement that we want to execute and just remember that we don’t need to add any semicolon here in the statement and then the Colin and then another statement and in the end add the semicolon so the  expression should evaluate to either true or false so depending on the expression the first or the second statement will be executed if the  expression is severity to true then the first statement will be executed and if the expression is evaluated to false then the second statement will be executed so to demonstrate that we’re going to write a ternary operator program.

### Multiple Choice switch case / break  / default decision-making Statement:

We know that the goto statement is used to jump unconditionally to the indicated label. The if statement selects on of the two possible choices of action according to the value of a conditional expression. Whereas the multiple branching can be carried out in c/c++ by means of the switch statement.

A switch decision-making statement is a special form of multiple –alternative decision making i.e when multiple-choice possibilities are based on a single value the switch statement is the best choice. Actually switch statement is a more efficient way of representing nested-if statement. This statement is used to transfer control to a selected case of any one of the several indicated cases depending on the value of the switch expression. It has the following general from

Switch (expression)

{

Case value1: statement(s);

Break;

Case value2: statement(s);

Break;

`        :

:

Case valueN: statement(s);

Break;

Default:     statement(s);

}

Any legal c/c++ expression may be used in switch expression. It must be enclosed in parentheses and only used for equality test. Other relational operators or Boolean operators are not allowed. The expression value may be of type integer or character. The switch statement does not work with floating-point data types.

After evaluation of expression control is transferred directly to the statement whose case-value matches the result of the switch expression.

If no match is found control flow is transferred to the default statement. The default statement is optional. If no match is found and there is no default statement is present in the switch statement body control flow is transferred to the next statement following the switch statement body. However it is always a good idea to use a default statement in the switch structure. It may appear anywhere within the switch structure. It need not necessary be placed at the end.

The break statement is use to break switch statement i.e it is used to exit from a switch statement. It is used to transfer the control flow out of the entire switch statement to the first statement following the switch statement.it must be used at the end of every case statement if not execution will fall through to the next case statement. It has the following general format

break;

an integer or a character constant follows the reserved word ‘case’. Each value in each case must be different from all the others i.e the case values must be unique within a given switch statement.

If more than one statement are required to be executed in case body no need to enclose them within braces.
{"ft_lang_label":"__label__en","ft_lang_prob":0.7619987,"math_prob":0.9423296,"size":23856,"snap":"2020-45-2020-50","text_gpt3_token_len":6366,"char_repetition_ratio":0.16728157,"word_repetition_ratio":0.13499632,"special_character_ratio":0.29363683,"punctuation_ratio":0.112059765,"nsfw_num_words":1,"has_unicode_error":false,"math_prob_llama3":0.9720256,"pos_list":[0,1,2,3,4,5,6,7,8,9,10],"im_url_duplicate_count":[null,2,null,1,null,1,null,1,null,1,null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2020-10-22T20:55:29Z\",\"WARC-Record-ID\":\"<urn:uuid:c475fe3f-9fff-47af-b8d8-4736c5d2bdc0>\",\"Content-Length\":\"301893\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:33e6ad7c-f669-4f46-bb46-fe0edbea934d>\",\"WARC-Concurrent-To\":\"<urn:uuid:440dc170-376a-44b1-b3a5-661210263cac>\",\"WARC-IP-Address\":\"173.0.56.154\",\"WARC-Target-URI\":\"https://www.electroniclinic.com/decision-making-statement-if-if-else-nested-if-switch-case/\",\"WARC-Payload-Digest\":\"sha1:K4QRE4IRK7VEZZ7YNNFFOY56YMQTOZ3G\",\"WARC-Block-Digest\":\"sha1:PXJAQKBCNKESVFSKHLS3E2JBKEICLBHN\",\"WARC-Identified-Payload-Type\":\"text/html\",\"warc_filename\":\"/cc_download/warc_2020/CC-MAIN-2020-45/CC-MAIN-2020-45_segments_1603107880038.27_warc_CC-MAIN-20201022195658-20201022225658-00129.warc.gz\"}"}