1.12k likes | 1.22k Views
Lecture 4A. Repetition. Richard Gesick. Overview. Iteration 3 kinds of loops for while do while Infinite Loops. Example: Computing Velocity over a Range of Time. Sequential structures are not well suited for computing the same quantities repeatedly.
E N D
Lecture 4A Repetition Richard Gesick
Overview Iteration 3 kinds of loops for while dowhile Infinite Loops
Example: Computing Velocity over a Range of Time. • Sequential structures are not well suited for computing the same quantities repeatedly. • Flow charts and pseudocode are useful to describe repetition.
Looping In computing, we often need to perform the same operations on multiple items. Typically, these tasks follow this pattern: initialize values (set total to 0) process items one at a time (add price to total) report results (report total) The flow of control that programmers use to complete jobs with this pattern is called looping, or repetition.
Iteration One thing that computers do well is repeat commands Programmers use loops to accomplish this 3 kinds of loops in C++ for loop while loop do while loop
Criteria for loops Usually have some initial condition Starting a counter Beginning in a certain state Must have a test to continue Must make progress towards finishing
Loops in Everyday Life Bad children are told to write sentences on the board “I will not pour Clorox in the fish tank” Have to write this sentence either A certain number of times Until the teacher is happy As many as you can during break
The for Loop Ideal when you know the number of iterations to perform before the loop begins Examples: Find the sum of 5 numbers Find the maximum of 20 numbers Print the odd numbers from 1 to 10
The for loop Good when you know exactly how many times you need to execute something Has format: for (<initialization>; <test to continue>; <increment>) { // everything in here is what is repeated // over and over again } Initialization is where the counter is given a starting value The test determines whether or not to continue The increment can be any amount, including negative, and occurs after the loop statements execute
More for Loop Syntax for ( initialization; loop condition; loop update ) { // loop body } Notes: semicolons separate terms in the loop header no semicolon follows the loop header curly braces are required only if more than one statement is in the loop body
for Loop Flow of Control The initialization statement is executed (once only). The loop condition is evaluated. If the condition is true, the loop body is executed. The loop update statement is executed, and the loop condition is reevaluated (#2). And so on, until the condition is false.
Satisfying the Teacher Example: 1000 sentences? No problem… intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<“I will not pour Clorox…”<<endl; } // Remember, counter++ is the same as // counter = counter + 1
“But I want them numbered!” No problem… intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; }
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } counter 1
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } counter true 1
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } Output: 1 I will not pour Clorox in the Fish Tank counter 1
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } counter 2
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } counter true 2
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } Output: 2 I will not pour Clorox in the Fish Tank counter 2
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } counter 3
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } counter true 3
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } Output: 3 I will not pour Clorox in the Fish Tank counter 3
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } counter 4
When will it end? We see that this will go on for a while It’s a little more interesting later around 1000
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } counter true 999
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } Output: 999 I will not pour Clorox in the Fish Tank counter 999
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } counter 1000
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } counter true for last time 1000
Why this works(are we finished?) intcounter; for(counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } Output: 1000 I will not pour Clorox in the Fish Tank counter 1000
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } counter 1001
Why this works intcounter; for (counter = 1; counter <= 1000; counter++) { cout<<counter<<“ I will not pour…”<<endl; } // Jump down here and continue … … counter false 1001
Final Output 1 I will not pour Clorox in the fish tank. 2 I will not pour Clorox in the fish tank. 3 I will not pour Clorox in the fish tank. 4 I will not pour Clorox in the fish tank. . . . 999 I will not pour Clorox in the fish tank. 1000 I will not pour Clorox in the fish tank.
Another Example of Repetition int num; for ( num = 1 ; num <= 3; num++) { cout<<num << “ Potato”<<endl; }
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; num ? OUTPUT
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; num 1 OUTPUT
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; 1 num true OUTPUT
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; num 1 OUTPUT 1Potato
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; num 2 OUTPUT 1Potato
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; 2 num true OUTPUT 1Potato
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; num 2 OUTPUT 1Potato 2Potato
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; num 3 OUTPUT 1Potato 2Potato
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; 3 num true OUTPUT 1Potato 2Potato
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; num 3 OUTPUT 1Potato 2Potato 3Potato
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; num 4 OUTPUT 1Potato 2Potato 3Potato
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; 4 num false OUTPUT 1Potato 2Potato 3Potato
int num; for ( num = 1 ; num <= 3; num++) cout<<num << “ Potato”<<endl; 4 num false 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.
The output was: 1Potato 2Potato 3Potato
int count ; for ( count = 4 ; count > 0 ; count-- ) { cout<<count<<endl; } cout<<“Done”<<endl; OUTPUT: 4 3 2 1 Done
The while Loop The while loop is designed for repeating a set of operations on data items when we don't know how many data items there will be. We will get some signal when we have reached the end of the items to process. The end of data items could be indicated by a special input value called a sentinel value or by reaching the end of a file Receiving the signal is an event; we call this event-controlled looping