Case korraldus (valikulause)

Sü:ntaks: 

Konstandid, mida kasutatakse erinevates case osades peavad olema kompileerimise ajaks teada ja nad võivad kuuluda jä:rgmistesse tü:ü:pidesse : loendur (enumeration), jä:rgarvud (Ordinal) v.a tõevä:ä:rtus (boolean) ja sü:mbolid (chars). Avaldis peab ka kuuluma samasse tü:ü:pi, vastasel korral annab kompilaator veateate. Kõik case konstandid peavad olema sama tü:ü:pi. Kompilaator hindab avaldist. Kui ü:ks case konstantidest vastab avaldisele, siis tä:idetakse sellele konstandile jä:rgnevad korraldused. Peale seda programm jä:tkub end korraldusele jä:rgnevalt realt. Kui ü:kski case konstantidest ei vasta avaldise vä:ä:rtustele siis tä:idetakse korraldused, mis jä:rgnevad else võtmesõnale. See võib olla tü:hi korraldus. 

Kui else osa puudub ja ü:kski case konstant ei vasta avaldise vä:ä:rtusele siis jä:tkatakse programmi tä:itmist end korraldusele jä:rgnevalt realt. Case korraldus võib olla liitkorraldus (s.t. begin..End blokk). 
ä:ä:remä:rkus: Erinevalt Turbo Pascal’ist, ei ole lubatud korduvad case mä:rgendid Free Pascal’is, seega jä:rgnev kood põhjustab kompileerimisel veateate: 

Var i : integer; 

... 

Case i of 

3 : TeeMidagi; 

1..5 : TeeMidagiMuud; 

end;

 Kompilaator genereerib vea Duplicate case label error, kuna ka 3 kuulub vahemikku 1..5. See on sarnane Delphi sü:ntaksile. Jä:rgmine nä:ide on korrektne case korraldus: 

 

Case C of 

'a' : WriteLn ('vajutati A'); 

'b' : WriteLn (' vajutati B'); 

'c' : WriteLn (' vajutati C'); 

else 

WriteLn (' vajutati tundmatut tä:hte : ',C); 

end;

 

Kasutusnä:ide:

 

Case C of 

'a','e','i','o','u' : WriteLn ('vajutati tä:ishä:ä:likuklahvi'); 

'y' : WriteLn ('See, kas on või ei ole sõltub konkreetsest keelest'); 

else 

WriteLn ('vajutati kaashä:ä:likuklahvi'); 

end;

 

Veel ü:ks vä:ike nä:ide:

 

Case Number of 

1..10 : WriteLn ('Vä:ike arv'); 

11..100 : WriteLn ('normaalne, keskmine arvr'); 

else WriteLn ('Suur arv'); 

end;