Flytkontroll

From Apache OpenOffice Wiki
Jump to: navigation, search

Programmet deles inn i kodeblokker. For å styre interpreteren til rett blokk brukes logiske tester som gir boolsk resultat (True eller False). I det enkle eksempel:

barneTrygd = False
If alder < 18 Then
  barneTrygd = True
End If

vil barneTrygd kun bli sann hvis alder er under 18. Det kunne vært formulert slik:

If alder < 18 Then
  barneTrygd = True
Else
  barneTrygd = False
End If

Resultatet blir det samme. Mer kompakt kode er mulig:

If alder < 18 Then barneTrygd = True

Hvis en har flere enn to mulige blokker brukes ElseIf, så mange en vil:

If inntekt < 200000 Then
  skatteProsent = 0.2
ElseIf inntekt < 300000 Then
  skatteProsent = 0.25
ElseIf inntekt < 400000 Then 
  skatteProsent = 0.31
Else
  skatteProsent = 0.39
End If

Noen foretrekker her bruk av Select:

Select Case inntekt
  Case < 200000:
    skatteProsent = 0.2
  Case < 300000:
    skatteProsent = 0.25
  Case < 400000
    skatteProsent = 0.31
  Else
    skatteProsent = 0.39
End Select

Resultatet av et uttrykk (Case-variabelen) blir sjekket mot en rekke ulike verdier og verdirom. Første treff blir så utført, eventuelt hvis ingen treff, blir intet utført.

Select Case weekDay
  Case 1:
    NameOfWeekday = "Sunday"
  Case 2: 
    NameOfWeekday = "Monday"
  Case 3: 
    NameOfWeekday = "Tuesday"
  Case 4:
    NameOfWeekday = "Wednesday"
  Case 5:
    NameOfWeekday = "Thursday"
  Case 6:
    NameOfWeekday = "Friday"
  Case 7:
    NameOfWeekday = "Saturday"
End Select

Mere komplekse verdirom angis med operatorer og lister:

Select Case antallVarer
  Case 1 To 5                   
    ' ... verdiene 1, 2, 3, 4 og 5
  Case > 100
    ' ... verdier over (ikke inkludert) 100
  Case 6, 7, 8                  
    ' ... verdiene 6, 7 eller 8
  Case 6, 7, 8, > 15, < 0
    ' ... verdiene 6, 7 og 8, samt alt under 0 og alt over 15.
  Case Else
    ' ... hvis ingen treff over kan (valgfritt) Else angis
End Select

Eksempel på feil og typeblanding er hvis en angir et logisk uttrykk som testverdi:

Select Case alder
  Case alder = 8
    ' ... utføres bare hvis alder er lik (alder = 8)
  Case Else
    ' ... all other instances
End Select

Her blir "alder" sammenlignet med "alder = 8", som er boolsk. "alder = 8" er True hvis "alder" er 8, False ellers. Når "alder" sammenlignes med boolsk blir True omgjort til -1 og False til 0. Derfor sammenlignes "alder" med 0 eller -1.


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools