Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Programming in C++ Dale/Weems/Headington Chapter 9 Additional Control Structures (Switch, Do..While, For statements)

Similar presentations


Presentation on theme: "1 Programming in C++ Dale/Weems/Headington Chapter 9 Additional Control Structures (Switch, Do..While, For statements)"— Presentation transcript:

1 1 Programming in C++ Dale/Weems/Headington Chapter 9 Additional Control Structures (Switch, Do..While, For statements)

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

3 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 ; }

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

5 5 Control in Switch Statement l 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. l 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. l Forgetting to use break can cause logical errors because after a branch is taken, control proceeds sequentially until either break or the end of the switch statement occurs.

6 6 Do-While Statement Is a looping control structure in which the loop condition is tested after each iteration of the loop. SYNTAX do { Statement } while ( Expression ) ; Loop body statement can be a single statement or a block.

7 7 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 whitespace if ( ( response != ‘ y ’ ) && ( response != ‘ n ’ ) ) cout << “ Please type y or n : ? ” ; } while ( ( response != ‘ y ’ ) && ( response != ‘ n ’ ) ) ; } Function Using Do-While

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

9 9 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

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

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

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

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

14 14 What happens? l num is initialized to 1 l expression num <= 3 is evaluated as true body is executed displaying 1Potato l update executed gives num value 2 l expression num <= 3 is evaluated as true body is executed displaying 2Potato l update executed gives num value 3 l expression num <= 3 is evaluated as true body is executed displaying 3Potato l update executed gives num value 4 l expression num <= 3 is evaluated as false l so loop ends

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

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

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

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

19 19 l No output from the for loop! Why? l The ; right after the ( ) means that the body statement is a null statement l In general, the Body of the for loop is whatever statement immediately follows the ( ) l That statement can be a single statement, a block, or a null statement. l Actually, the code outputs one * after the loop completes its counting to 10. OUTPUT

20 20 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 << “ our total bill is : “ << sum << endl ;

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

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

23 23 Imagine using... l a character, a length, and a width to draw a box. For example, l using the values 4, and 6 would display &&&&&&

24 24 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);

25 void DrawBox(char What, int Down, int Across) // 3 formal parameters { int row, col; // 2 local variables for ( row = 0; row < Down; row++ ) { for (col = 0; col < Across; col++ ) { cout << What; } cout << endl; } return; }

26 26 #include void DrawBox (char, int, int); // prototype int main (void) { char letter = ‘ A ’ ; DrawBox(letter, 4, 2*3); // actual parameters DrawBox( ‘ B ’, 9, 3); // appear in call return 0; } THE DRIVER PROGRAM

27 27 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 Programming in C++ Dale/Weems/Headington Chapter 9 Additional Control Structures (Switch, Do..While, For statements)"

Similar presentations


Ads by Google