Flytkontroll
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. Testen kan utvides med ElseIf (så mange en vil)
If inntekt < 200000 Then skatteProsent = 0.2 ElseIf inntekt < 300000 Then skatteProsent = 0.25 Else skatteProsent = 0.3 End If
Mer kompakt kode er mulig:
If alder < 18 Then barneTrygd = True
Med Select...Case har man litt annen måte å styre kjøringen. 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
En kan også angi operatorer og lister for å gi verdirom:
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). |