fredag 28. september 2007

Fredag 28/9: Bytting, sortering og reversering

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: