unit 11
play

Unit 11 Nested Loops 2 What Can Go Inside? What kind of code can - PowerPoint PPT Presentation

1 Unit 11 Nested Loops 2 What Can Go Inside? What kind of code can we put in the body of a loop? ANYTHINGeven other loops while ( condition ) for( init; condition; update ) { { // What can go here? // What can go here? } } init


  1. 1 Unit 11 Nested Loops

  2. 2 What Can Go Inside? • What kind of code can we put in the body of a loop? • ANYTHING…even other loops while ( condition ) for( init; condition; update ) { { // What can go here? // What can go here? } } init False condition False condition True True What code can we put in the body of a while Block For Block loop? Statements Statements Following Update statements Following

  3. 3 Nested Loops • Loops can contain other loops in their body False cond1 while (cond1) { True // code1 code1 while(cond2) { False // code 2 } cond2 // code3 True } code2 code3 Following statements

  4. 4 Nested Loop Sequencing • Key Idea : The inner loop runs in its entirety for each iteration of the outer loop False T T Cond1: F cond1 while (cond1) { 1 9 15 True 2 // code1 10 Cond2: T T F code1 while(cond2) { 5 3 7 13 11 Cond2: T F // code 2 12 4 6 False } cond2 // code3 8 14 True } code2 16 code3 Following statements

  5. 5 Nested Loops Example 1 • When you write loops int main() { consider what the body int secret, guess; char again = 'y'; of each loop means in // outer loop while(again == 'y') an abstract sense { // Choose secret num. 0-19 secret = rand() % 20; – The body of the outer guess = -1; // inner loop loop represents 1 game while(guess != secret) 1 game (and we repeat that { 1 turn cout << "Enter guess: "; over and over) cin >> guess; } – The body of the inner cout << "Win!" << endl; cout << "Play again (y/n): "; loop represents 1 turn cin >> again; (and we repeat turn } return 0; after turn) }

  6. 6 Nested Loops Example 2 • Key idea : Perform all int main() { iterations of the inner loop for(int i=0; i < 2; i++){ for(int j=0; j < 3; j++){ before starting the next cout << i << " " << j << endl; } iteration of the outer loop } } – Said another way: The inner loop executes completely for i j each single iteration of the outer loop • Trace through the execution of this code and show what will be printed

  7. 7 Nested Loops Example 3 • Trace through the execution int main() { of this code and show what int x = 0; cin >> x; will be printed if the user while( x%2 == 0 ){ for(int i=x; i >= 0; i -= 2){ types in: 8 4 7 6 cout << i << " "; } cout << endl; cin >> x; } cout << "Done" << endl; return 0; } Program Output:

  8. 8 break Statement with Nested Loops • break will only exit the inner- char again = 'y'; while(again == 'y' ) most loop, not all the nested { /* Give the user 10 turns loops. but stop if guess right */ • This can be exactly what you int i, guess, secretNum = /*..*/ for(i=0; i < 10; i++) want in some cases { cin >> guess; • In other cases, you may want to if(guess == secretNum){ break ; break out of all loops, but } realize a single 'break' } if( i == 10 ) statement cannot do that. cout << "You lose!" << endl; else – Instead must change a variable so cout << "You win!" << endl; that the outer loop condition will cin >> again; fail }

  9. 9 Tips • Nested loops often help us represent and process multi-dimensional data – 2 loops allow us to process data that corresponds to 2 dimension (i.e. rows/columns) – 3 loops allow us to process data that corresponds to 3 dimensions (i.e. rows/columns/planes)

  10. 10 More Practice • cpp/nestedloops/rectangle • cpp/nestedloops/flag • cpp/nestedloops/etox-range • cpp/nestedloops/sphere

  11. 11 SOLUTIONS

  12. 12 Nested Loops Example 2 • Trace through the execution int main() { of this code and show what for(int i=0; i < 2; i++){ for(int j=0; j < 3; j++){ will be printed cout << i << " " << j << endl; } } } i j 0 0 1 2 Program Output: 1 0 0 0 1 0 1 2 0 2 1 0 1 1 1 2

  13. 13 Nested Loops Example 3 • Trace through the execution int main() { of this code and show what int x = 0; cin >> x; will be printed if the user while(x%2 == 0){ for(int i=x; i >= 0; i -= 2){ types in: 8 4 7 6 cout << i << " "; } cout << endl; cin >> x; } cout << "Done" << endl; return 0; } Program Output: 8 6 4 2 0 4 2 0 Done

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend