Mehrwertige Bedingungsprüfung (case-Anweisung)

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)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert