developing software applications iteration in visual basic (loops)
TRANSCRIPT
Developing Software Applications
Iteration in Visual Basic(Loops)
Looping
Programs often have a requirement to process a set of instructions several times
This sequence might be for a fixed number of times
Or whether it is repeated might depend on a particular condition
This means that there are a number of choices ………..
Iteration Constructs in VB
For … NextDo … Loop UntilDo While … Loop
Iteration constructs are of 3 types
Repeat a block of code FOR a given number of times
WHILE some condition is true, repeat a block of code
Repeat a block of code UNTIL a condition is true
For loops
The simplest loop
Used when we know exactly how many times we want to repeat things
e.g. Input and add together 20 exam marks
For loops - in structured English
e.g. Input and add together 20 exam marks
For 20 timesInput a markAdd mark to total
For loops - a simple example
e.g. Input and add together 20 exam marks
For iCount = 1 To 20iMark = InputBox(“Enter a mark”)iTotal = iTotal + iMark
Next iCount
Expanding that code ...
Dim iCount, iMark, iTotal as Integer
iTotal = 0For iCount = 1 To 20iMark = InputBox(“Enter a mark”)iTotal = iTotal + iMarkNext iCountMsgBox (“Sum of marks is “ & iTotal)
A fuller syntax of the For loop ..
For <counter> = <start> To <finish> Step <increment>
<statements>Next <counter>
e.g.iSum = 0For iCount = 2 To 100 Step 2
iSum = iSum + iCountNext iCount
Adds the even numbers
2, 4, 6, .. 100
Step can be decreasing …
For iLoopCounter = x To y [Step]Perform functions
Next
For a = 1 To 10For a = 1 To 10 Step 5
For a = 10 To 1 Step -1For a = 10 To 1 Step -5
Example: add the values of numbers 1 to 10
iTotal = 0
For iLoopCounter = 1 to 10
iTotal = iTotal + iLoopCounter
Next
Nested For Loops …
For iCount1 = 1 to 20For iCount2 = 1 to 100
statements …..Next iCount2
Next iCount1
In nested For loops, the Next statement must implicitly state which loop is progressing next
Demonstrating the For loop with a ListBox
Dim iTotal as IntegerDim iCount as Integer
iTotal = 0 For iCount = 1 To 10 iTotal = iTotal + iCount lstNos.AddItem iTotal Next
lblTotal.Caption = iTotal
Question
What about if we want the loop to stop when the total exceeds 100 ?
Stopping the For loop
Dim iTotal as IntegerDim iCount as Integer
iTotal = 0 For iCount = 1 To 100 iTotal = iTotal + iCount lstNos.AddItem iCount & " , " & iTotal If iTotal > 100 Then iCount = 101 End If Next
lblTotal.Caption = iTotal
Setting iCount to a value >100
causes this For loop to stop
trivial example
works, but is not very elegant code
using the IF the statement to force the exit of the FOR loop is not considered to be “good code” … it is bad practice
Do While loop
Do while condition
statement(s)Loop
Back to earlier example
iTotal = 0 iCount = 1
Do While iTotal < 100 iTotal = iTotal + iCount lstNos.AddItem iCount & " , " & iTotal iCount = iCount + 1 Loop
lblTotal.Caption = iTotal
Comparing For with Do While
Dim iTotal, iCount as Integer
iTotal = 0
For iCount = 1 To 100iTotal = iTotal +
iCount lstNos.AddItem iTotal If iTotal > 100 Then iCount = 101 End If Next lblTotal.Caption = iTotal
Dim iTotal, iCount as Integer
iTotal = 0
iCount = 1 Do While iTotal < 100 iTotal = iTotal +
iCount lstNos.AddItem
iTotal iCount = iCount + 1 Loop
lblTotal.Caption = iTotal
Second syntax –Do …….. Loop Until ….
Dim iTotal, iLoopCount as Integer iTotal = 0 iLoopCount = 1
Do iTotal = iTotal + iLoopCount lstNos.AddItem iLoopCount & " , " & iTotal iLoopCount = iLoopCount + 1 Loop Until iTotal >= 100
lblTotal.Caption = iTotal
Comparing the 2 deterministic loops ..
iTotal = 0 iCount = 1
Do While iTotal < 10 iTotal = iTotal +
iCount lstNos.AddItem
iTotal iCount = iCount + 1 Loop
lblTotal.Caption = iTotal
iTotal = 0
iLoopCount = 1
Do iTotal = iTotal +
iLoopCount lstNos.AddItem iTotal iLoopCount = iLoopCount
+ 1 Loop Until iTotal > 10
lblTotal.Caption = iTotalMay look the same … but the results may be different !!
How many times is this loop executed ?
Dim iTotal, iLoopCount As Integer
iTotal = 0 iLoopCount = 1
Do While iTotal < 10 iTotal = iTotal + iLoopCount lstNos.AddItem iLoopCount & " , " & iTotal iLoopCount = iLoopCount + 1 Loop
Label1.Caption = iTotal
How many times is this loop
executed ?
Dim iTotal, iLoopCount As Integer
iTotal = 0 iLoopCount = 1
Do iTotal = iTotal + iLoopCount
lstNos.AddItem iLoopCount & " , " & iTotal iLoopCount = iLoopCount + 1 Loop Until iTotal > 10
lblTotal.Caption = iTotal
Comparing the 2 While loops ..
Do While iTotal < 10
………… …………
Loop
Do
………………………………
Loop Until iTotal > 10
Will not execute at all if iTotal is already 10 or more
Will always execute thecode once, and then testif iTotal is over 10
Summary …
For iCount = 1 To 10…………
Next iCount
Do………….
Loop Until condition
Do While condition………….
Loop
Loops a FIXED NUMBER OF TIMES
ALWAYS EXECUTES CODE ONCEbefore testing whether to loop
TESTS CONDITION FIRST,then executes code if appropriate
Do …. Loop Until ...example
Calculating a factorial
e.g Factorial 6 (mathematically, 6! )
= 6 * 5 * 4 * 3 * 2 * 1
could be coded like this …..
factorial ex. using Do … Loop Until …
Dim iNum, iFactorial as IntegeriFactorial = 1iNum = 6
Do iFactorial = iFactorial * iNumiNum = iNum – 1
Loop Until iNum = 1
Stop when iNumis equal to 1
Seeing how factorial ex. works
Dim iNum, iFactorial as IntegeriFactorial = 1iNum = 6
Do iFactorial = iFactorial *
iNumiNum = iNum – 1
Loop Until iNum = 1
iFactorial1
iNum6
6 5
30 4
120 3
360 2
720 1
Summarising again …
For …
Do … Loop Until …
Do While ….. Loop
Loops a FIXED NUMBER OF TIMES
ALWAYS EXECUTES CODE ONCEbefore testing whether to loop or to stop
TESTS CONDITION FIRST,then executes code if appropriate