290 likes | 394 Views
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
E N D
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 … Next • Do … Loop Until • Do 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 times Input a mark Add mark to total
For loops - a simple example • e.g. Input and add together 20 exam marks For iCount = 1 To 20 iMark = InputBox(“Enter a mark”) iTotal = iTotal + iMark Next iCount
Expanding that code ... Dim iCount, iMark, iTotal as Integer iTotal = 0 For iCount = 1 To 20 iMark = InputBox(“Enter a mark”) iTotal = iTotal + iMark Next iCount MsgBox (“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 = 0 For iCount = 2 To 100 Step 2 iSum = iSum + iCount Next 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 10 For a = 1 To 10Step 5 For a = 10 To 1 Step -1 For 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 20 For 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 Integer Dim 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 Integer DimiCount as Integer iTotal = 0 ForiCount = 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 whilecondition 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
Dim iTotal, iCount as Integer iTotal = 0 For iCount = 1 To 100 iTotal = iTotal + iCount lstNos.AddItemiTotal 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 Comparing For with Do While
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 UntiliTotal >= 100 lblTotal.Caption = iTotal
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 = iTotal Comparing the 2 deterministic loops .. May 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
Do While iTotal < 10 ………… ………… Loop Do ……………… ……………… Loop Until iTotal > 10 Comparing the 2 While loops .. Will always execute the code once, and then test if iTotal is over 10 Will not execute at all if iTotal is already 10 or more
Summary … Loops a FIXED NUMBER OF TIMES For iCount = 1 To 10 ………… Next iCount Do …………. Loop Until condition Do While condition …………. Loop ALWAYS EXECUTES CODE ONCE before 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 Integer iFactorial = 1 iNum = 6 Do iFactorial = iFactorial * iNum iNum = iNum – 1 Loop Until iNum = 1 Stop when iNum is equal to 1
Seeing how factorial ex. works Dim iNum, iFactorial as Integer iFactorial = 1 iNum = 6 Do iFactorial = iFactorial * iNum iNum = iNum – 1 Loop Until iNum = 1 iFactorial 1 iNum 6 6 5 4 30 3 120 360 2 1 720
Summarising again … Loops a FIXED NUMBER OF TIMES For … Do … Loop Until … Do While ….. Loop ALWAYS EXECUTES CODE ONCE before testing whether to loop or to stop TESTS CONDITION FIRST, then executes code if appropriate