Title: Repetition
1Chapter 6
2Outline Objectives
- Loop Structure
- Elements of a Loop Structure
- Processing Lists of Data with Do Loops
3Types of LOOP Structures
- Do While . Loop
- Do Until Loop
- For Next loop
4Basic Definition
- Looping the process of repeating a series of
statements multiple times until a criteria is met
5Basic Components of Loops
- Loop control variable A variable used to
determine whether a loop will be executed - Loop body The statement (s) that are executed
each time a loop repeats
6The Do While . Loop
- Do While condition is true
- statement(s)
- Loop
7Flowchart for a Do While Loop
Is the condition true
No
Yes
Execute statements within the loop
Execute statements that follow the loop
8Example (Displays the numbers from 1 through 10)
- Private Sub cmdDisplay_Click()
- Dim num As Integer
- ' Display the numbers from 1 to 10
- num 1
- Do While num lt 10
- picNumbers.Print num
- num num 1
- Loop
- End Sub
9The Do While . Loop
- Is executed as long as the condition is True.
- If condition is False then the next statement
after the Loop is executed.
10Controlling Loops
- Methods of controlling loops
- Counter-controlled loops
- repeat a specific number of times
- Event-controlled loops
- repeat until something happens in the loop body
to change the value of loop control variable.
11Example of event-controlled loops
- passWord ""
- Do While passWord ltgt "SHAZAM"
- passWord UCase(InputBox("What is the
password?")) - Loop
12Counter-controlled Loops
- Is useful when the programmer knows how many
times the loop should be executed. - Initialize the counter by setting it to a
beginning value before entering the loop. - The counter is incremented (or decremented) by
the same value during each repetition.
13Example
- num 1
- Do While num lt 10
- picOutput.Print num
- num num 1
- Loop
14Do Until . Loop
- Is executed until the condition becomes True
- Any Do While. Loop can be rewritten as a Do
Until .. Loop
15Example (requires the user to give a password
before opening a file)
- Private Sub cmdDisplay_Click()
- Dim passWord As String, info As String
- If UCase(txtName.Text) "SECRET.TXT" Then
- Do
- passWord UCase(InputBox("What is the
password?")) - Loop Until passWord "SHAZAM"
- End If
- Open txtName.Text For Input As 1
- Input 1, info
- picItem.Cls
- picItem.Print info
- Close 1
- End Sub
16Example (years to deplete a saving account)
- Private Sub cmdEstimate_Click()
- Dim amt As Single, yrs As Integer
- ' Years to deplete savings account
- picResult.Cls
- amt 15000
- yrs 0
- Do
- amt amt 1.05 - 1000
- yrs yrs 1
- Loop Until amt lt 0
- picResult.Print "It takes" yrs "years to
deplete the account." - End Sub
17Comparing While and Until Loops
- The Do While Loop executes while the condition
is true - The Do Until.. Loop executes until the condition
is true - Both can be used to create any type of loop
18EOF Function
- EOF(n) is True if the end of the file having
reference number n has been reached. Otherwise,
it is False - Example
- Open PHONE.TXT for Input As 1
- Do While Not EOF(1)
- Input 1, nom, phoneNum
- picOutput.Print nom, phoneNum
- Loop
- Close 1
19Counters and Accumulators
- A counter is a numeric variable that keeps track
of the number of items that have been processed
in a loop. - An accumulator is a numeric variable that holds a
sub-total during multiple passes through a loop.
20Example Counter Accumulator
- Private Sub cmdAnalyze_Click()
- Dim numCoins As Integer, sum As Single, value
As Single - Open "COINS.TXT" For Input As 1
- numCoins 0
- sum 0
- Do While Not EOF(1)
- Input 1, value
- numCoins numCoins 1
- sum sum value
- Loop
- picValue.Print "The value of the" numCoins
"coins is" sum "cents." - End Sub
21Compare
- Do While . Loop
- Do . Loop While
- Do . Loop Until
- Do Until . Loop
22Review
How many times will the following loops execute?
- num 11
- Do
- picOutput.Print num
- num num 1
- Loop until num lt 10
- num 11
- Do While num lt 10
- picOutput.Print num
- num num 1
- Loop
23Review
Which loop is infinite?
Do i i 1 Loop While i lt 10
- Do While i lt 10
- i i 1
- Loop
Do i i 10 Loop Until i lt 10
Do Until i lt 10 Loop
24For Next Loop
- A loop where the number of iterations is
determined by a range of values for a numeric
variable - Syntax
- For controlVariable initial To terminal
- statement(s)
- Next controlVariable
25Example
- Private Sub cmdDisplayTable_Click()
- Dim i As Integer
- Display a table of the first 5 numbers and
their squares - For i 1 To 5
- picTable.Print i i 2
- Next i
- End Sub
Control variable
Terminating value
Initial Value
26Example
- Dim numVar As Integer
- For numVar 1 To 5 Step 2
- picOutput.Print numVar
- Next numVar
- Output 1 3 5
27When a For statement is encountered
- The control variable is assigned the initial
value. - After each loop iteration, the step value is
added to the value of the control variable. (If
there is no step value, 1 is added.) - Iteration continues until the terminating value
is exceeded.
28Rules for Using For ... Next loop
- You should never modify the value of the loop
control variable in the loop body. - Each For loop must end with a Next statement.
29Example
- Private Sub cmdDisplay_Click()
- Dim i As Integer
- For i 1 To 10
- picOutput.Print ""
- Next i
- End Sub
- Output
30Example
- Private Sub cmdDisplay_Click()
- Dim i As Integer, stars As Integer
- stars Val(InputBox("Row length (1-20) "))
- For i 1 To stars
- picOutput.Print ""
- Next i
- End Sub
31Example
- Dim numVar As Integer
- For numVar 8 To 1 Step -2
- picOutput.Print numVar
- Next numVar
- Output 8 6 4 2
32Nested Loops
- For outer 1 To 4
- For inner 1 To 2
- ..
- ..
- Next inner
- Next outer
33Example Display a 10x10 rectangle of stars
- Private Sub cmdDisplay_Click()
- Dim i As Integer, j As Integer
- For i 1 To 10
- For j 1 To 10
- picOutput.Print ""
- Next j
- picOutput.Print
- Next i
- End Sub
34Review
- For i -5 To -1 Step - 2
- picOutput.Print i
- Next i
- picOutput.Print i
For i 1 To 5 Step 2 ii1
picOutput.Print i Next i picOutput.Print i
35Review
- Private Sub cmdDisplay_Click()
- Dim i As Integer, j As Integer
- For i 1 To 10
- For j i To 10
- picOutput.Print ""
- Next j
- picOutput.Print
- Next i
- End Sub
Private Sub cmdDisplay_Click() Dim i As
Integer, j As Integer For i 1 To 10
For j 1 To i picOutput.Print
"" Next j picOutput.Print
Next i End Sub