Mehrzweigige Prüfung mit einem einzigen Ausdruck
Wenn Sie abhängig von unterschiedlichen Werten desselben Ausdrucks verschiedene Logiken ausführen müssen, ist die Anweisung case .. of .. end hervorragend geeignet.
case SomeValue of
0: DoSomething;
1: DoSomethingElse;
2: begin
IfItsTwoThenDoThis;
AndAlsoDoThis;
end;
3..10: DoSomethingInCaseItsInThisRange;
11, 21, 31: AndDoSomethingForTheseSpecialValues;
else
DoSomethingInCaseOfUnexpectedValue;
end;Code-Sprache: JavaScript (javascript)
Der else-Zweig ist optional und entspricht dem Schlüsselwort default innerhalb der switch-Anweisung von C-ähnlichen Sprachen.
Wenn kein Zweig passt und kein else angegeben wurde, wird keinerlei Code ausgeführt.
Wenn Sie mit C-Sprachen vertraut sind und mit der switch-Anweisung vergleichen, stellen Sie fest, dass Pascals case keinen automatischen Fallthrough (Durchlauf) hat. Das ist ein bewusst entworfener Vorteil von Pascal. Sie brauchen keine manuellen break-Anweisungen; es wird höchstens ein einziger Case-Zweig ausgeführt, danach wird der gesamte Case-Block sofort verlassen.
5 gültige Schreibweisen für Wertzuordnungen
case num of
5: Writeln('Gleich 5'); // Einzelwert
1,3,5: Writeln('Passt zu 1, 3 oder 5'); // Mehrere Werte durch Komma getrennt
10..20: Writeln('Bereich von 10 bis 20'); // Stetiger Zahlenbereich
'a'..'z': Writeln('Kleinbuchstaben'); // Zeichenbereiche werden ebenfalls unterstützt
else
Writeln('Kein passender Wert');
end;Code-Sprache: JavaScript (javascript)
Mehrzeilige Zweige müssen mit begin..end umschlossen werden
case n of
2: begin
Writeln('Zweig 2');
Writeln('Mehrere Code-Zeilen ausführen');
end;
end;Code-Sprache: JavaScript (javascript)
Das folgende Beispiel nimmt eine ASCII-Zahl zwischen 1 und 128 entgegen und klassifiziert das zugehörige ASCII-Zeichen anhand des Eingabewerts.
{$ifdef FPC} {$mode objfpc} {$H+} {$endif}
{$codepage utf8}
program AsciiJudge;
// Eingekapselte Prozedur: Übergeben eines ASCII-Codes 0-128 zur Klassifizierung
procedure JudgeAsciiCode(code: Integer);
begin
case code of
// 1. Einzelwertabgleich + mehrzeilig mit begin end (Enter ASCII=13)
13: begin
Writeln('======== Spezielle Enter-Taste ========');
Writeln('ASCII-Code: 13 Wagenrücklauf Steuerzeichen');
Writeln('========================================');
end;
// 2. Mehrere diskrete Werte mit Komma: alle üblichen Steuerzeichen 0-12, 14-31
0,1,2,3,4,5,6,7,8,9,10,11,12,14,15..31:
Writeln('Typ: Steuerzeichen');
// 3. Bereichsabgleich: Ziffern 0~9 ASCII 48~57
48..57: Writeln('Typ: Ziffern 0-9');
// Bereich: Großbuchstaben A-Z
65..90: Writeln('Typ: Großbuchstaben A-Z');
// Bereich: Kleinbuchstaben a-z
97..122: Writeln('Typ: Kleinbuchstaben a-z');
// 4. else-Standardzweig + mehrzeilig mit begin end (Satzzeichen / Symbole)
else
begin
Writeln('Typ: Satzzeichen / Symbol');
Writeln('Eingegebener ASCII-Code: ', code);
end;
end;
end;
var
asciiNum: Integer;
begin
Write('Geben Sie eine ASCII-Zahl zwischen 0 und 128 ein: ');
ReadLn(asciiNum);
// Eingabebereich begrenzen
if (asciiNum >= 0) and (asciiNum <= 128) then
JudgeAsciiCode(asciiNum)
else
Writeln('Eingabe außerhalb des Bereichs 0~128, ungültig!');
ReadLn;
end.Code-Sprache: PHP (php)
Weitere Informationen zu ASCII-Codes finden Sie in folgendem Artikel: ASCII table – Table of ASCII codes, characters and symbols
Mehrwertige Bedingungsprüfung (case-Anweisung)