Man leser kap. 4.3 og laget f(x)
Function f (ByVal x As Double) As Double
Return ( 2*x + x^2 ) / 3 * Math.sqrt (x)
End Function
og en "klient" som bruker f(.) setter s til 4.0 og t ved bruk av f().
Dim s as Double = 4.0
Dim t as Double = f(s)
Den sekvensielt arbeidende f() vil jobbe etter presedens og fra venstre mot høyre:
- første parantes (fra venstre):
- første (og eneste) potensiering (fra venstre): 4.0^2 blir 16.0
- første (og eneste) mult. el. div. (fra venstre): 2*4.0 blir 8.0
- første (og eneste) pluss el. minus (fra venstre): 8.0 + 16.0 blir 24.0
- første mult. el. div. (fra venstre): 24.0 / 3 gir 8.0
- neste mult. el. div.: 8.0 * Math.sqrt(4.0)
- Math.sqrt(4.0) blir (via funksjonen) 2.0
- 8.0 * 2.0 gir 16.0
- funksjonen returnerer 16.0
Klienten setter så sin variabel t til 16.0. Verdien av s er fremdeles 4.0.
Forskjell mellom ByVal og ByRef er at ByVal gir funksjonen en KOPI av originalen.
ByRef gir derimot originalen (en peker dit), som gir funksjonen mulighet til å ENDRE originalen. Fordel med ByRef: Sparer tid og plass hvis parametrene er store (gigabyte med data som skal kopieres hvis en brukte ByVal). Ulempen med ByRef er at klienten risikerer at originalen endres.
I lab arbeidet man med 4.3
Ingen kommentarer:
Legg inn en kommentar