CONTROL STRUCTURES
(MULTI-WAY SELECTION)
MULTI-WAY SELECTION
EXTENDED IF-ELSE
Used to select exactly one task out of multiple tasks
(or possibly none)
Unlike a series of “ifs” evaluation stops once one
relational expression evaluates as true (others are skipped)
Always does on less evaluation than a series of “ifs”
Well planned implementation provides for efficiency –
most common choice is listed first
MULTIPLE SELECTION
EXTENDED IF-ELSE - SIMPLE
if ( relational expression(s) )
statement;
else
if ( relational expression(s) )
statement;
else
if ( relational expression(s) )
statement;
else
statement;
MULTI-WAY SELECTION
EXTENED IF-ELSE - COMPOUND
if ( relational expression(s) )
{
statement;
statement(s);
}
else
if ( relational expression(s) )
{
statement;
statement(s);
}
else
if ( relational expression(s) )
{
statement;
statement(s);
}
MULTI-WAY SELECTION
RULES
1. First statement(s) will be executed if and only if the
evaluation of the relational expression(s) is/are true.
2. Second statement(s) will be executed if and only if
the evaluation of the first relational expression(s)
is/are false and if and only if the evaluation of the
second relational expression(s) is/are true.
3. Same progression as 1 and 2 for all levels that exist.
Note: This process does not have to end with two, three or four
selections, but can continue for as many selections as needed.
MULTIPLE SELECTION
EXAMPLES:
if (numStudents< 6)
salary = hours * CLUSTER_RATE;
else
if (numStudents < 12)
salary = hours * LIMITED_RATE;
else
salary = hours * FULL_RATE
MULTIPLE SELECTION
EXAMPLES:
if (temperature <= 10)
cout << “Go Bowling” << endl;
else
if (temperature <= 32)
cout << “Go Skiing” << endl;
else
if (temperature <= 70)
cout << “Play Football” << endl;
else
if (temperature <= 85)
{
cout << “Play Tennis” << endl;
cout << “Wear white!” << endl;
}
else
cout << “Go Swimming” << endl;
if (temperature > 85)
cout << “Go Swimming” << endl;
else
if (temperature > 70)
{
cout << “Play Tennis” << endl;
cout << “Wear white!” << endl;
}
else
if (temperature > 32)
cout << “Play Football” << end;
else
if (temperature > 10)
cout << “Go Skiing” << endl;
else
cout << “Go Bowling” << endl;
MULTI-WAY SELECTION
NESTED IF-ELSE
Situations where action is dependent upon
two or more different conditions
Examples:
if (gender == ‘M’)
if (age < MAX_AGE)
cout << “Male and under 67.” << endl;
else
cout << “Male and 67 or over.” << endl;
else
if (age < MAX_AGE)
cout << “Female and under 67.” << endl;
else
cout << “Female and 67 or over.” << endl;
if (savings >= DOLLAR_LIMIT)
if (vacation >= VACATION_LIMIT)
cout << “Trip to Hawaii” << endl;
else
cout << “Vacation at local ski resort.” << endl;
else
cout << “Go camping in mountains.” << endl;
MULTI-WAY SELECTION
SWITCH
Alternate form of multi-way selection
Decision can only be made on integral or
enumerated data types (bool, char, int)
Does not work with strings or floating point
numbers
Only works when testing for specific values
Does not work with ranges
MULTI-WAY SELECTION
SWITCH - SIMPLE
switch (selector)
{
case choice1:
case choice2:
case choice3:
“
case choice(n):
}
statement;
break;
statement;
break;
statement;
break;
“
statement;
MULTI-WAY SELECTION
SWITCH – WITH DEFAULT
switch (selector)
{
case choice1:
case choice2:
“
case choice(n):
default:
}
statement;
break;
statement;
break;
“
statement;
break;
statement;
statement(s);
MULTIPLE SELECTION
SWITCH – COMPOUND
switch (selector)
{
case choice1:
case choice2:
“
case choice(n):
default:
}
statement;
statement(s);
break;
statement;
statemant(s);
break;
“
statement;
statement(s);
break;
statement;
statement(s);
MULTIPLE SELECTION
RULES
1. Selector may only be an integral data type (int,
char, bool, or enumerated).
2. Corresponding statement(s) is/are executed if choice
is equal to the selector.
3. After corresponding statement(s) are executed if
break is not present additional case statements are
executed until a break is found or end of structure is
found.
4. If no choice is equal to the selector, the switch is
exited unless a default is available.
MULTIPLE SELECTION
EXAMPLES:
switch(category)
{
case 1: cout << “Category One” << endl;
break;
case 2: cout << “Category Two” << endl;
break;
:
:
case n: cout << “Category n” << endl;
break;
}
MULTI-WAY SELECTION
EXAMPLE:
int num1, num2, answer;
char choice;
cout << "Enter two numbers, separated by a space: ";
cin >> num1 >> num2;
cout << endl << endl;
cout << "Perform which operation on the Numbers?" << endl;
cout << " a - Add" << endl;
cout << " s - Subtract" << endl;
cout << " m - Mulitply" << endl;
cout << " d - Divide" << endl;
cout << "Enter your choice from above: " << endl;
cin >> choice;
choice = tolower (choice);
switch (choice)
{
case 'a‘: answer = num1 + num2;
cout << "The sum is " << answer << endl;
break;
case 's‘: answer = num1 - num2;
cout << "The difference is " << answer << endl;
break;
case 'm‘: answer = num1 * num2;
cout << "The product is " << answer << endl;
break;
case 'd‘: answer = num1 / num2;
cout << "The quotient is " << answer << endl;
break;
default : cout << "Invalid choice entered!" << endl;
} // end switch
MULTI-WAY SELECTION
EXAMPLE:
char answer;
cout << "Would you like to continue [Y] or [N]?" << endl;
cin >> answer;
switch (answer)
{
case 'Y':
case 'y‘:
case 'N':
case 'n‘:
default :
cout << "You chose yes" << endl;
cout << "Way to go." << endl;
break;
cout << "You chose no" << endl;
cout << "Not very positive." << endl;
break;
cout << "You were suppose to choose Y or N." << endl;
cout << "What happened?" << endl;
} // end switch