CASE

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

Den grundlæggende syntax for CASE er:

CASE expr OF
  cexpr1[, cexpr1a...] “:” statement
  [ cexpr2 “:” statement ]
  ...
  [ OTHERWISE statement ]
END CASE

expr er en variabel der vurderes op mod hver cexpr der er i listen. Hvis der findes et match, så udføres den sætning (statement) der er til højre for den matchende cexpr. Hvis der ikke findes match, så udføres sætningen efter OTHERWISE. Hvis der ikke er en OTHERWISE, så fortsætter man bare efter END CASE.

Opførslen hvis der ikke findes noget der matcher er fuldstændig kontrolleret, i modsætning til Pascal.

Forskelligt fra C så er der ikke en break. Efter en sætning (statement) er udført, så fortsætter programkørslen efter END CASE

expr skal kunne vurderes til en unik værdi, og må ikke skifte under case-udførslen.

Eksempel på CASE

Dette er blot et simpelt eksempel, der illustrerer den grundlæggende ide

  var byte tal = 3
  CASE tal OF
    1 : LED1 = high
    2 : LED2 = high
    3 : LED3 = high
    4 : LED4 = high
    OTHERWISE LED5 = high
  END CASE

Den begrænsning at man kun kan have en sætning i hver case-udfald kan man komme ud over ved at bruge BLOCK syntaksen, som illustreret i følgende eksempel:


  var byte tal = 3
  CASE tal OF
    1 : BLOCK
          LED1 = high
          LED2 = low
          LED3 = low
          LED4 = low
          LED5 = low
        END BLOCK
    2 : BLOCK
          LED1 = low
          LED2 = high
          LED3 = low
          LED4 = low
          LED5 = low
        END BLOCK
    3 : BLOCK
          LED1 = low
          LED2 = low
          LED3 = high
          LED4 = low
          LED5 = low
        END BLOCK
    4 : BLOCK
          LED1 = low
          LED2 = low
          LED3 = low
          LED4 = high
          LED5 = low
        END BLOCK
    OTHERWISE BLOCK
          LED1 = low
          LED2 = low
          LED3 = low
          LED4 = low
          LED5 = high
        END BLOCK
  END CASE