User manual
RP6 ROBOT SYSTEM - 4. Programmierung des RP6
4.4.6. Switch-Case
Oft muss man eine Variable auf viele verschiedene Zahlenwerte überprüfen und ab-
hängig davon Programmcode ausführen. Das kann man natürlich wie oben beschrie-
ben mit vielen if-then-else Bedingungen machen, aber es geht auch eleganter mit ei-
ner switch-Verzweigung.
Ein Beispiel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uint8_t x = 3;
switch(x)
{
case 1: writeString("x=1\n"); break;
case 2: writeString("x=2\n"); break;
case 3: writeString("x=3\n"); // Hier fehlt das "break", also fährt
case 4: writeString("Hallo\n"); // das Programm direkt mit dem
case 5: writeString("du\n"); // nächsten und dem nächsten Fall fort,
case 6: writeString("da!\n"); break; // und stoppt erst hier!
case 44: writeString("x=44\n"); break;
// Hier gelangt das Programm hin, wenn keiner der obigen
// Fälle gepasst hat:
default : writeString("x ist was anderes!\n"); break;
}
Das ist vom Resultat her ähnlich zu dem Beispiel auf der vorherigen Seite mit „if-else-
if-else-if-else...“, nur eine andere Schreibweise.
Die Ausgabe wäre in diesem Fall (mit x = 3):
x=3
Hallo
du
da!
Wenn man x = 1 setzen würde, wäre die Ausgabe „x=1\n“ und mit x=5 wäre die
Ausgabe:
du
da!
Hier sieht man, dass das „break“ die Switch-Verzweigung beendet. Lässt man es weg,
läuft das Programm einfach solange durch alle anderen Fälle durch bis entweder das
Ende der switch-Verzweigung erreicht ist oder ein anderes „break“ ausgeführt wird.
Dabei ist es egal ob die nachfolgenden Bedingungen erfüllt werden oder nicht!
Wenn x = 7 gesetzt wird, würde keiner der Fälle diesen Wert abdecken, das Pro-
gramm im default Teil landen und die Ausgabe wäre: „x ist was anderes!\n“.
Diese ganzen Textausgaben sind natürlich nur Beispiele – man könnte in realen Pro-
grammen für den Roboter damit z.B. verschiedene Bewegungsmuster auslösen. In ei-
nigen Anwendungsbeispielen werden switch-case Konstrukte z.B. für endliche Auto-
maten verwendet um verschiedene Verhalten des Roboters zu implementieren.
- 71 -