Switch … Case – Welche Taste wurde gedrückt?

Bevor du mit dem Sketch für das Stimmungslicht loslegst, lernst du noch ein weiteres C++ Feature kenne, das dir dabei hilft, eine lange Kette von bedingten Anweisungen effizienter und übersichtlicher zu gestalten: switch … case.

Grundsätzlich haben die If-Abfragen und switch … case das gleiche Ziel: Sie fragen einen Zustand oder eine Bedingung ab und führen einen individuellen Code aus. Im Fall von switch … case fragst du den Inhalt einer Variablen ab und führst je nachdem, was in der Variablen steckt, einen entsprechenden Code aus. Der Aufbau sieht hierbei wie folgt aus:

switch (var) {
  case 1:
    // Mache dies, wenn "var" 1 ist.
    break;
  case 2:
    // Mache dies, wenn "var" 2 ist.
    break;
  default:
    // Mache dies im Default-Fall
    // Dieser Fall ist optional
    break;
}

Zunächst leitest du mit switch (var) { ein. In Klammern steht hierbei die Variable, auf deren Inhalt du gleich danach mit case reagierst. Steckt in der Variablen also z.B. der Wert 1, wird nur der Code ausgeführt, der hinter case 1: steht. Nach dem Code, der in diesem Fall ausgeführt werden soll, folgt der Befehl break, mit dem switch … case wieder verlassen wird und das Programm weiter ausgeführt wird.

___STEADY_PAYWALL___

case 1:
    Serial.println("Der Wert ist 1");
    break;

Der Default-Fall

Du kennst ja von bedingten Anweisungen mit if die Anweisung else: Ein Sammelbecken für alle Fälle, die du nicht eigens abgefangen hast. So funktioniert auch default:

Hier kannst du Code unterbringen, der ausgeführt werden soll, wenn kein passender case gefunden wurde. Das ist jedoch optional – wenn im Beispiel oben also der Wert 3 in der Variablen var stecken würde, könnte dein Sketch keinen entsprechenden case finden und switch … case einfach verlassen und mit dem Programm weitermachen.

In der nächsten Lektion gehst du in die Praxis über. Du fragst per switch … case die Tasten deiner Fernbedienung ab und schaltest je nachdem welche Taste gedrückt wurde, die Lichtfarbe um.

Hast du Fragen?

Schreibe uns an info@polluxlabs.net