Elágazások

From Apache OpenOffice Wiki
Jump to: navigation, search
Book.png

Az elágazási utasításokkal egy kódrészlet végrehajtását egy adott feltételtől tehetjük függővé.

If...Then...Else

A legegyszerűbb elágazási utasítás az If utasítás, ahogy az a következő példában is látható:

If A > 3 Then
  B = 2
End If

A B = 2 értékadás csak akkor történik meg, ha az A változó értéke nagyobb háromnál. Az If utasítás egyik változata az If/Else utasítás:

If A > 3 Then
  B = 2
Else 
  B = 0
End If

Ebben a példában B értéke akkor lesz 2, ha A értéke nagyobb 3-nál, egyébként B értéke 0 lesz.

Létrehozhatunk bonyolultabb feltételeket is az If utasítások egymásba ágyazásával:

If A = 0 Then
  B = 0
ElseIf A < 3 Then
  B = 1
Else 
  B = 2
End If

Ha A értéke 0, akkor B értéke 0 lesz. Ha A értéke kisebb háromnál (de nem egyenlő 0-val), akkor B értéke 1 lesz. Minden egyéb helyzetben (azaz, ha A nagyobb 3-nál vagy egyenlő azzal), B értéke 2 lesz.

Select...Case

A Select...Case utasítás az egymásba ágyazott If utasítások alternatívája, és akkor érdemes használni, ha egy változó értékét több feltétellel kell ellenőrizni:

Select Case Nap
  Case 1:
    NapNeve = "Vasárnap"
  Case 2: 
    NapNeve = "Hétfő"
  Case 3: 
    NapNeve = "Kedd"
  Case 4:
    NapNeve = "Szerda"
  Case 5:
    NapNeve = "Csütörtök"
  Case 6:
    NapNeve = "Péntek"
  Case 7:
    NapNeve = "Szombat"
End Select

Ebben a példában a hét napját egy szám jelöli, így a NapNeve változó értéke Vasárnap lesz, ha a változó 1, Hétfő, ha 2 stb.

A Select parancs nem csak az 1:1 értékadásoknál használható – a Case feltételben megadhatunk összehasonlító operátorokat vagy kifejezéslistákat is. A következő példa bemutatja a legfontosabb változatokat:

Select Case Valtozo
  Case 1 To 5                   
    ' ... A Valtozo értéke 1 és 5 között lehet (beleértve az 1 és 5 értékeket is).
  Case > 100
    ' ... A Valtozo nagyobb, mint 100.
  Case 6, 7, 8                  
    ' ... A Valtozo értéke 6, 7 vagy 8.
  Case 6, 7, 8, > 15, < 0
    ' ... A Valtozo értéke 6, 7, 8, nagyobb, mint 15 vagy kisebb, mint 0.
  Case Else
    ' ... Minden más eset
End Select

Nézzünk meg egy félrevezető (bonyolult) példát, ami egy gyakran elkövetett hibát mutat be:

Select Case Valtozo
  Case Valtozo = 8
    ' ... A Valtozo értéke 0.
  Case Else
    ' ... Minden más eset
End Select

A (Valtozo = 8) kifejezés TRUE (Igaz) lesz, ha a Valtozo értéke 8, különben FALSE (Hamis). A TRUE értéke -1, a FALSE értéke 0. A Select Case utasítás kiértékeli a kifejezést, amely TRUE vagy FALSE lesz, majd ezt az értéket hasonlítja össze a Valtozo értékével. Ha a Valtozo értéke 0, akkor a feltétel teljesül. Ha megértettünk az előbbi példát, akkor azt is érteni fogjuk, hogy ez a példaprogram miért nem azt csinálja, amit ránézésre várnánk tőle:

Select Case Valtozo
  Case Valtozo > 8 And Valtozo < 11
    ' ... A Valtozo értéke 0.
  Case Else
    ' ... Minden más eset
End Select


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