# The

`if-else`

statement allows a choice to be made between two possible alternatives. Sometimes a choice must be made between more than two possibilities. For example the sign function in mathematics returns -1 if the argument is less than zero, returns +1 if the argument is greater than zero and returns zero if the argument is zero. The following C++ statement implements this function:if (x < 0) sign = -1; else if (x == 0) sign = 0; else sign = 1;This is an

`if-else`

statement in which the statement following the `else`

is itself an `if-else`

statement. If `x`

is less than zero then `sign`

is set to -1, however if it is not less than zero the statement following the `else`

is executed. In that case if `x`

is equal to zero then `sign`

is set to zero and otherwise it is set to 1.Novice programmers often use a sequence of

`if`

statements rather than use a nested `if-else`

statement. That is they write the above in the logically equivalent form:if (x < 0) sign = -1; if (x == 0) sign = 0; if (x > 0) sign = 1;This version is not recommended since it does not make it clear that only one of the assignment statements will be executed for a given value of

`x`

. Also it is inefficient since all three conditions are always tested.If nesting is carried out to too deep a level and indenting is not consistent then deeply nested

`if`

or `if-else`

statements can be confusing to read and interpret. It is important to note that an `else`

always belongs to the closest `if`

without an `else`

.When writing nested

`if-else`

statements to choose between several alternatives use some consistent layout such as the following:Assume that a real variable`if (`

condition1`)`

statement1`;`

`else if (`

condition2`)`

statement2`;`

`. . .`

`else if (`

condition-n`)`

statement-n`;`

`else`

statement-e`;`

`x`

is known to be greater than or equal to zero and less than one. The following multiple choice decision increments `count1`

if 0 `x`

0.25, increments `count2`

if 0.25 `x`

0.5, increments `count3`

if 0.5 `x`

0.75 and increments `count4`

if 0.75 `x`

1.if (x < 0.25) count1++; else if (x < 0.5) count2++; else if (x < 0.75) count3++; else count4++;Note how the ordering of the tests here has allowed the simplification of the conditions. For example when checking that

`x`

lies between 0.25 and 0.50 the test `x < 0.50`

is only carried out if the test `x < 0.25`

has already failed hence `x`

is greater than 0.25. This shows that if `x`

is less than 0.50 then `x`

must be between 0.25 and 0.5.Compare the above with the following clumsy version using more complex conditions:

if (x < 0.25) count1++; else if (x >= 0.25 && x < 0.5) count2++; else if (x >= 0.5 && x < 0.75) count3++; else count4++;

## No comments:

## Post a Comment