programming logic and design fifth edition, comprehensive chapter 5 looping
TRANSCRIPT
Programming Logic and Design
Fifth Edition, Comprehensive
Chapter 5Looping
Programming Logic and Design, Fifth Edition, Comprehensive 2
Objectives
• Learn about the advantages of looping
• Control loops with counters and sentinel values
• Nest loops
• Learn to avoid common loop mistakes
Programming Logic and Design, Fifth Edition, Comprehensive 3
Objectives (continued)
• Use a for loop
• Use posttest loops
• Recognize the characteristics shared by all loops
• Learn about common loop applications
Programming Logic and Design, Fifth Edition, Comprehensive 4
Understanding the Advantages of Looping
• Looping makes computer programming efficient and worthwhile
• Write one set of instructions to operate on multiple, separate sets of data
• Loop: structure that repeats actions while some condition continues
Programming Logic and Design, Fifth Edition, Comprehensive 5
Understanding the Advantages of Looping (continued)
Figure 5-1 The while loop
Programming Logic and Design, Fifth Edition, Comprehensive 6
Controlling Loops with Counters and Sentinel Values
• As long as a Boolean expression remains true, while loop’s body executes
• Must control number of repetitions to avoid an infinite loop
• Repetitions controlled by– Counter– Sentinel value
Programming Logic and Design, Fifth Edition, Comprehensive 7
Using a Definite while Loop with a Counter
• Three actions make a while loop end correctly:– Loop control variable is initialized
• Prior to entering the loop
– Loop control variable is tested• If result is true, loop body entered
– Loop control variable must be altered in loop body• while expression eventually evaluates to false
• Loop control variables altered by:– Incrementing– Decrementing
Programming Logic and Design, Fifth Edition, Comprehensive 8
Using a Definite while Loop with a Counter (continued)
Figure 5-2 A while loop that prints “Hello” four times
Programming Logic and Design, Fifth Edition, Comprehensive 9
Using a Definite while Loop with a Counter (continued)
• Definite loop: number of iterations predetermined– Also called counted loop
• Counter: numeric variable used to count number of times an event occurs
• Loop control variable may be altered by user input
• Indefinite loop: loop iterates until some condition is true– Number of iterations may vary
Programming Logic and Design, Fifth Edition, Comprehensive 10
Using an Indefinite while Loop with a Sentinel Value
• Indefinite loop: loop performed a different number of times each time the program executes
• Three crucial steps:– Starting value to control the loop must be provided– Comparison must be made using the value that
controls the loop– Within the loop, value that controls the loop must be
altered
• Loop control variable: any variable that determines whether the loop will continue
Programming Logic and Design, Fifth Edition, Comprehensive 11
Figure 5-3 Looping bank balance program
Programming Logic and Design, Fifth Edition, Comprehensive 12
Using an Indefinite while Loop with a Sentinel Value (continued)
Figure 5-4 Typical execution of the looping bank balance program
Programming Logic and Design, Fifth Edition, Comprehensive 13
Using an Indefinite while Loop with a Sentinel Value (continued)
Figure 5-5 Crucial steps that must occur in every loop
Programming Logic and Design, Fifth Edition, Comprehensive 14
Nested Loops
• Nested loops: loops within loops
• Outer loop: loop that contains the other loop
• Inner loop: loop that is contained
• Needed when values of two (or more) variables repeat to produce every combination of values
Programming Logic and Design, Fifth Edition, Comprehensive 15
Figure 5-7 Flowchart and pseudocode for AnswerSheet program
Programming Logic and Design, Fifth Edition, Comprehensive 16
Mixing Constant and Variable Sentinel Values
• Number of times a loop executes can depend on a constant or a value that varies
• May not want to repeat every pass through a loop the same number of times
• Example:– Print 100 labels for every employee
• Outer loop controlled by value of employee name• Inner loop executes 100 times
– Print variable number of labels for every employee• Outer loop controlled by value of employee name• Inner loop controlled by production level
Programming Logic and Design, Fifth Edition, Comprehensive 17
Mixing Constant and Variable Sentinel Values (continued)
Figure 5-8 Program that produces 100 labels for every employee
Programming Logic and Design, Fifth Edition, Comprehensive 18
Mixing Constant and Variable Sentinel Values (continued)
Figure 5-8 Program that produces 100 labels for every employee (continued)
Programming Logic and Design, Fifth Edition, Comprehensive 19
Figure 5-9 Program that produces a variable number of labels for every employee
Programming Logic and Design, Fifth Edition, Comprehensive 20
Avoiding Common Loop Mistakes
• Neglecting to initialize the loop control variable
• Neglecting to alter the loop control variable
• Using the wrong comparison with the loop control variable
• Including statements inside the loop that belong outside the loop
Programming Logic and Design, Fifth Edition, Comprehensive 21
Avoiding Common Loop Mistakes (continued)
• Mistake: neglecting to initialize the loop control variable– Example: get name statement removed
• Value of name unknown or garbage
• Program may end before any labels printed
• 100 labels printed with an invalid name
– labelCounter = 0 statement removed• Value of labelCounter unpredictable
• Loop might not execute
• If automatically initialized to zero, only first labels printed
Programming Logic and Design, Fifth Edition, Comprehensive 22
Figure 5-10 Incorrect logic when loop control variable initializations are removed from label-making program
Programming Logic and Design, Fifth Edition, Comprehensive 23
Avoiding Common Loop Mistakes (continued)
Figure 5-10 Incorrect logic when loop control variable altering statements are removed from label-making program (continued)
Programming Logic and Design, Fifth Edition, Comprehensive 24
Avoiding Common Loop Mistakes (continued)
• Mistake: neglecting to alter the loop control variable– Remove get name instruction from outer loop
• User never enters a name after the first one
• Inner loop executes infinitely
– Remove the statement that increments labelCounter
• Inner loop executes infinitely
• Always incorrect to create a loop that cannot terminate
Programming Logic and Design, Fifth Edition, Comprehensive 25
Avoiding Common Loop Mistakes (continued)
• Mistake: using the wrong comparison with the loop control variable– Programmers must use correct comparison– Off-by-one error– Seriousness depends on actions performed within a
loop• Overcharge insurance customer by one month
• Overbook a flight on airline application
• Dispense extra medication to patients in pharmacy
Programming Logic and Design, Fifth Edition, Comprehensive 26
Avoiding Common Loop Mistakes (continued)
• Example:– Correct: loop performed 10 times
counter = 0
while counter < 10
print “Hello”
counter = counter + 1
end while
Programming Logic and Design, Fifth Edition, Comprehensive 27
Avoiding Common Loop Mistakes (continued)
• Example (continued):– Error: loop performed 11 times
counter = 0
while counter <= 10
print “Hello”
counter = counter + 1
end while
Programming Logic and Design, Fifth Edition, Comprehensive 28
Avoiding Common Loop Mistakes (continued)
• Mistake: including statements inside the loop that belong outside the loop– Example: calculating a user’s projected weekly pay
raise• Value of weeklyPay recalculated on every pass
through the loop, although it does not change
• Inefficient, especially for complicated calculations or large numbers of calculations
Programming Logic and Design, Fifth Edition, Comprehensive 29
Figure 5-12 Pay rate projection program
Programming Logic and Design, Fifth Edition, Comprehensive 30
Figure 5-14 Improved pay rate projection program
Programming Logic and Design, Fifth Edition, Comprehensive 31
Using a for Loop
• for statement or for loop is a definite loop
• Provides three actions in one structure– Initializes– Evaluates– Increments
• Takes the form:for initialValue to finalValue
do something
endfor
Programming Logic and Design, Fifth Edition, Comprehensive 32
Using a for Loop (continued)
• Example:for count = 0 to 99
print LABEL_TEXT, name
endfor
• Initializes count to 0
• Checks count against the limit value 99
• If evaluation is true, for statement body prints the label
• Increases count by 1
Programming Logic and Design, Fifth Edition, Comprehensive 33
Using a for Loop (continued)
• while statement could be used in place of for statement
• Step value: number used to increase a loop control variable on each pass through a loop– Programming languages can:
• Require a statement that indicates the step value
• Have a step value default of 1
• Specify step value when each pass through the loop changes the loop control variable by value other than 1
Programming Logic and Design, Fifth Edition, Comprehensive 34
Using Posttest Loops
• Loop body may never execute in while loop and for loop
• Use posttest loop when loop body must execute at least once– do-until loop– do-while loop
• do-until loop executes until condition is true• do-while loop executes until condition is false
Programming Logic and Design, Fifth Edition, Comprehensive 35
Using Posttest Loops (continued)
Figure 5-15 Inner loop from label production program in Figure 5-9
Programming Logic and Design, Fifth Edition, Comprehensive 36
Using Posttest Loops (continued)
Figure 5-16 Label production program using a do-until loop
Programming Logic and Design, Fifth Edition, Comprehensive 37
Recognizing the Characteristics Shared by All Loops
• Every logical problem could be solved using only the while loop– Other forms are conveniences
• while loop– Loop-controlling question placed at beginning of
steps that repeat
• do-until loop– Loop-controlling question placed at end of steps that
repeat
Programming Logic and Design, Fifth Edition, Comprehensive 38
Recognizing the Characteristics Shared by All Loops (continued)
• Characteristics of all structured loops:– Loop-controlling question must provide entry or exit
from repeating structure– Loop-controlling question provides the only entry to
or exit from the repeating structure
• Exactly one loop-controlling value– Provides only entry to or exit from the loop
Programming Logic and Design, Fifth Edition, Comprehensive 39
Recognizing the Characteristics Shared by All Loops (continued)
Figure 5-17 Examples of unstructured loops
Programming Logic and Design, Fifth Edition, Comprehensive 40
Common Loop Applications
• Using a loop to accumulate totals– Examples:
• Business reports often include totals
• Telephone bill provides a total
• List of real estate sold and total value
• Accumulator: variable that gathers values– Similar to a counter
• Counter increments by one
• Accumulator increments by some value
Programming Logic and Design, Fifth Edition, Comprehensive 41
Common Loop Applications (continued)
• Accumulate total real estate prices– Declare numeric variable at beginning– Initialize the accumulator to 0– Read each transaction’s data record– Add its value to accumulator variable– Read the next record until eof
• Variables exist only for the life of the application– Run the application a second time, variables occupy
different memory location
Programming Logic and Design, Fifth Edition, Comprehensive 42
Common Loop Applications (continued)
Figure 5-18 Month-end real estate sales report
Programming Logic and Design, Fifth Edition, Comprehensive 43
Figure 5-19 Flowchart and pseudocode for real estate sales report program
Programming Logic and Design, Fifth Edition, Comprehensive 44
Common Loop Applications (continued)
• Using a loop to validate data– When prompting a user for data, no guarantee that
data is valid
• Validate data: make sure data falls in acceptable ranges
• Example: user enters birth month– If number less than 1 or greater than 12
• Display error message and stop the program
• Assign default value for the month
• Reprompt the user for valid input
Programming Logic and Design, Fifth Edition, Comprehensive 45
Common Loop Applications (continued)
Figure 5-20 Reprompting a user once after an invalid month is entered
Programming Logic and Design, Fifth Edition, Comprehensive 46
Common Loop Applications (continued)
Figure 5-21 Reprompting a user continuously after an invalid month is entered
Programming Logic and Design, Fifth Edition, Comprehensive 47
Summary
• When using a loop, write one set of instructions that operates on multiple, separate data
• Three steps must occur in every loop:– Initialize loop control variable– Compare variable to some value– Alter the variable that controls the loop
• Nested loops: loops within loops
• Nested loops maintain two individual loop control variables– Alter each at the appropriate time
Programming Logic and Design, Fifth Edition, Comprehensive 48
Summary (continued)
• Common mistakes made by programmers:– Neglecting to initialize loop control variable– Neglecting to alter loop control variable– Using wrong comparison with loop control variable– Including statements inside the loop that belong
outside the loop
• Most computer languages support a for statement• for loop used with definite loops
– When number of iterations is known
Programming Logic and Design, Fifth Edition, Comprehensive 49
Summary (continued)
• for loop automatically:– Initializes– Evaluates– Increments
• Use posttest loop when loop body must execute at least one time– Control variable evaluated after loop body executes
Programming Logic and Design, Fifth Edition, Comprehensive 50
Summary (continued)
• Characteristics of all structured loops:– Loop-controlling question provides entry or exit from
repeating structure– Loop-controlling question provides the only entry or
exit from repeating structure
• Accumulator: variable that gathers values
• Loops used to ensure user data is valid by reprompting the user