CS0004: Introduction to Programming Repetition – Do Loops Review A condition is… Relational Operators… a statement that can (but does not have to) include relational or logical operators that results to either True or False compare two entities. Returns either True or False. =, <>, <, >, <=, >= Logical Operators… combine two or more conditions. Return either True or False. And, Or, Not Loops So far we have used conditions in making decisions that execute a sequence of statements once. If condition Then statement(s) End If However, we can use conditions to execute a sequence of statements multiple times. A loop is used to repeatedly execute a sequence of statements a number of times. Each repetition of the loop is called a pass, or iteration. Loops can be used for validation, computing naturally repetitive calculations, take in a variable amount of data from the user, or many other tasks. Do Loops Do Loops execute the code they contain until a condition is false. Do Loops come in two forms: Pretest and Posttest. General Form of Pretest: Do While condition statement(s) Loop 1. First, it checks if condition is true. If the condition is false, then the statement(s) are not executed If the condition is true, it executes the statement(s) in the loop’s block. A. B. a. Then, it goes back to step 1. Said another way, the statement(s) are executed until condition is false. This is called Pretest because the condition comes first. Pretest Do Loop Flowchart Is the condition True? Yes Execute statements within the loop Execute statements that follow the loop No Pretest Do Loop Examples 1, 2 and 3 New Topics: Pretest Do Loop Looping used for validation Looping used for variable length user input Notes: In Example 3: count is called a counter variable. sum is called an accumulator variable. Counter Variables count how many times a loop repeats. Accumulator Variables reflect the total (accumulation of) work done by all the repetitions done in the loop. In this case it was the sum of all numbered entered The loop in this case is called a sentinel-controlled loop. A Sentinel-Controlled Loop is broken out of when a variable in its condition gets a certain value. When -1 is entered for num, -1 is called an sentinel value. Sentinel Values create conditions where a sentinel-controlled loop stops repeating. Pretest Do Loop Example 4 New Topic: Looping for calculations Note: Only use looping for calculations when you cannot easily do the calculations without looping. How would we do Example 4 without looping? Posttest Do Loop General Form of Posttest: Do statement(s) Loop While condition 1. First, it executes the statement(s) 2. Second, it checks the condition A. B. If the condition is false, then the loop ends If the condition is true, it goes back to step 1. This is called posttest because it checks the condition at the end. Posttest Do Loop Flowchart Execute statements within the loop Yes Is the condition True? No Execute statements that follow the loop Posttest Do Loop Example 1 New Topics: Posttest Do Loop When to use Posttest Until Keyword In both forms of the Do Loop, you can replace While with Until While loops while the condition is True Until loops until the condition is True Do While num <> -1 statement(s) Loop Is the same as… Do Until num = -1 statement(s) Loop Until may make more sense in some sentinel-controlled loops. Infinite Loops An infinite loop is a logical error where a loop has no way of reaching the condition where the loop stops executing, and therefore repeats indefinitely. For example: Dim num As Integer = 1 Do While num < 1 num += 1 Loop This loop will repeat forever because num will never be less than 1. This may be a simple example, but they can be more complex and harder to spot. If your program seems to stall at about the time a loop is executing, look to see if you have created an infinite loop. To stop a program from running while it is in an infinite loop, hit the “Stop Debugging” button. Closing Notes: You can end a loop prematurely by using the Exit Do statement in the body of a loop. As soon as Exit Do is executed, execution jumps immediately to the statement following the Loop statement. Just like with an if statement, variables declared inside of a loop have block-level scope, meaning they cannot be used outside of the loop. Be careful though, these variables are then going to be declared EVERY iteration of the loop.