670 likes | 771 Views
Chapter 5. Looping. 5.1 The Increment and Decrement Operators. ++ and -- are operators that add and subtract one from their operands. num = num + 1; num += 1; num++;. Program 5-1. // This program demonstrates the increment and decrement // operators. #include <iostream.h>
E N D
5.1 The Increment and Decrement Operators • ++ and -- are operators that add and subtract one from their operands. num = num + 1; num += 1; num++;
Program 5-1 // This program demonstrates the increment and decrement // operators. #include <iostream.h> void main(void) { int bigVal = 10, smallVal = 1; cout << "bigVal is " << bigVal << " and smallVal is " << smallVal << endl; smallVal++; bigVal--; Program continues…
Program continued from previous slide. cout << "bigVal is " << bigVal << " and smallVal is " << smallVal << endl; ++smallVal; --bigVal; cout << "bigVal is " << bigVal << " and smallVal is " << smallVal << endl; }
Program Output bigVal is 10 and smallVal is 1 bigVal is 9 and smallVal is 2 bigVal is 8 and smallVal is 3
Program 5-2 //This program demonstrates the prefix and postfix modes of the // increment and decrement operators. #include <iostream.h> void main(void) { int bigVal = 10, smallVal = 1; cout << "bigVal starts as " << bigVal; cout << " and smallVal starts as " << smallVal << endl; cout << "bigVal--: " << bigVal-- << endl; cout << "smallVal++: " << smallVal++ << endl; cout << "Now bigVal is: " << bigVal << endl; cout << "Now smallVal is: " << smallVal << endl; cout << "--bigVal: " << --bigVal << endl; cout << "++smallVal: " << ++smallVal << endl; }
Program Output bigVal starts as 10 and smallVal starts as 1 bigVal--: 10 smallVal++: 1 Now bigVal is: 9 Now smallVal is: 2 --bigVal: 8 ++smallVal: 3
Using ++ and -- in Mathematical Expressions a = 2; b = 5; c = a * b++; cout << a << “ “ << b << “ “ << c; Results: 2 6 10
Using ++ and -- in Relational Expressions x = 10; if ( x++ > 10) cout << “x is greater than 10.\n”; • Two operations are happening: • the value in x is tested to determine if it is greater than 10 • then x is incremented
5.2 Introduction to Loops - The while Loop • A loop is part of a program that repeats. • A while loop is a “pre test” loop - the expression is tested before the loop is executed while (expression) statement;
Program 5-3 // This program demonstrates a simple while loop. #include <iostream.h> void main(void) { int number = 0; cout << "This program will let you enter number after\n"; cout << "number. Enter 99 when you want to quit the "; cout << "program.\n"; while (number != 99) cin >> number; }
Program Output with Example Input This program will let you enter number after number. Enter 99 when you want to quit the program. 1 [Enter] 2 [Enter] 30 [Enter] 75 [Enter] 99 [Enter]
Terminating a Loop A loop that does not have a way of stopping is called an infinite loop int test = 0; while (test < 10) cout << “Hello\n”; A null statement is also an infinite loop, but it does nothing forever: while (test < 10);
Programming Style and the while Loop • If there is only one statement repeated by the loop, it should appear on the line after the while statement and be indented one additional level • If the loop repeats a block, the block should begin on the line after the while statement and each line inside the braces should be indented
5.3 Counters • A counter is a variable that is incremented or decremented each time a loop iterates.
Program 5-4 // This program displays the numbers 1 through 10 and // their squares. #include <iostream.h> void main(void) { int num = 1; // Initialize counter cout << "number number Squared\n"; cout << "-------------------------\n"; while (num <= 10) { cout << num << "\t\t" << (num * num) << endl; num++; // Increment counter } }
Program Output number number Squared -------------------------1 12 43 94 165 256 367 498 649 8110 100
Program 5-5 // This program displays the numbers 1 through 10 and // their squares. #include <iostream.h> void main(void) { int num = 0; cout << "number number Squared\n"; cout << "-------------------------\n"; while (num++ < 10) cout << num << "\t\t" << (num * num) << endl; }
Program Output number number Squared -------------------------1 12 43 94 165 256 367 498 649 8110 100
5.4 Letting the User Control the Loop • We can let the user indicate the number of times a loop should repeat.
Program 5-6 // This program averages a set of test scores for multiple // students. It lets the user decide how many. #include <iostream.h> void main(void) { int numStudents, count = 0; cout << "This program will give you the average of three\n"; cout << "test scores per student.\n"; cout << "How many students do you have test scores for? "; cin >> numStudents; cout << "Enter the scores for each of the students.\n"; cout.precision(2); Program continues…
Program continued from previous slide. while (count++ < numStudents) { int score1, score2, score3; float average; cout << "\nStudent " << count << ": "; cin >> score1 >> score2 >> score3; average = (score1 + score2 + score3) / 3.0; cout << "The average is " << average << ".\n"; } }
Program Output with Example Input This program will give you the average of three test scores per student. How many students do you have test scores for? 3 [Enter] Enter the scores for each of the students. Student 1: 75 80 82 [Enter] The average is 79. Student 2: 85 85 90 [Enter] The average is 86.67. Student 3: 60 75 88 [Enter] The average is 74.33.
5.5 Keeping a Running Total • A running total is a sum of numbers that accumulates with each iteration of a loop. The variable used to keep the running total is called an accumulator.
Program 5-7 // This program takes daily sales figures over a period of // time and calculates their total. #include <iostream.h> void main(void) { int days, count = 0; float total = 0.0; cout << "For how many days do you have sales figures? "; cin >> days; Program continues…
Program continues while (count++ < days) { float sales; cout << "Enter the sales for day " << count << ": "; cin >> sales; total += sales; } cout.precision(2); cout.setf(ios::fixed | ios::showpoint); cout << "The total sales are $" << total << endl; }
Program Output with Example Input For how many days do you have sales figures? 5 [Enter] Enter the sales for day 1: 489.32 [Enter] Enter the sales for day 2: 421.65 [Enter] Enter the sales for day 3: 497.89 [Enter] Enter the sales for day 4: 532.37 [Enter] Enter the sales for day 5: 506.92 [Enter] The total sales are $2448.15
5.6 Sentinels • A sentinel is a special value that marks the end of a list of values.
Program 5-8 // This program calculates the total number of points a // soccer team has earned over a series of games. The user // enters a series of point values, then -1 when finished. #include <iostream.h> void main(void) { int count = 0, points = 0, total = 0; cout << "Enter the number of points your team has earned\n"; cout << "so far in the season, then enter -1 when\n"; cout << "finished.\n"; Program continues…
Program continued from previous slide. while (points != -1) { count++; cout << "Enter the points for game " << count << ": "; cin >> points; if (points != -1) total += points; } cout << "The total points are " << total << endl; }
Program Output with Example Input Enter the number of points your team has earned so far in the season, then enter -1 when you are finished. Enter the points for game 1: 7 [Enter] Enter the points for game 2: 9 [Enter] Enter the points for game 3: 4 [Enter] Enter the points for game 4: 6 [Enter] Enter the points for game 5: 8 [Enter] Enter the points for game 6: -1 [Enter] The total points are 34
5.7 The do-while Loop and for Loops • In addition to the while loop, C++ also offers the do-while and for loops. • A do-while loop is similar to a while loop, but in post-test format: do statement; while (expression);
Program 5-9 //This program averages 3 test scores. It repeats as many times as // the user wishes #include <iostream.h> void main(void) { int score1, score2, score3; float average; char again; do { cout << "Enter 3 scores and I will average them: "; cin >> score1 >> score2 >> score3; average = (score1 + score2 + score3) / 3.0; cout << "The average is " << average << ".\n"; cout << "Do you want to average another set? (Y/N) "; cin >> again; } while (again == 'Y' || again == 'y'); }
Program Output with Example Input Enter 3 scores and I will average them: 80 90 70 [Enter] The average is 80. Do you want to average another set? (Y/N) y [Enter] Enter 3 scores and I will average them: 60 75 88 [Enter] The average is 74.333336. Do you want to average another set? (Y/N) n [Enter]
Program 5-10 // This program displays a menu and asks the user to make a // selection. A switch statement determines which item the // user has chosen. A do-while loop repeats the program until // the user selects item 4 from the menu. #include <iostream.h> void main(void) { int choice, months; float charges; cout.setf(ios::fixed | ios::showpoint); cout.precision(2); Program continues…
Program continued from previous slide. do { cout << "\n\t\tHealth Club Membership Menu\n\n"; cout << "1. Standard Adult Membership\n"; cout << "2. Child Membership\n"; cout << "3. Senior Citizen Membership\n"; cout << "4. Quit the Program\n\n"; cout << "Enter your choice: "; cin >> choice; if (choice != 4) { cout << "For how many months? "; cin >> months; } Program continues…
Program continued from previous slide. switch (choice) { case 1: charges = months * 40.00; cout << "The total charges are $"; cout << charges << endl; break; case 2: charges = months * 20.00; cout << "The total charges are $"; cout << charges << endl; break; case 3: charges = months * 30.00; cout << "The total charges are $"; cout << charges << endl; break; Program continues…
Program continued from previous slide. case 4: cout << "Thanks for using this "; cout << "program.\n"; break; default: cout << "The valid choices are 1-4. "; cout << "Try again.\n"; } } while (choice != 4); } Program continues…
Program Output with Example Input Health Club Membership Menu1. Standard Adult Membership2. Child Membership3. Senior Citizen Membership4. Quit the ProgramEnter your choice: 1 [Enter]For how many months 12 [Enter]The total charges are $480.00 Health Club Membership Menu1. Standard Adult Membership2. Child Membership3. Senior Citizen Membership4. Quit the ProgramEnter your choice: 4 [Enter]Thanks for using this program.
The for Loop • Ideal for situations that require a counter because it has built-in expressions that initialize and update variables. for (initialization; test; update) statement;
Program 5-11 // This program displays the numbers 1 through 10 and // their squares. #include <iostream.h> void main(void) { int num; cout << “Number Number Squared\n"; cout << "-------------------------\n"; for (num = 1; num <= 10; num++) cout << num << "\t\t" << (num * num) << endl; }
Program Output Number Number Squared -------------------------1 12 43 94 165 256 367 498 649 8110 100
Omitting the for Loop’s Expressions int num = 1; for ( ; num <= 10; num++) cout << num << “\t\t” << (num * num) << endl;
Using initialization and update lists You may need to perform more than one statement in the initialization part of a for loop. In that case, just separate the statements with commas.
Program 5-12 // This program takes daily sales figures for one week // and calculates their total. #include <iostream.h> void main(void) { const int days = 7; int count; float total; for (count = 1, total = 0.0; count <= days; count++) { float sales; cout << "Enter the sales for day " << count << ": "; Program continues…
Program continued from previous slide. cin >> sales; total += sales; } cout.precision(2); cout.setf(ios::fixed | ios::showpoint); cout << "The total sales are $" << total << endl; }
Program Output with Example Input Enter the sales for day 1: 489.32 [Enter] Enter the sales for day 2: 421.65 [Enter] Enter the sales for day 3: 497.89 [Enter] Enter the sales for day 4: 532.37 [Enter] Enter the sales for day 5: 506.92 [Enter] Enter the sales for day 6: 489.01 [Enter] Enter the sales for day 7: 476.55 [Enter] The total sales are $3413.71
5.8 Other forms of the update expression • Incrementing the counter by something besides 1: for(number = 2; number <= 100; number +=2) cout << number << endl; // print the even numbers 2 – 100 • Going backwards: for(number = 10; number >= 0; number--) cout << number << endl; //count from 10 to 0 • A stand-alone for loop //This one prints the integers from 1 to 10 for(number = 1; number <= 10; cout << number++) • There are quite a few variations, try some of your own!
5.8 Focus on Software Engineering: Deciding Which Loop to Use • The while Loop • A pre-test loop. • Use when you do not want the loop to iterate if the condition is false from the beginning. • Ideal if you want to use a sentinel. • The do-while Loop • A post-test loop. • Use if you always want the loop to iterate at least once. • The for Loop • A pre-test loop. • Automatically executes an update expression at the end of each iteration. • Ideal for situations where a counter variable is needed. • Used when the exact number of required iterations is known.
5.9 Focus on Software Engineering: Nested Loops • A loop that is inside another loop is called a nested loop.