mandag 22. oktober 2007

Mandag 22/10: Todimensjonalitet og potensregning

Vi gjenopplevde kap. 7.5 om 2D-tabeller, dvelte ved ReDim (r,s) der Preserve er greit hvis det kun er endring av siste dimensjon (antall kolonner). Mønsteret for 2D-traversering ble brukt i gruppearbeidene (s. 384, #1 til 5):
 For i = 0 to a.GetUpperBound(0)
    For j = 0 to a.GetUpperBound(1)
       ' gjør noe med a(i,j)
    Next
  Next
9 av 10 programmeringsmiljø har potensfunksjon. Mangler vi (mot all formodning) funksjonen potens(x,n) lager vi den ITERATIVT (trenger "n" antall multiplikasjoner)
  fun potens (x, n) as integer
    produkt = 1
    for i = 1 to n 
       produkt *= x
    next
    return produkt
  end fun
eller REKURSIVT (hvert kall halverer antall multiplikasjoner):
  fun potens (x, n) as integer
    if n = 1 then
       return x
    end if
    if isPartall (n) then
       r = potens (x, n/2)
       return r*r
    else
       r = potens (x, (n-1) / 2)
       return r * r * x
    end if
  end fun

Ingen kommentarer: