Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Additional Control Structures. 2 Chapter 9 Topics  Switch Statement for Multi-way Branching  Do-While Statement for Looping  For Statement for Looping.

Similar presentations


Presentation on theme: "1 Additional Control Structures. 2 Chapter 9 Topics  Switch Statement for Multi-way Branching  Do-While Statement for Looping  For Statement for Looping."— Presentation transcript:

1 1 Additional Control Structures

2 2 Chapter 9 Topics  Switch Statement for Multi-way Branching  Do-While Statement for Looping  For Statement for Looping  Using break and continue Statements  To be able to choose the most appropriate looping statement for a given problem

3 3 Switch Statement Is a selection control structure for multi-way branching. SYNTAX switch ( IntegralExpression ) { case Constant1 : Statement 1; // optional case Constant2 : Statement 2; // optional. default :// optional Statement n; // optional }

4 4 float weightInPounds = 165.8 ; char weightUnit ;... // user enters letter for desired weightUnit switch ( weightUnit ) { case ‘P’ : case ‘p’ : cout << weightInPounds << “ pounds “ << endl ; break ; case ‘O’ : case ‘o’ : cout << 16.0 * weightInPounds << “ ounces “ << endl ; break ; case ‘K’ : case ‘k’ : cout << weightInPounds / 2.2 << “ kilos “ << endl ; break ; case ‘G’ : case ‘g’ : cout << 454.0 * weightInPounds << “ grams “ << endl ; break ; default : cout << “That unit is not handled! “ << endl ; break ; }

5 5 Switch Statement  the value of IntegralExpression (of char, short, int, long or enum type ) determines which branch is executed  case labels are constant ( possibly named ) integral expressions. Several case labels can precede a same statement

6 6 Switch(letter) {case ‘X’ : Statement1; break; case ‘L’ : case ‘M’: Statement2; break; case ‘S’ : Statement3; break; default : Statement4; } Statement5;

7 7  In this example, letter is the switch expression.  The statement means  If letter is ‘X’,execute Statement1 and continue with Statement5.  If letter is ‘L’ or ‘M’, execute Statement2 and continue with Statement5.  If letter is ‘S’, execute Statement3 and continue with Statement5.  If letter is none of the characters mentioned, execute Statement4 and continue with Statement5.  The Break statement causes an immediate exit from the Switch statement.

8 8 Control in Switch Statement  control branches to the statement following the case label that matches the value of IntegralExpression. Control proceeds through all remaining statements, including the default, unless redirected with break  if no case label matches the value of IntegralExpression, control branches to the default label(if present)——otherwise control passes to the statement following the entire switch statement  forgetting to use break can cause logical errors

9 9 Switch (grade) // Wrong Version { 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.” }

10 10  If grade is ‘A’, the resulting output is this: Good WorkAverage WorkPoor WorkA is not a valid letter grade.  Remember: After a branch is taken to a specific case label, control proceeds sequentially until either a Break statement or the end of the Switch statement occurs.

11 11 Do-While Statement Is a looping control structure in which the loop condition is tested at the end(bottom) of the loop. SYNTAX do { Statement } while ( Expression ) ; Loop body statement can be a single statement or a block. Note that the Do-While statement ends with a semicolon.

12 12 void GetYesOrNo ( /* out */ char& response ) // Inputs a character from the user // Postcondition: response has been input // && response == ‘y’ or ‘n’ { do { cin >> response ; // skips leading whilespace if ( ( response != ‘y’ ) && ( response != ‘n’ ) ) cout << “Please type y or n : ”; } while ( ( response != ‘y’ ) && ( response != ‘n’ ) ) ; } Function Using Do-While

13 13 Do-While Loop vs. While Loop  POST-TEST loop (exit-condition)  The looping condition is tested after executing the loop body.  Loop body is always executed at least once.  PRE-TEST loop (entry-condition)  The looping condition is tested before executing the loop body.  Loop body may not be executed at all.

14 14 Example  While Solution sum=0; counter=1; while(counter<=n) { sum=sum+counter; counter++; }  Do-While Solution sum=0; counter=1; do { sum=sum+counter; counter++; } while(counter<=n);

15 15  If n is a positive number, both of these versions are equivalent.  But if n is 0 or negative, the two loops give different results.  In the While version, the final value of sum is 0 because the loop body is never entered.  In the Do-While version, the final value of sum is 1 because the body executes once and then the loop test is made. Example (Cont.)

16 16 Do-While Loop When the expression is tested and found to be false, the loop is exited and control passes to the statement that follows the do-while statement. Statement Expression DO WHILE FALSE TRUE

17 17 A Count-Controlled Loop SYNTAX for ( initialization ; test expression ; update ) { 0 or more statements to repeat }

18 18 The for loop contains  an initialization  an expression to test for continuing  an update to execute after each iteration of the body

19 19 Example of Repetition int num; for ( num = 1 ; num <= 3 ; num++ ) { cout << num << “Potato” << endl; }

20 20 Example of Repetition num int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl; OUTPUT ?

21 21 Example of Repetition num OUTPUT 1 int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl;

22 22 Example of Repetition num OUTPUT 1 int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl; true

23 23 Example of Repetition num int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl; OUTPUT 1 1Potato

24 24 Example of Repetition num OUTPUT 2 int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl; 1Potato

25 25 Example of Repetition num OUTPUT 2 true 1Potato int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl;

26 26 Example of Repetition num int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl; OUTPUT 2 1Potato 2Potato

27 27 Example of Repetition num OUTPUT 3 int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl; 1Potato 2Potato

28 28 Example of Repetition num OUTPUT 3 true 1Potato 2Potato int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl;

29 29 Example of Repetition num int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl; OUTPUT 3 1Potato 2Potato 3Potato

30 30 Example of Repetition num OUTPUT 4 int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl; 1Potato 2Potato 3Potato

31 31 Example of Repetition num OUTPUT 4 false 1Potato 2Potato 3Potato int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl;

32 32 Example of Repetition num  When the loop control condition is evaluated and has value false, the loop is said to be “satisfied” and control passes to the statement following the For statement. 4 false int num; for ( num = 1 ; num <= 3 ; num++ ) cout << num << “Potato” << endl;

33 33 The output was: 1Potato 2Potato 3Potato

34 34 int count ; for ( count = 4 ; count > 0 ; count -- ) { cout << count << endl; } cout << “Done” << endl; Count-controlled Loop OUTPUT: 4 3 2 1 Done

35 35 What is output? int count; for ( count = 0 ; count < 10 ; count++ ) { cout << “  ”  ; }

36 36 OUTPUT ********** NOTE: the 10 asterisks are all on one line. Why?

37 37 What output from this loop? int count; for (count = 0; count < 10; count++) ; { cout << “  ”  ; }

38 38  no output from the for loop! Why?  the ; right after the ( ) means that the body statement is a null statement  in general, the Body of the for loop is whatever statement immediately follows the ( )  that statement can be a single statement, a block, or a null statement  actually, the code outputs one * after the loop completes its counting to 10 OUTPUT

39 39 Several Statements in Body Block const int MONTHS = 12 ; int count ; float bill ; float sum = 0.0 ; for (count = 1; count <= MONTHS; count++ ) { cout << “Enter bill: ” ; cin >> bill ; sum = sum + bill ; } cout << “Your total bill is : ” << sum << endl ;

40 40 Nested For Loops For( lastNum=1; lastNum<=7; lastNum++) { for(numToPrint=1; numToPrint<=lastNum; numToPrint++) cout << numToPrint; cout << endl; }

41 41 Output  It prints the following triangle of numbers. 1 12 123 1234 12345 123456 1234567

42 42 Break Statement  break statement can be used with Switch or any of the 3 looping structures  it causes an immediate exit from the Switch, While, Do-While, or For statement in which it appears  if the break is inside nested structures, control exits only the innermost structure containing it

43 43 Continue Statement  is valid only within loops  terminates the current loop iteration, but not the entire loop  in a For or While, continue causes the rest of the body statement to be skipped--in a For statement, the update is done  in a Do-While, the exit condition is tested, and if true, the next loop iteration is begun

44 44 Be sure to note the difference between continue and break.  The Continue statement means “Abandon the current iteration of the loop, and go on to the next iteration.”  The Break statement means “Exit the entire loop immediately.”

45 45 Guidelines for Choosing a Looping Statement  If the loop is a simple count-controlled loop, the For statement is natural.  If the loop is an event-controlled loop whose body should execute at least once, a Do-While statement is appropriate.  If the loop is an event-controlled loop and nothing is known about the first execution, use a While statement.  When in doubt, use a While statement.  Using Break statement and Continue statement only after careful consideration.

46 46 Imagine using...  a character, a length, and a width to draw a box, for example,  using the values ‘&’, 4, and 6 would display &&&&&&

47 47 Write prototype for void function called DrawBox ( ) with 3 parameters. The first is type char, the other 2 are type int. void DrawBox( char, int, int ); NOTE: Some C++ books include identifiers in prototypes. Any valid C++ identifiers, as long as each is different, can be used. void DrawBox( char letter, int num1, int num2);

48 48 void DrawBox(char what, int down, int across) // 3 function parameters { int row, col; // 2 local variables for ( row = 0; row < down; row++ ) { for (col = 0; col < across; col++ ) { cout << what; } cout << endl; } return; }

49 49 #include void DrawBox (char, int, int); // prototype int main ( ) { char letter = ‘&’; DrawBox(letter, 4, 2*3); // arguments DrawBox(‘V’, 9, 3); // appear in call return 0; } THE DRIVER PROGRAM

50 50 Write a function using prototype void DisplayTable ( int ) ; // prototype The function displays a specified multiplication table. For example, the call DisplayTable(6) displays this table: 1 x 6 = 6 2 x 6 = 12 3 x 6 = 18. 12 x 6 = 72


Download ppt "1 Additional Control Structures. 2 Chapter 9 Topics  Switch Statement for Multi-way Branching  Do-While Statement for Looping  For Statement for Looping."

Similar presentations


Ads by Google