340 likes | 522 Views
Chapter 8 Repetition Statements. Spring 2014. Chapter 8 Repetition Statements. Introduction. Iteration - process of looping or the repetition of one or more statements Loop body - the statement, or statements, that will be repeated. 8.1 General Repetition Concepts.
E N D
Chapter 8 Repetition Statements Spring 2014
Introduction • Iteration - process of looping or the repetition of one or more statements • Loop body -the statement, or statements, that will be repeated
8.1 General Repetition Concepts • Two different categories of loops • Pre-test: Test condition first - complete the body of the loop if condition is true • Post-test: Test condition after body has executed once - body will only be repeated if the condition is true
8.1 General Repetition Concepts • Looping structures must have the following: • Variable with an initial value that controls whether the body of the loop is executed (i.e., control variable) • Conditional expression involving control variable • Statement within the body where control variable is modified each time the body of the loop is executed
8.1 General Repetition Concepts • Infinite loop– a loop that continuously executes - the program or loop has to be terminated by the user or programmer • Usually an error situation • Most common cause - failure to manipulate the control variable • In Windows - pressing Ctrl + C causes program to stop execution
8.1 General Repetition Concepts • Nested loop- loop embedded in another loop • Almost any statement can be placed in loop body - including other loops or conditional statements • Once finished, flow transfer's to the next statement following the loop
8.1 General Repetition Concepts • Three loop structures • while loop: • while (<condition>) <action> • do while loop: • do <action> while <condition>; • for loop: • for (<init-expr>; <condition>; <post-loop-expr>) <action>
8.2 The while Loop • Pre-test loop Syntax: while ( <condition> ) <action> • Action, or body, will continue to execute while the condition remains true • If the body needs to include multiple statements, surround them (action) with curly braces
8.2 The while Loop • Sometimes see a loop written as:while ( 1 ){ ... } • The numeric literal 1 is treated as a true condition and never changes – causing an infinite loop
8.2 The while Loop • while ( 1 ){ ... } • Requires additional statement within the body of the loop to terminate it • Although there are reasons to use this type of loop, it should only be used by experienced programmers and then only with due consideration
8.2 The while Loop • char again ='\0'; • int operand1 = 0, operand2 = 0; • cout << "\nDo you wish to multiply two numbers (y/n)? "; • cin >> again; // Priming read • while ( again == 'y' || again == 'Y')// Notice no semicolon • {// Start of the loop body (action) • cout <<"Enter first number: "; • cin >> operand1; • cout <<"Enter second number: "; • cin >> operand2; • cout <<"Result: "<< operand1 <<" * " << operand2 • <<" = "<< operand1 * operand2 << endl; • // Don’t forget to change the control variable • cout <<"\nDo you wish to multiply two more numbers (y/n)? "; • cin >> again; • } // End of the loop body (action) • cout << "The End"<< endl;
8.2 The while Loop • Priming read - a prompt prior to encountering a loop • Ensures the control variable has a user provided value before evaluating the condition • Must be a corresponding prompt as the last statement in the body of the loop
8.3 The do-while Loop • Post-test loop (the body of the loop always executes at least once) • Syntax: • do <action> while ( <condition> ); • If the body needs to include multiple statements, surround them with curly braces
8.3 The do-while Loop • char menu_choice; • floatnumber; • cout <<"Please enter a number: "; • cin >> number; • do • { cout <<"\n1) Square the Number\n" • <<"2) Cube the Number\n" • << "3) Exit\n\n" • <<"Please enter menu choice: " << endl; • cin >> menu_choice; • switch( menu_choice ) • { case'1': • cout << number <<" Squared = " • << number * number << endl; • break; • case'2': • cout << number <<" Cubed = " • << number * number * number << endl; • break; • case'3': • cout <<"Goodbye"<< endl; • break; • default: • cout << "Invalid menu option" << endl;} • }while ( menu_choice !='3');// Notice the semicolon
8.4 The for Loop • Generally used when the specific number of iterations are known • Both while loops and for loops are pre-test loops - could be used interchangeable
8.4 The for Loop • Syntax: • for ( <init-expr> ; • <condition> ; • <post-loop-expr> ) • <action>
8.4 The for Loop • for ( <init-expr> ; • <condition> ; • <post-loop-expr> ) • <action> • Four sections: • Requires the two semicolons (;) and the action • Can include multiple statements separated by commas placed within both the <init-expr> and <post-loop-expr> sections
8.4 The for Loop • Order in which the parts are evaluated or executed: • <init-expr> • <condition> • <action> (if true condition) • <post-loop-expr> • <condition> • The <init-expr> section is only executed once
8.4 The for Loop • Variable(s) declared in <init-expr> section only visible within the body of the loop • Not all compilers adhere to this standard - but you should
8.4 The for Loop • Common errors students make - put a semicolon after the closing parenthesis • Although legal, semicolon terminates the loop • In effect - takes the place of the body of the loop • Often a difficult error to find
8.4 The for Loop • for(inti = 0; i < 5; i++ ) • cout << i <<' '; • // Output • 0 1 2 3 4
8.4 The for Loop • // Example 1 • for (int i = 0; i < 5; i++ ) // No semicolon • cout << i << endl; • // Example 2 • // Notice the multiple expressions • for ( inti = 0, j = 5; i < 5; i++, j-- ) • cout << i << ' ' << j << endl; • // Example Output • // Ex. 1 // Ex. 2 • 0 0 5 • 1 1 4 • 2 2 3 • 3 3 2 • 4 4 1
8.4 The for loop • int sum = 0, value; • for (inti = 0; i < 5; i++ )// No semicolon • { • cout << "Enter value " << i + 1 << ": "; • cin >> value; • sum += value; • } • cout << "The sum of the five values is: " << sum << endl; • // Example Output • Enter value 1: 4 • Enter value 2: 7 • Enter value 3: 3 • Enter value 4: 12 • Enter value 5: 99 • The sum of the five values is: 125
8.4.1 Nested for Loops • for loops can be nested • Used in many algorithms • Important when using multi-dimensional arrays
8.4.1 Nested for Loops • for(int row = 0; row < 5; row++ ) • { • for ( intcol = 0; col < 5; col++ ) • cout << col <<' '; • cout << endl; • } • // Example Output • 0 1 2 3 4 • 0 1 2 3 4 • 0 1 2 3 4 • 0 1 2 3 4 • 0 1 2 3 4
8.4.1 Nested for Loops • for ( int row = 0; row < 5; row++ ) • { • for (intcol = row; col < 5; col++ ) • cout << col <<' '; • cout << endl; • } • // Example Output • 0 1 2 3 4 • 1 2 3 4 • 2 3 4 • 3 4 • 4
8.5 Breakpoints and Loops • Debugging loops: • Time consuming and annoying if necessary to step through the loop • Breakpoints add functionality to break or stop execution, based upon a condition or after a line of code has been encountered a certain number of times
8.5 Breakpoints and Loops • Right clicking on a breakpoint shows popup menu that allows setting breakpoint properties
8.5 Breakpoints and Loops • The Breakpoint Condition allows setting a condition that when true, stops the loop
8.5 Breakpoints and Loops • Can also stop execution after a breakpoint has been encountered a specific number of times
8.7 C – The Differences Illegal in C to declare variables in the initialization section of a for loop All variables in C must be declared at the beginning of a block, right after an opening curly brace C99 specifications allow the C++ conventions for variable declarations
8.7 C – The Differences #include<stdio.h> int main() { //Legal in both C++ and C: int count; for ( count = 0; count < 5; count++ ) printf( "%d\n", count ); // Legal in C++ (and C99) but not in older C: // for ( int i = 0; i < 5; i++ ) // cout << i << endl; return 0; }