Difference between revisions of "NO/Documentation/BASIC Guide/Branching"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Created page with '{{DISPLAYTITLE:Flytkontroll}} {{NO/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=NO/Documentation/BASIC Guide/Operators |NextPage=NO/Documentat…')
 
 
Line 27: Line 27:
 
</source>
 
</source>
 
Resultatet blir det samme.
 
Resultatet blir det samme.
Testen kan utvides med ElseIf (så mange en vil)
+
Mer kompakt kode er mulig:
 +
<source lang="oobas">
 +
If alder < 18 Then barneTrygd = True
 +
</source>
 +
 
 +
Hvis en har flere enn to mulige blokker brukes
 +
ElseIf, så mange en vil:
 
<source lang="oobas">
 
<source lang="oobas">
 
If inntekt < 200000 Then
 
If inntekt < 200000 Then
Line 33: Line 39:
 
ElseIf inntekt < 300000 Then
 
ElseIf inntekt < 300000 Then
 
   skatteProsent = 0.25
 
   skatteProsent = 0.25
Else  
+
ElseIf inntekt < 400000 Then
   skatteProsent = 0.3
+
  skatteProsent = 0.31
 +
Else
 +
   skatteProsent = 0.39
 
End If
 
End If
 
</source>
 
</source>
Mer kompakt kode er mulig:
+
Noen foretrekker her bruk av Select:
 
<source lang="oobas">
 
<source lang="oobas">
If alder < 18 Then barneTrygd = True
+
Select Case inntekt
 +
  Case < 200000:
 +
    skatteProsent = 0.2
 +
  Case < 300000:
 +
    skatteProsent = 0.25
 +
  Case < 400000
 +
    skatteProsent = 0.31
 +
  Else
 +
    skatteProsent = 0.39
 +
End Select
 
</source>
 
</source>
  
Med <tt>Select...Case</tt> har man litt annen måte å styre kjøringen.
 
 
Resultatet av et uttrykk (Case-variabelen) blir sjekket mot en rekke
 
Resultatet av et uttrykk (Case-variabelen) blir sjekket mot en rekke
 
ulike verdier og verdirom.  Første treff blir så utført, eventuelt
 
ulike verdier og verdirom.  Første treff blir så utført, eventuelt
 
hvis ingen treff, blir intet utført.
 
hvis ingen treff, blir intet utført.
 
 
<source lang="oobas">
 
<source lang="oobas">
 
Select Case weekDay
 
Select Case weekDay
Line 65: Line 80:
 
End Select
 
End Select
 
</source>
 
</source>
En kan også angi operatorer og lister for å gi verdirom:
+
Mere komplekse verdirom angis med operatorer og lister:
 
<source lang="oobas">
 
<source lang="oobas">
 
Select Case antallVarer
 
Select Case antallVarer

Latest revision as of 04:42, 15 December 2009

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