|
|
|
The switch statement – an alternative for
multiway branches. |
|
The do-while statement – an alternative for
looping. |
|
The for statement – another alternative for
looping. |
|
The break and continue statements – break and continue
are to a control structure as return is to a function. |
|
|
|
|
switch (letter) |
|
{ |
|
case
‘X’: Statement1; |
|
break; |
|
case
‘L’: |
|
case
‘M’: Statement2; |
|
break; |
|
case
‘S’: Statement3; |
|
break; |
|
default
: Statement4; |
|
} |
|
Statement5; |
|
|
|
|
switch (grade) |
|
{ |
|
case
‘A’: |
|
case
‘B’: cout << “Good Work”; |
|
break; |
|
case
‘C’: cout << “Average Work”; |
|
break; |
|
case
‘D’: |
|
case
‘F’: cout << “Poor Work”; |
|
numberInTrouble++; |
|
break; |
|
} |
|
|
|
|
switch (grade) |
|
{ |
|
case
‘A’: |
|
case
‘B’: cout << “Good Work”; |
|
case
‘C’: cout << “Average Work”; |
|
case
‘D’: |
|
case
‘F’: cout << “Poor Work”; |
|
numberInTrouble++; |
|
default
: cout << grade << “ is not a valid letter” |
|
<< “ grade; |
|
} |
|
|
|
|
switch (grade) |
|
{ |
|
case
‘A’: |
|
case
‘B’: cout << “Good Work”; |
|
case
‘C’: cout << “Average Work”; |
|
case
‘D’: |
|
case
‘F’: cout << “Poor Work”; |
|
numberInTrouble++; |
|
default
: cout << grade << “ is not a valid letter” |
|
<< “ grade; |
|
} |
|
|
|
|
switch (grade) |
|
{ |
|
case
‘A’: |
|
case
‘B’: cout << “Good Work”; |
|
case
‘C’: cout << “Average Work”; |
|
case
‘D’: |
|
case
‘F’: cout << “Poor Work”; |
|
numberInTrouble++; |
|
default
: cout << grade << “ is not a valid letter” |
|
<< “ grade; |
|
} |
|
|
|
|
switch (grade) |
|
{ |
|
case
‘A’: |
|
case
‘B’: cout << “Good Work”; |
|
case
‘C’: cout << “Average Work”; |
|
case
‘D’: |
|
case
‘F’: cout << “Poor Work”; |
|
numberInTrouble++; |
|
default
: cout << grade << “ is not a valid letter” |
|
<< “ grade; |
|
} |
|
|
|
|
switch (grade) |
|
{ |
|
case
‘A’: |
|
case
‘B’: cout << “Good Work”; |
|
case
‘C’: cout << “Average Work”; |
|
case
‘D’: |
|
case
‘F’: cout << “Poor Work”; |
|
numberInTrouble++; |
|
default
: cout << grade << “ is not a valid letter” |
|
<< “ grade; |
|
} |
|
|
|
|
switch (grade) |
|
{ |
|
case
‘A’: |
|
case
‘B’: cout << “Good Work”; |
|
case
‘C’: cout << “Average Work”; |
|
case
‘D’: |
|
case
‘F’: cout << “Poor Work”; |
|
numberInTrouble++; |
|
default
: cout << grade << “ is not a valid letter” |
|
<< “ grade; |
|
} |
|
|
|
|
switch (grade) |
|
{ |
|
case
‘A’: |
|
case
‘B’: cout << “Good Work”; |
|
case
‘C’: cout << “Average Work”; |
|
case
‘D’: |
|
case
‘F’: cout << “Poor Work”; |
|
numberInTrouble++; |
|
default
: cout << grade << “ is not a valid letter” |
|
<< “ grade; |
|
} |
|
|
|
|
DoWhileStatement |
|
do |
|
Statement |
|
while (Expression); |
|
|
|
Example |
|
do |
|
{ |
|
cout
<< “Enter your age: ” ; |
|
cin
>> age; |
|
if
(age <= 0) |
|
cout << “Your age must be positive.” << endl; |
|
} while (age <= 0); |
|
|
|
|
ForStatement |
|
For (InitStatement Expression1; Expression2) |
|
Statement |
|
|
|
Example |
|
for (lastNum = 1; lastNum <= 7; lastNum++) |
|
{ |
|
for
(numtoPrint = 1; numtoPrint <= lastNum; numToPrint++) |
|
cout << numToPrint; |
|
cout
<< endl; |
|
} |
|
Note: The InitStatement can be the null
statement and the two Expressions are optional. |
|
|
|
|
The break statement causes an immediate exit
from the innermost switch, while, do-while, or for statement in which it
appears. |
|
If break is in a loop that is nested inside
another loop, control exits the inner loop but not the other. |
|
A continue statement terminates only the current
iteration of a loop (not the whole loop). |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
loopCount = 1; |
|
while (true) |
|
{ |
|
cin
>> num1; |
|
if
(!cin || num1 >= 100) |
|
continue; |
|
if
(!cin || num2 <= 50) |
|
continue; |
|
cout
<< sqrt(float(num1 + num2)) << endl; |
|
loopCount++ |
|
if
(loopCount > 10) |
|
break; |
|
} |
|
|
|
|
For count-controlled loops, think for. |
|
If you know it will execute at least once, do-while
is good for event control. |
|
If you don’t know whether the loop will ever
execute, use a pretest loop (while or for). |
|
When in doubt, use a while statement. |
|
|
|
|
Put a break statement at the end of each case
alternative in a switch statement. |
|
Case labels in a switch statement are made up of
values, not variables. |
|
A switch expression cannot be a floating-point
or string expression. |
|
A for loop must have semicolons, whether the
expressions exist or not. |
|