To variabler, element (i og j) i en tabell, bytter innebyrdes verdi med mønsteret (s. 356)
tmp = a(j)
a(j) = a(i)
a(i) = tmp
som kan skrives som VB subrutine (som jobber på originalen):
Sub bytt (ByRef a() as Integer, i as Integer, j as Integer)
Dim tmp as Integer = a(j)
a(j) = a(i)
a(i) = tmp
End Sub
En tabell boblesorteres med prosedyren (der dere i grupper på to fant ut de tre
grønne biter av koden):
Sub sorter (ByRef a() As Integer)
For i As Integer = a.getUpperBound(0)-1 To 0 Step -1
For j As Integer = 0 to i
If a(j) > a(j+1) Then
Bytt (a, j, j+1)
End If
Next
Next
End Sub
Denne arbeider direkte på original (ByVal), og gjør samme arbeidet som s. 359 (men koden er skrevet noe annerledes). Fordelen med at denne er generell subrutine er (s. 132) at koden skrives ETT STED (blir ekspert) og kan gjenbrukes. De siste 15 minutt arbeidet gruppene med en reverseringsprosedyre, som f.eks. den under:
Sub reverser (ByRef a() as Integer)
Dim n as Integer = a.GetUpperBound(0)
For i as Integer = 0 to n/2
Bytt (a, i, n-i)
Next
End Sub
Ingen kommentarer:
Legg inn en kommentar